tests.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.urls import reverse
  2. from rest_framework.test import APITestCase
  3. from model_bakery import baker
  4. class APITokenTests(APITestCase):
  5. def setUp(self):
  6. self.user = baker.make("users.user")
  7. def test_create(self):
  8. self.client.force_login(self.user)
  9. url = reverse("api-tokens-list")
  10. scope_name = "member:read"
  11. data = {"scopes": [scope_name]}
  12. res = self.client.post(url, data, format="json")
  13. self.assertContains(res, scope_name, status_code=201)
  14. def test_list(self):
  15. self.client.force_login(self.user)
  16. api_token = baker.make("api_tokens.APIToken", user=self.user)
  17. other_api_token = baker.make("api_tokens.APIToken")
  18. url = reverse("api-tokens-list")
  19. res = self.client.get(url)
  20. self.assertContains(res, api_token.token)
  21. self.assertNotContains(res, other_api_token.token)
  22. def test_retrieve(self):
  23. self.client.force_login(self.user)
  24. api_token = baker.make("api_tokens.APIToken", user=self.user)
  25. url = reverse("api-tokens-detail", args=[api_token.id])
  26. res = self.client.get(url)
  27. self.assertContains(res, api_token.token)
  28. other_api_token = baker.make("api_tokens.APIToken")
  29. res = self.client.get(reverse("api-tokens-detail", args=[other_api_token.id]))
  30. self.assertEqual(res.status_code, 404)
  31. def test_destroy(self):
  32. self.client.force_login(self.user)
  33. api_token = baker.make("api_tokens.APIToken", user=self.user)
  34. url = reverse("api-tokens-detail", args=[api_token.id])
  35. self.assertTrue(self.user.apitoken_set.exists())
  36. res = self.client.delete(url)
  37. self.assertEqual(res.status_code, 204)
  38. self.assertFalse(self.user.apitoken_set.exists())
  39. other_api_token = baker.make("api_tokens.APIToken")
  40. url = reverse("api-tokens-detail", args=[other_api_token.id])
  41. res = self.client.delete(url)
  42. self.assertEqual(res.status_code, 404)