class ApiTestCase(APITestCase): def setUp(self): self.fixtures = GenerateFixtures() self.factory = APIRequestFactory() self.client = APIClient() def tearDown(self): self.fixtures.clean_tables() def test_get_all_users(self): # create more Persons self.fixtures.fake_person(facebookId=10999901201, name="Afonso Ramos", username="******", gender="male") self.fixtures.fake_person(facebookId=10788867657, name="Alana Monteiro", username="******", gender="female") response = self.client.get('/api/v1/person/') self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 3 def test_get_partial_users(self): # create more Persons self.fixtures.fake_person(facebookId=10999901201, name="Afonso Ramos", username="******", gender="male") self.fixtures.fake_person(facebookId=10788867657, name="Alana Monteiro", username="******", gender="female") response = self.client.get('/api/v1/person/?limit=2') self.assertEqual(response.status_code, status.HTTP_200_OK) assert len(response.data) == 2 def test_get_user(self): facebookId = '101001010101' response = self.client.get('/api/v1/person/{}/'.format(facebookId)) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data.get('facebookId'), facebookId) def test_get_user_not_found(self): facebookId = '101001010444' response = self.client.get('/api/v1/person/{}/'.format(facebookId)) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) @mock.patch('person.utils.get_facebook_access_token') @mock.patch('person.serializers.get_facebook_user_data') def test_post_valid_facebookId(self, facebook_user_data_mock, access_token_mock): access_token_mock.return_value = "21ghhgv31hjg32j1h3g12" facebook_response = Response() facebook_response.status_code = 200 facebook_response.json = mock.MagicMock(return_value={ "id": "10000076263112", "name": "Arthur Feitosa"}) facebook_response.content_type = "aplication/json" facebook_user_data_mock.return_value = facebook_response data = {'facebookId': '10000076263112'} response = self.client.post('/api/v1/person/', data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) facebook_user_data_mock.assert_called_once_with('10000076263112') def test_post_invalid_facebookId(self): data = {'facebookId': '10000076263112b5f3'} response = self.client.post('/api/v1/person/', data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_post_empty_facebookId(self): response = self.client.post('/api/v1/person/', {}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) @mock.patch('person.utils.get_facebook_access_token') @mock.patch('person.serializers.get_facebook_user_data') def test_post_user_already_registed(self, facebook_user_data_mock, access_token_mock): self.fixtures.fake_person(facebookId=10999901201, name="Afonso Ramos", username="******", gender="male") access_token_mock.return_value = "21ghhgv31hjg32j1h3g12" facebook_response = Response() facebook_response.status_code = 200 facebook_response.json = mock.MagicMock(return_value={ "id": "10999901201", "name": "afonsoramosrb"}) facebook_response.content_type = "aplication/json" facebook_user_data_mock.return_value = facebook_response data = {'facebookId': '10999901201'} with transaction.atomic(): response = self.client.post('/api/v1/person/', data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) @mock.patch('person.utils.get_facebook_access_token') @mock.patch('person.serializers.get_facebook_user_data') def test_post_not_found_facebookId(self, facebook_user_data_mock, access_token_mock): access_token_mock.return_value = "21ghhgv31hjg32j1h3g12" facebook_response = Response() facebook_response.status_code = 400 facebook_response.json = mock.MagicMock(return_value={ "id": "10000076263112", "name": "Arthur Feitosa"}) facebook_response.content_type = "aplication/json" facebook_user_data_mock.return_value = facebook_response data = {'facebookId': '10000076263112'} response = self.client.post('/api/v1/person/', data, format='json') self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) facebook_user_data_mock.assert_called_once_with('10000076263112') def test_delete_user(self): facebookId = '101001010101' response = self.client.delete('/api/v1/person/{}/'.format(facebookId)) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)