@@ -1148,21 +1148,28 @@ def test_get_access_token_with_http(self, expires_in, refresh_mock):
1148
1148
expires_in .assert_called_once_with ()
1149
1149
refresh_mock .assert_called_once_with (http_obj )
1150
1150
1151
+ @mock .patch .object (OAuth2Credentials , '_generate_refresh_request_headers' ,
1152
+ return_value = object ())
1153
+ @mock .patch .object (OAuth2Credentials , '_generate_refresh_request_body' ,
1154
+ return_value = object ())
1151
1155
@mock .patch ('oauth2client.client.logger' )
1152
1156
def _do_refresh_request_test_helper (self , response , content ,
1153
- error_msg , logger , store = None ):
1157
+ error_msg , logger , gen_body ,
1158
+ gen_headers , store = None ):
1154
1159
credentials = OAuth2Credentials (None , None , None , None ,
1155
1160
None , None , None )
1156
1161
credentials .store = store
1157
1162
http_request = mock .Mock ()
1158
1163
http_request .return_value = response , content
1159
1164
1160
- # HttpAccessTokenRefreshError(error_msg, status=resp.status)
1161
1165
with self .assertRaises (HttpAccessTokenRefreshError ) as exc_manager :
1162
1166
credentials ._do_refresh_request (http_request )
1163
1167
1164
1168
self .assertEqual (exc_manager .exception .args , (error_msg ,))
1165
1169
self .assertEqual (exc_manager .exception .status , response .status )
1170
+ http_request .assert_called_once_with (None , body = gen_body .return_value ,
1171
+ headers = gen_headers .return_value ,
1172
+ method = 'POST' )
1166
1173
1167
1174
call1 = mock .call ('Refreshing access_token' )
1168
1175
failure_template = 'Failed to retrieve access token: %s'
@@ -1218,6 +1225,85 @@ def test__do_refresh_request_failure_w_json_error_and_desc(self):
1218
1225
error_msg = '%s: %s' % (base_error , error_desc )
1219
1226
self ._do_refresh_request_test_helper (response , content , error_msg )
1220
1227
1228
+ @mock .patch ('oauth2client.client.logger' )
1229
+ def _do_revoke_test_helper (self , response , content ,
1230
+ error_msg , logger , store = None ):
1231
+ credentials = OAuth2Credentials (None , None , None , None ,
1232
+ None , None , None ,
1233
+ revoke_uri = GOOGLE_REVOKE_URI )
1234
+ credentials .store = store
1235
+ http_request = mock .Mock ()
1236
+ http_request .return_value = response , content
1237
+ token = u's3kr3tz'
1238
+
1239
+ if response .status == http_client .OK :
1240
+ self .assertFalse (credentials .invalid )
1241
+ self .assertIsNone (credentials ._do_revoke (http_request , token ))
1242
+ self .assertTrue (credentials .invalid )
1243
+ if store is not None :
1244
+ store .delete .assert_called_once_with ()
1245
+ else :
1246
+ self .assertFalse (credentials .invalid )
1247
+ with self .assertRaises (TokenRevokeError ) as exc_manager :
1248
+ credentials ._do_revoke (http_request , token )
1249
+ # Make sure invalid was not flipped on.
1250
+ self .assertFalse (credentials .invalid )
1251
+ self .assertEqual (exc_manager .exception .args , (error_msg ,))
1252
+ if store is not None :
1253
+ store .delete .assert_not_called ()
1254
+
1255
+ revoke_uri = GOOGLE_REVOKE_URI + '?token=' + token
1256
+ http_request .assert_called_once_with (revoke_uri )
1257
+
1258
+ logger .info .assert_called_once_with ('Revoking token' )
1259
+
1260
+ def test__do_revoke_success (self ):
1261
+ response = httplib2 .Response ({
1262
+ 'status' : http_client .OK ,
1263
+ })
1264
+ self ._do_revoke_test_helper (response , b'' , None )
1265
+
1266
+ def test__do_revoke_success_with_store (self ):
1267
+ response = httplib2 .Response ({
1268
+ 'status' : http_client .OK ,
1269
+ })
1270
+ store = mock .MagicMock ()
1271
+ self ._do_revoke_test_helper (response , b'' , None , store = store )
1272
+
1273
+ def test__do_revoke_non_json_failure (self ):
1274
+ response = httplib2 .Response ({
1275
+ 'status' : http_client .BAD_REQUEST ,
1276
+ })
1277
+ content = u'Bad request'
1278
+ error_msg = 'Invalid response %s.' % (response .status ,)
1279
+ self ._do_revoke_test_helper (response , content , error_msg )
1280
+
1281
+ def test__do_revoke_basic_failure (self ):
1282
+ response = httplib2 .Response ({
1283
+ 'status' : http_client .INTERNAL_SERVER_ERROR ,
1284
+ })
1285
+ content = u'{}'
1286
+ error_msg = 'Invalid response %s.' % (response .status ,)
1287
+ self ._do_revoke_test_helper (response , content , error_msg )
1288
+
1289
+ def test__do_revoke_failure_w_json_error (self ):
1290
+ response = httplib2 .Response ({
1291
+ 'status' : http_client .BAD_GATEWAY ,
1292
+ })
1293
+ error_msg = 'Hi I am an error not a bearer'
1294
+ content = json .dumps ({'error' : error_msg })
1295
+ self ._do_revoke_test_helper (response , content , error_msg )
1296
+
1297
+ def test__do_revoke_failure_w_json_error_and_store (self ):
1298
+ response = httplib2 .Response ({
1299
+ 'status' : http_client .BAD_GATEWAY ,
1300
+ })
1301
+ error_msg = 'Where are we going wearer?'
1302
+ content = json .dumps ({'error' : error_msg })
1303
+ store = mock .MagicMock ()
1304
+ self ._do_revoke_test_helper (response , content , error_msg ,
1305
+ store = store )
1306
+
1221
1307
def test_has_scopes (self ):
1222
1308
self .assertTrue (self .credentials .has_scopes ('foo' ))
1223
1309
self .assertTrue (self .credentials .has_scopes (['foo' ]))
0 commit comments