test_replication.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import json
  2. from rest_framework import status
  3. from desecapi.tests.base import DesecTestCase
  4. class ReplicationTest(DesecTestCase):
  5. def test_serials(self):
  6. url=self.reverse('v1:serial')
  7. zones = [
  8. {'name': 'test.example.', 'edited_serial': 12345},
  9. {'name': 'example.org.', 'edited_serial': 54321},
  10. ]
  11. serials = {zone['name']: zone['edited_serial'] for zone in zones}
  12. pdns_requests = [{
  13. 'method': 'GET',
  14. 'uri': self.get_full_pdns_url(r'/zones', ns='MASTER'),
  15. 'status': 200,
  16. 'body': json.dumps(zones),
  17. }]
  18. # Run twice to make sure cache output varies on remote address
  19. for i in range(2):
  20. response = self.client.get(path=url, REMOTE_ADDR='123.8.0.2')
  21. self.assertStatus(response, status.HTTP_401_UNAUTHORIZED)
  22. with self.assertPdnsRequests(pdns_requests):
  23. response = self.client.get(path=url, REMOTE_ADDR='10.8.0.2')
  24. self.assertStatus(response, status.HTTP_200_OK)
  25. self.assertEqual(response.data, serials)
  26. # Do not expect pdns request in next iteration (result will be cached)
  27. pdns_requests = []