def test_return_200_status_when_track_updated(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) device2 = create_device_with_owner(self.user) response = self.client.put( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', { "name": "new_name", "device": device2.did }) self.assertEqual(HTTP_200_OK, response.status_code)
def test_return_200_status_when_get_track_is_done(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) create_various_track_locations_with_track(track) response = self.client.get('/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/') self.assertEqual(HTTP_200_OK, response.status_code)
def test_return_json_with_track_info_when_get_track_is_done(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) create_various_track_locations_with_track(track) response = self.client.get('/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/') self.assertEqual(TrackSerializer(track).data, response.data)
def test_return_400_status_when_json_body_is_invalid(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {"desc": "this attribute does not exist"}) self.assertEqual(HTTP_400_BAD_REQUEST, response.status_code)
def test_return_200_status_when_track_updated(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {"description": "new description"}) self.assertEqual(HTTP_200_OK, response.status_code)
def test_return_forbidden_status__when_request_user_is_not_owner(self): owner = create_user_with_email(email='*****@*****.**') device = create_device_with_owner(owner=owner) track = create_track_with_device(device=device) response = self.client.delete(path='/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/') self.assertEqual(response.status_code, HTTP_403_FORBIDDEN)
def test_return_json_with_instance_info_when_track_is_updated(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {"name": "new_name"}) track_updated = Track.objects.get(pk=get_latest_id_inserted(Track)) self.assertEqual(TrackSerializer(track_updated).data, response.data)
def test_return_403_status__when_owner_different_than_user_authenticated( self): owner = create_user_with_email(email='*****@*****.**') device = create_device_with_owner(owner=owner) response = self.client.get(path='/devices/' + str(device.did) + '/actualLocation/', format='json') self.assertEqual(response.status_code, HTTP_403_FORBIDDEN)
def test_return_201_status_when_track_location_created(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) json_body = {'point': {'type': 'Point', 'coordinates': [90, 90]}} response = self.client.post( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/locations/', json_body) self.assertEqual(HTTP_201_CREATED, response.status_code)
def test_instance_updated_status_when_track_updated(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {"name": "new_name"}) track_updated = Track.objects.get(pk=get_latest_id_inserted(Track)) self.assertEqual("new_name", track_updated.name)
def test_return_403_status_when_user_has_not_permissions(self): owner = create_user_with_email('owner') device = create_device_with_owner(owner) track = create_track_with_device(device) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {}) self.assertEqual(HTTP_403_FORBIDDEN, response.status_code)
def test_return_no_content_status__when_delete_is_done(self): device = create_device_with_owner(owner=self.user) track = create_track_with_device(device=device) track_location = create_track_location_with_track(track=track) response = self.client.delete( path='/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/locations/' + str(track_location.id) + '/') self.assertEqual(response.status_code, HTTP_204_NO_CONTENT)
def test_instance_exists_when_track_is_created(self): device = create_device_with_owner(self.user) self.client.post('/devices/' + str(device.did) + '/tracks/', { "name": "test_track", "description": "this is a description" }) track = Track.objects.get(pk=get_latest_id_inserted(Track)) self.assertIsNotNone(track)
def test_return_201_status_when_track_is_created(self): device = create_device_with_owner(self.user) response = self.client.post('/devices/' + str(device.did) + '/tracks/', { "name": "test_track", "description": "this is a description" }) self.assertEqual(HTTP_201_CREATED, response.status_code)
def test_return_json_with_instance_info_when_track_is_created(self): device = create_device_with_owner(self.user) response = self.client.post('/devices/' + str(device.did) + '/tracks/', { "name": "test_track", "description": "this is a description" }) track_created = Track.objects.get(pk=get_latest_id_inserted(Track)) self.assertEqual(TrackSerializer(track_created).data, response.data)
def test_instance_exists_status_when_track_location_created(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) json_body = {'point': {'type': 'Point', 'coordinates': [90, 90]}} self.client.post( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/locations/', json_body) track_location = self._get_track_location_by_id( get_latest_id_inserted(TrackLocation)) self.assertIsNotNone(track_location)
def test_return_method_error_message_when_try_to_change_instance_representation( self): device = create_device_with_owner(self.user) track = create_track_with_device(device) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/', {"device": device.did}) self.assertEqual( {'non_field_errors': [DEFAULT_ERROR_MESSAGES['invalid_patch']]}, response.data)
def test_return_json_with_instance_info_status_when_track_location_created( self): device = create_device_with_owner(self.user) track = create_track_with_device(device) json_body = {'point': {'type': 'Point', 'coordinates': [90, 90]}} response = self.client.post( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/locations/', json_body) expected_json = TrackLocationSerializer( self._get_track_location_by_id( get_latest_id_inserted(TrackLocation))).data self.assertEqual(expected_json, response.data)
def test_return_invalid_longitude_error_when_body_has_invalid_longitude( self): device = create_device_with_owner(self.user) track = create_track_with_device(device) json_body = {'point': {'type': 'Point', 'coordinates': [1, 181]}} response = self.client.post( '/devices/' + str(device.did) + '/tracks/' + str(track.tid) + '/locations/', json_body) expected_json = { 'non_field_errors': [DEFAULT_ERROR_MESSAGES['invalid_longitude']] } self.assertEqual(expected_json, response.data)
def test_return_404_status_when_track_not_exists(self): device = create_device_with_owner(self.user) response = self.client.patch( '/devices/' + str(device.did) + '/tracks/100/', {}) self.assertEqual(HTTP_404_NOT_FOUND, response.status_code)
def setUp(self): self.client = APIClient() self.user = create_user_with_email(email='*****@*****.**') self.token = generate_token_for_user(user=self.user) self.device = create_device_with_owner(owner=self.user) self.client.credentials(HTTP_AUTHORIZATION='JWT ' + self.token)
def test_return_400_status_when_json_body_is_invalid(self): device = create_device_with_owner(self.user) response = self.client.post('/devices/' + str(device.did) + '/tracks/', {"description": "name missing"}) self.assertEqual(HTTP_400_BAD_REQUEST, response.status_code)
def test_return_404_when_device_not_exists(self): device = create_device_with_owner(self.user) track = create_track_with_device(device) response = self.client.post( '/devices/100/tracks/' + str(track.tid) + '/locations/', {}) self.assertEqual(HTTP_404_NOT_FOUND, response.status_code)