async def test_update_user_update_all_fields(self): expected_new_name = "Novo Nome" expected_new_email = "*****@*****.**" new_user = User(**USER_WITH_MULTIPLE_ACCOUNTS_DICT) new_user.name = expected_new_name new_user.email = expected_new_email resp = await self.client.patch( f"/users/{USER_WITH_MULTIPLE_ACCOUNTS_ID}", headers={ "Authorization": f"Token {USER_WITH_MULTIPLE_ACCOUNTS_AUTH_KEY}" }, json=new_user.dict(), ) self.assertEqual(HTTPStatus.ACCEPTED, resp.status) user_data = await resp.json() self.assertEqual(UserResource(user=new_user).dict(), user_data) resp = await self.client.get( f"/users/{USER_WITH_MULTIPLE_ACCOUNTS_ID}", headers={ "Authorization": f"Token {USER_WITH_MULTIPLE_ACCOUNTS_AUTH_KEY}" }, ) updated_user_data = await resp.json() self.assertEqual(UserResource(user=new_user).dict(), updated_user_data)
async def test_update_user_duplicate_email(self): expected_new_email = USER_WITH_NO_ACCOUNTS_EMAIL new_user = User(**USER_WITH_MULTIPLE_ACCOUNTS_DICT) new_user.email = expected_new_email with self.assertRaises(DuplicateEntity): updated_user = await self.backend.update_user(new_user)
async def test_update_user_cant_update_another_user(self): """ Dado um request PATCH /users/42 {"id": 50, "name": "Nome", "email": "email"} Não podemos, no final das contas ter atualizado o user id=50. Temos que atualizar o user id=42 """ expected_new_name = "Novo Nome" expected_new_email = "*****@*****.**" new_user = User(**USER_WITH_MULTIPLE_ACCOUNTS_DICT) new_user.name = expected_new_name new_user.email = expected_new_email new_user.id = USER_WITH_NO_ACCOUNTS_ID resp = await self.client.patch( f"/users/{USER_WITH_MULTIPLE_ACCOUNTS_ID}", headers={ "Authorization": f"Token {USER_WITH_MULTIPLE_ACCOUNTS_AUTH_KEY}" }, json=new_user.dict(), ) self.assertEqual(HTTPStatus.ACCEPTED, resp.status) user_data = await resp.json() expected_returned_user = User(**USER_WITH_MULTIPLE_ACCOUNTS_DICT) expected_returned_user.name = expected_new_name expected_returned_user.email = expected_new_email self.assertEqual( UserResource(user=expected_returned_user).dict(), user_data) resp = await self.client.get( f"/users/{USER_WITH_NO_ACCOUNTS_ID}", headers={ "Authorization": f"Token {USER_WITH_MULTIPLE_ACCOUNTS_AUTH_KEY}" }, ) updated_user_data = await resp.json() self.assertEqual( UserResource(user=User(**USER_WITH_NO_ACCOUNTS_DICT)).dict(), updated_user_data, )
async def test_update_user_update_name(self): expected_new_email = "*****@*****.**" new_user = User(**USER_WITH_MULTIPLE_ACCOUNTS_DICT) new_user.email = expected_new_email updated_user = await self.backend.update_user(new_user) self.assertEqual(new_user, updated_user) saved_user = await self.backend.get_user_by_id( USER_WITH_MULTIPLE_ACCOUNTS_ID ) self.assertEqual(new_user, saved_user)