@@ -129,9 +129,12 @@ public function testCheckResponse()
129
129
}
130
130
131
131
/**
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
132
135
* @expectedException League\Oauth2\Client\Provider\Exception\IdentityProviderException
133
136
*/
134
- public function testCheckResponseThrowsException ()
137
+ public function testCheckResponseThrowsException (array $ error , array $ extraOptions = [] )
135
138
{
136
139
$ response = Phony::mock (ResponseInterface::class);
137
140
@@ -141,15 +144,25 @@ public function testCheckResponseThrowsException()
141
144
'urlResourceOwnerDetails ' => 'http://example.com/user ' ,
142
145
];
143
146
144
- $ provider = new GenericProvider ($ options );
147
+ $ provider = new GenericProvider ($ options + $ extraOptions );
145
148
146
149
$ reflection = new \ReflectionClass (get_class ($ provider ));
147
150
148
151
$ checkResponse = $ reflection ->getMethod ('checkResponse ' );
149
152
$ checkResponse ->setAccessible (true );
150
153
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
+ ];
154
167
}
155
168
}
0 commit comments