test_tokens.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from rest_framework import status
  2. from desecapi.models import Token
  3. from desecapi.tests.base import DomainOwnerTestCase
  4. class TokenTestCase(DomainOwnerTestCase):
  5. def setUp(self):
  6. super().setUp()
  7. self.token2 = self.create_token(self.owner, name='testtoken')
  8. self.other_token = self.create_token(self.user)
  9. def test_list_tokens(self):
  10. response = self.client.get(self.reverse('v1:token-list'))
  11. self.assertStatus(response, status.HTTP_200_OK)
  12. self.assertEqual(len(response.data), 2)
  13. self.assertIn('id', response.data[0])
  14. self.assertFalse(any(field in response.data[0] for field in ['token', 'key', 'value']))
  15. self.assertNotContains(response, self.token)
  16. def test_delete_my_token(self):
  17. token_id = Token.objects.get(user=self.owner, name='testtoken').id
  18. url = self.reverse('v1:token-detail', pk=token_id)
  19. response = self.client.delete(url)
  20. self.assertStatus(response, status.HTTP_204_NO_CONTENT)
  21. self.assertFalse(Token.objects.filter(pk=token_id).exists())
  22. response = self.client.get(url)
  23. self.assertStatus(response, status.HTTP_404_NOT_FOUND)
  24. def test_retrieve_my_token(self):
  25. token_id = Token.objects.get(user=self.owner, name='testtoken').id
  26. url = self.reverse('v1:token-detail', pk=token_id)
  27. response = self.client.get(url)
  28. self.assertStatus(response, status.HTTP_200_OK)
  29. self.assertFalse(any(field in response.data for field in ['token', 'key', 'value']))
  30. def test_retrieve_other_token(self):
  31. token_id = Token.objects.get(user=self.user).id
  32. url = self.reverse('v1:token-detail', pk=token_id)
  33. response = self.client.get(url)
  34. self.assertStatus(response, status.HTTP_404_NOT_FOUND)
  35. def test_update_my_token(self):
  36. token_id = Token.objects.get(user=self.user).id
  37. url = self.reverse('v1:token-detail', pk=token_id)
  38. for method in [self.client.patch, self.client.put]:
  39. response = method(url, data={'name': 'foobar'})
  40. self.assertStatus(response, status.HTTP_405_METHOD_NOT_ALLOWED)
  41. def test_create_token(self):
  42. n = len(Token.objects.filter(user=self.owner).all())
  43. response = self.client.post(self.reverse('v1:token-list'))
  44. self.assertStatus(response, status.HTTP_201_CREATED)
  45. self.assertTrue(all(field in response.data for field in ['id', 'created', 'token', 'name']))
  46. self.assertEqual(response.data['name'], '')
  47. response = self.client.post(self.reverse('v1:token-list'), data={'name': 'foobar'})
  48. self.assertStatus(response, status.HTTP_201_CREATED)
  49. self.assertTrue(all(field in response.data for field in ['id', 'created', 'token', 'name']))
  50. self.assertEqual(response.data['name'], 'foobar')
  51. self.assertEqual(len(Token.objects.filter(user=self.owner).all()), n + 2)