def test_update_random_number_ok(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = self.user.pk self.mongo.save_draw(draw) update_data = { 'range_min': 50, 'range_max': 60 } resp = self.api_client.patch(self.detail_uri(draw), data=update_data) print(resp) self.assertHttpAccepted(resp) draw = self.mongo.retrieve_draw(draw.pk) for key, value in update_data.items(): self.assertEqual(value, getattr(draw, key)) self.mongo.remove_draw(draw.pk)
def test_update_not_owner_unauthorised(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = "*****@*****.**" self.mongo.save_draw(draw) resp = self.api_client.patch(self.detail_uri(draw), data={}) print(resp) self.assertHttpUnauthorized(resp)
def test_toss_random_number_ok(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = self.user.pk self.mongo.save_draw(draw) resp = self.toss(draw) print(resp) self.assertHttpOK(resp) draw = self.mongo.retrieve_draw(draw.pk) self.assertEqual(1, len(draw.results)) self.mongo.remove_draw(draw.pk)
def test_update_random_number_not_feasible(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = self.user.pk self.mongo.save_draw(draw) update_data = { 'range_min': 70, 'range_max': 60 } resp = self.api_client.patch(self.detail_uri(draw), data=update_data) print(resp) self.assertHttpBadRequest(resp) self.mongo.remove_draw(draw.pk)
def test_update_random_number_forbidden_att(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = self.user.pk self.mongo.save_draw(draw) for attr in ['results', 'owner', '_id', 'pk', 'creation_time', 'last_updated_time', 'audit']: data[attr] = "something" resp = self.api_client.patch(self.detail_uri(draw), format='json', data=data) self.assertHttpBadRequest(resp) data.pop(attr) self.mongo.remove_draw(draw.pk)
def test_update_random_number_fake_attributes(self): self.login() data = { 'title': 'test_draw', 'is_shared': True, 'enable_chat': True, 'users': ['*****@*****.**'], 'range_min': 5, 'range_max': 6, 'allow_repeat': True, } draw = RandomNumberDraw(**data) draw.owner = self.user.pk self.mongo.save_draw(draw) for attr in ['not_an_attribute', 'participants', 'a_test']: data[attr] = "something" resp = self.api_client.patch(self.detail_uri(draw), format='json', data=data) self.assertHttpAccepted(resp) updated_draw = self.mongo.retrieve_draw(draw.pk) self.assertFalse(hasattr(updated_draw, attr)) data.pop(attr) self.mongo.remove_draw(draw.pk)