@@ -129,9 +129,12 @@ public function testCheckResponse()
129129 }
130130
131131 /**
132+ * @param array $error The error response to parse
133+ * @param array $extraOptions Any extra options to configure the generic provider with.
134+ * @dataProvider checkResponseThrowsExceptionProvider
132135 * @expectedException League\Oauth2\Client\Provider\Exception\IdentityProviderException
133136 */
134- public function testCheckResponseThrowsException ()
137+ public function testCheckResponseThrowsException (array $ error , array $ extraOptions = [] )
135138 {
136139 $ response = Phony::mock (ResponseInterface::class);
137140
@@ -141,15 +144,25 @@ public function testCheckResponseThrowsException()
141144 'urlResourceOwnerDetails ' => 'http://example.com/user ' ,
142145 ];
143146
144- $ provider = new GenericProvider ($ options );
147+ $ provider = new GenericProvider ($ options + $ extraOptions );
145148
146149 $ reflection = new \ReflectionClass (get_class ($ provider ));
147150
148151 $ checkResponse = $ reflection ->getMethod ('checkResponse ' );
149152 $ checkResponse ->setAccessible (true );
150153
151- $ checkResponse ->invokeArgs ($ provider , [$ response ->get (), [
152- 'error ' => 'foobar ' ,
153- ]]);
154+ $ checkResponse ->invokeArgs ($ provider , [$ response ->get (), $ error ]);
155+ }
156+
157+ public function checkResponseThrowsExceptionProvider () {
158+ return [
159+ [['error ' => 'foobar ' ,]],
160+ [['error ' => 'foobar ' ,] , ['responseCode ' => 'code ' ]],
161+ // Some servers return non-compliant responses. Provider shouldn't 'Fatal error: Wrong parameters'
162+ [['error ' => 'foobar ' , 'code ' => 'abc55 ' ], ['responseCode ' => 'code ' ]],
163+ [['error ' => 'foobar ' , 'code ' => ['badformat ' ]], ['responseCode ' => 'code ' ]],
164+ [['error ' => ['message ' => 'msg ' , 'code ' => 56 ]]],
165+ [['error ' => ['errors ' => ['code ' => 67 , 'message ' => 'msg ' ]]]],
166+ ];
154167 }
155168}
0 commit comments