Ejemplo n.º 1
0
class ZoneTest(BaseDesignateTest):
    def __init__(self, *args, **kwargs):
        super(ZoneTest, self).__init__(*args, **kwargs)
        self.client = ZoneClient(self.base_client)
        self.quotas_client = QuotasClient(self.base_client)

    def setUp(self):
        super(ZoneTest, self).setUp()
        self.quotas_client.patch_quotas(
            self.quotas_client.client.tenant_id,
            QuotasModel.from_dict({
                'quota': {
                    'zones': 9999999,
                    'recordset_records': 9999999,
                    'zone_records': 9999999,
                    'zone_recordsets': 9999999
                }
            }))

    def wait_for_zone(self, zone_id):
        self.wait_for_condition(lambda: self.is_zone_active(zone_id))

    def wait_for_404(self, zone_id):
        self.wait_for_condition(lambda: self.is_zone_404(zone_id))

    def _create_zone(self, zone_model):
        resp, model = self.client.post_zone(zone_model)
        self.assertEqual(resp.status, 202)
        self.wait_for_zone(model.zone.id)
        return resp, model

    def test_list_zones(self):
        self._create_zone(datagen.random_zone_data())
        resp, model = self.client.list_zones()
        self.assertEqual(resp.status, 200)
        self.assertGreater(len(model.zones), 0)

    def test_create_zone(self):
        self._create_zone(datagen.random_zone_data())

    def test_update_zone(self):
        post_model = datagen.random_zone_data()
        resp, old_model = self._create_zone(post_model)

        patch_model = datagen.random_zone_data()
        del patch_model.zone.name  # don't try to override the zone name
        resp, new_model = self.client.patch_zone(old_model.zone.id,
                                                 patch_model)
        self.assertEqual(resp.status, 202)
        self.wait_for_zone(new_model.zone.id)

        resp, model = self.client.get_zone(new_model.zone.id)
        self.assertEqual(resp.status, 200)
        self.assertEqual(new_model.zone.id, old_model.zone.id)
        self.assertEqual(new_model.zone.name, old_model.zone.name)
        self.assertEqual(new_model.zone.ttl, patch_model.zone.ttl)
        self.assertEqual(new_model.zone.email, patch_model.zone.email)

    def test_delete_zone(self):
        resp, model = self._create_zone(datagen.random_zone_data())
        resp, model = self.client.delete_zone(model.zone.id)
        self.assertEqual(resp.status, 202)
        self.wait_for_404(model.zone.id)