def test_get_usage_by_client_internal_error(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = "correctToken"
     mock_response = mock.Mock()
     mock_response.status_code = 500
     mock_get.return_value = mock_response
     url = Client.base_URL + 'apps/1/usage'
     param = {'owner': 'testowner'}
     headers = {'Authorization': 'Bearer correctToken'}
     with self.assertRaises(InternalError):
         client.usage_by_client('1', 'testowner')
     mock_get.assert_called_once_with(url, headers=headers, params=param)
     self.assertEqual(0, mock_response.json.call_count)
 def test_get_usage_by_client_expired_token_success(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = "ExpiredToken"
     mock_response = mock.Mock()
     mock_response.status_code = 401
     mock_response.json.return_value = {'message': 'Token expired'}
     mock_response1 = mock.Mock()
     mock_response1.status_code = 200
     mock_response1.json.return_value = {'token': 'newToken'}
     mock_response2 = mock.Mock()
     mock_response2.status_code = 200
     mock_response2.json.return_value = {'api_usage': 1}
     mock_get.side_effect = [mock_response, mock_response1, mock_response2]
     self.assertEqual(1, client.usage_by_client('1', 'testowner'))
     self.assertEqual(3, mock_get.call_count)
     headers = {'Authorization': 'Bearer ExpiredToken'}
     newheaders = {'Authorization': 'Bearer newToken'}
     params = {'owner': 'testowner'}
     call_list = [
         mock.call(self.base_URL + 'apps/1/usage',
                   headers=headers,
                   params=params),
         mock.call(self.base_URL + 'auth/?clientID=' + clientId +
                   '&clientSecret=' + clientSecret),
         mock.call(self.base_URL + 'apps/1/usage',
                   headers=newheaders,
                   params=params)
     ]
     self.assertEqual(mock_get.call_args_list, call_list)
 def test_get_usage_by_client_id_not_found(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = "correctToken"
     mock_response = mock.Mock()
     mock_response.status_code = 404
     mock_response.json.return_value = {
         'message': 'No app exists with given clientID'
     }
     mock_get.return_value = mock_response
     url = Client.base_URL + 'apps/1/usage'
     param = {'owner': 'testowner'}
     headers = {'Authorization': 'Bearer correctToken'}
     with self.assertRaises(ResourceNotFoundError):
         client.usage_by_client('1', 'testowner')
     mock_get.assert_called_once_with(url, headers=headers, params=param)
     self.assertEqual(1, mock_response.json.call_count)
 def test_get_usage_by_client_authorization_error(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = "correctToken"
     mock_response = mock.Mock()
     mock_response.status_code = 403
     mock_response.json.return_value = {
         'message': 'Forbidden to view API usage of this client'
     }
     mock_get.return_value = mock_response
     with self.assertRaises(AuthorizationError):
         client.usage_by_client('1', 'testowner')
     url = Client.base_URL + 'apps/1/usage'
     param = {'owner': 'testowner'}
     headers = {'Authorization': 'Bearer correctToken'}
     mock_get.assert_called_once_with(url, headers=headers, params=param)
     self.assertEqual(1, mock_response.json.call_count)
 def test_get_usage_by_clientID_all_correct(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = "correctToken"
     mock_response = mock.Mock()
     mock_response.status_code = 200
     mock_response.json.return_value = {'api_usage': 7}
     mock_get.return_value = mock_response
     url = Client.base_URL + 'apps/1/usage'
     param = {'owner': 'testowner'}
     headers = {'Authorization': 'Bearer correctToken'}
     self.assertEqual(client.usage_by_client('1', 'testowner'), 7)
     mock_get.assert_called_once_with(url, headers=headers, params=param)