import json from rest_framework import status from desecapi.tests.base import DesecTestCase class ReplicationTest(DesecTestCase): def test_serials(self): url = self.reverse("v1:serial") zones = [ {"name": "test.example.", "edited_serial": 12345}, {"name": "example.org.", "edited_serial": 54321}, ] serials = {zone["name"]: zone["edited_serial"] for zone in zones} pdns_requests = [ { "method": "GET", "uri": self.get_full_pdns_url(r"/zones", ns="MASTER"), "status": 200, "body": json.dumps(zones), } ] # Run twice to make sure cache output varies on remote address for i in range(2): response = self.client.get(path=url, REMOTE_ADDR="123.8.0.2") self.assertStatus(response, status.HTTP_401_UNAUTHORIZED) with self.assertPdnsRequests(pdns_requests): response = self.client.get(path=url, REMOTE_ADDR="10.8.0.2") self.assertStatus(response, status.HTTP_200_OK) self.assertEqual(response.data, serials) # Do not expect pdns request in next iteration (result will be cached) pdns_requests = []