test_replication.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  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. {
  14. "method": "GET",
  15. "uri": self.get_full_pdns_url(r"/zones", ns="MASTER"),
  16. "status": 200,
  17. "body": json.dumps(zones),
  18. }
  19. ]
  20. # Run twice to make sure cache output varies on remote address
  21. for i in range(2):
  22. response = self.client.get(path=url, REMOTE_ADDR="123.8.0.2")
  23. self.assertStatus(response, status.HTTP_401_UNAUTHORIZED)
  24. with self.assertPdnsRequests(pdns_requests):
  25. response = self.client.get(path=url, REMOTE_ADDR="10.8.0.2")
  26. self.assertStatus(response, status.HTTP_200_OK)
  27. self.assertEqual(response.data, serials)
  28. # Do not expect pdns request in next iteration (result will be cached)
  29. pdns_requests = []