def test_register(self, mock_post): clientId = '0' * 96 clientSecret = '0' * 71 client = Client(clientId, clientSecret) # provide token for building header client.token = "correctToken" # manipulate request.post's result mock_response = mock.Mock() mock_response.status_code = 200 mock_response.json.return_value = { "clientID": "test_clientID", "clientSecret": "test_clientSecret" } mock_post.return_value = mock_response # validate result expected_clientID = 'test_clientID' expected_clientSecret = 'test_clientSecret' url = Client.base_URL + 'apps/register' header = {'Authorization': 'Bearer correctToken'} data = {'owner': 'testowner', 'permissionLevel': 'user'} resultID, resultSecret = client.register('testowner') mock_post.assert_called_once_with(url, headers=header, data=data) self.assertEqual(resultID, expected_clientID) self.assertEqual(resultSecret, expected_clientSecret) self.assertEqual(2, mock_response.json.call_count)
def test_register_internal_error(self, mock_post): clientId = '0' * 96 clientSecret = '0' * 71 client = Client(clientId, clientSecret) # provide token for building header client.token = "correctToken" # manipulate request.post's result mock_response = mock.Mock() mock_response.status_code = 500 mock_post.return_value = mock_response # validate result url = Client.base_URL + 'apps/register' data = {'owner': 'testowner', 'permissionLevel': 'user'} header = {'Authorization': 'Bearer correctToken'} with self.assertRaises(InternalError): client.register('testowner') mock_post.assert_called_once_with(url, headers=header, data=data) self.assertEqual(0, mock_response.json.call_count)
def test_register_no_owner(self, mock_post): clientId = '0' * 96 clientSecret = '0' * 71 client = Client(clientId, clientSecret) client.token = "correctToken" # set request.post's result mock_response = mock.Mock() mock_response.status_code = 422 mock_response.json.return_value = { "message": "Must include the owner's username" } mock_post.return_value = mock_response # validate result url = Client.base_URL + 'apps/register' data = {'owner': 'testowner', 'permissionLevel': 'user'} header = {'Authorization': 'Bearer correctToken'} with self.assertRaises(FormatError): client.register('testowner') mock_post.assert_called_once_with(url, headers=header, data=data) self.assertEqual(1, mock_response.json.call_count)
def test_register_expired_token_failure(self, mock_get, mock_post): clientId = '0' * 96 clientSecret = '0' * 71 client = Client(clientId, clientSecret) client.token = 'ExpiredToken' # set first request.post's result mock_response = mock.Mock() mock_response.status_code = 401 mock_response.json.return_value = { 'message': 'Token expired', } mock_post.return_value = mock_response # set request_token()'s result mock_get_response = mock.Mock() mock_get_response.status_code = 200 mock_get_response.json.return_value = {'token': 'newToken'} mock_get.return_value = mock_get_response # run the test with self.assertRaises(AuthenticationError): client.register('testowner') mock_get.assert_called_with(self.base_URL + 'auth/?clientID=' + clientId + '&clientSecret=' + clientSecret) self.assertEqual(3, mock_post.call_count) self.assertEqual(2, mock_get.call_count) headers = {'Authorization': 'Bearer ExpiredToken'} newheaders = {'Authorization': 'Bearer newToken'} data = {'owner': 'testowner', 'permissionLevel': 'user'} call_list = [ mock.call(self.base_URL + 'apps/register', headers=headers, data=data), mock.call(self.base_URL + 'apps/register', headers=newheaders, data=data), mock.call(self.base_URL + 'apps/register', headers=newheaders, data=data) ] self.assertEqual(mock_post.call_args_list, call_list)
def test_register_expired_token_success(self, mock_get, mock_post): clientId = '0' * 96 clientSecret = '0' * 71 client = Client(clientId, clientSecret) client.token = 'ExpiredToken' # set first request.post's result mock_response = mock.Mock() mock_response.status_code = 401 mock_response.json.return_value = { 'message': 'Token expired', } # set second request.post's result mock_response2 = mock.Mock() mock_response2.status_code = 200 mock_response2.json.return_value = { 'clientID': 'test_clientID', 'clientSecret': 'test_clientSecret' } mock_post.side_effect = [mock_response, mock_response2] # set request_token()'s result mock_get_response = mock.Mock() mock_get_response.status_code = 200 mock_get_response.json.return_value = {'token': 'newToken'} mock_get.return_value = mock_get_response # run the test resultID, resultSecret = client.register('testowner') self.assertEqual(resultID, 'test_clientID') self.assertEqual(resultSecret, 'test_clientSecret') mock_get.assert_called_with(self.base_URL + 'auth/?clientID=' + clientId + '&clientSecret=' + clientSecret) headers = {'Authorization': 'Bearer ExpiredToken'} newheaders = {'Authorization': 'Bearer newToken'} data = {'owner': 'testowner', 'permissionLevel': 'user'} call_list = [ mock.call(self.base_URL + 'apps/register', headers=headers, data=data), mock.call(self.base_URL + 'apps/register', headers=newheaders, data=data) ] self.assertEqual(mock_post.call_args_list, call_list)