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)