summaryrefslogtreecommitdiff
path: root/designate/tests/test_backend/test_powerdns.py
diff options
context:
space:
mode:
Diffstat (limited to 'designate/tests/test_backend/test_powerdns.py')
-rw-r--r--designate/tests/test_backend/test_powerdns.py176
1 files changed, 0 insertions, 176 deletions
diff --git a/designate/tests/test_backend/test_powerdns.py b/designate/tests/test_backend/test_powerdns.py
deleted file mode 100644
index 3f64b130..00000000
--- a/designate/tests/test_backend/test_powerdns.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# Copyright 2015 Hewlett-Packard Development Company, L.P.
-#
-# Author: Kiall Mac Innes <kiall@hpe.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-import mock
-import testtools
-import sqlalchemy
-
-from designate.tests.test_backend import BackendTestCase
-from designate import objects
-from designate import exceptions
-from designate.backend import impl_powerdns
-from designate.backend.impl_powerdns import tables
-
-
-class PowerDNSBackendTestCase(BackendTestCase):
- def setUp(self):
- super(PowerDNSBackendTestCase, self).setUp()
-
- self.zone = objects.Zone(id='e2bed4dc-9d01-11e4-89d3-123b93f75cba',
- name='example.com.',
- email='example@example.com')
-
- self.target = objects.PoolTarget.from_dict({
- 'id': '4588652b-50e7-46b9-b688-a9bad40a873e',
- 'type': 'powerdns',
- 'masters': [
- {'host': '192.0.2.1', 'port': 53},
- {'host': '192.0.2.2', 'port': 35},
- ],
- 'options': [
- {'key': 'connection', 'value': 'memory://'},
- {'key': 'host', 'value': '192.0.2.3'},
- {'key': 'port', 'value': '53'},
- ],
- })
-
- self.backend = impl_powerdns.PowerDNSBackend(self.target)
-
- # Helper Methpds
- def assertSessionTransactionCalls(self, session_mock, begin=0, commit=0,
- rollback=0):
- # Ensure the Sessions Transactions functions are called correctly
- self.assertEqual(begin, session_mock.begin.call_count)
- self.assertEqual(commit, session_mock.commit.call_count)
- self.assertEqual(rollback, session_mock.rollback.call_count)
-
- # Tests for Public Methods
- @mock.patch.object(impl_powerdns.PowerDNSBackend, 'get_session')
- def test_create_zone(self, get_session_mock):
- session_mock = mock.MagicMock()
- get_session_mock.return_value = session_mock
-
- context = self.get_context()
- self.backend.create_zone(context, self.zone)
-
- self.assertSessionTransactionCalls(
- session_mock, begin=1, commit=1, rollback=0)
-
- # Ensure we have two queries, one INSERT, one SELECT
- self.assertEqual(2, session_mock.execute.call_count)
-
- self.assertIsInstance(
- session_mock.execute.call_args_list[0][0][0],
- sqlalchemy.sql.dml.Insert)
-
- self.assertDictContainsSubset(
- {'type': 'SLAVE',
- 'designate_id': self.zone.id,
- 'master': '192.0.2.1:53,192.0.2.2:35',
- 'name': self.zone.name.rstrip('.')},
- session_mock.execute.call_args_list[0][0][1])
-
- self.assertIsInstance(
- session_mock.execute.call_args_list[1][0][0],
- sqlalchemy.sql.selectable.Select)
-
- @mock.patch.object(impl_powerdns.PowerDNSBackend, 'get_session')
- @mock.patch.object(impl_powerdns.PowerDNSBackend, '_create',
- side_effect=Exception)
- def test_create_zone_failure_on_create(self, create_mock,
- get_session_mock):
- session_mock = mock.MagicMock()
- get_session_mock.return_value = session_mock
-
- with testtools.ExpectedException(Exception):
- self.backend.create_zone(self.get_context(), self.zone)
-
- self.assertSessionTransactionCalls(
- session_mock, begin=1, commit=0, rollback=1)
-
- # Ensure we called out into the _create method exactly once
- self.assertEqual(1, create_mock.call_count)
-
- @mock.patch.object(impl_powerdns.PowerDNSBackend, 'get_session')
- @mock.patch.object(impl_powerdns.PowerDNSBackend, '_create',
- return_value=None)
- def test_create_zone_failure_on_commit(self, create_mock,
- get_session_mock):
- session_mock = mock.MagicMock()
- get_session_mock.return_value = session_mock
-
- # Configure the Session mocks's commit method to raise an exception
- session_mock.commit.side_effect = Exception
-
- with testtools.ExpectedException(Exception):
- self.backend.create_zone(self.get_context(), self.zone)
-
- self.assertSessionTransactionCalls(
- session_mock, begin=1, commit=1, rollback=0)
-
- # Ensure we called out into the _create method exactly once
- self.assertEqual(1, create_mock.call_count)
-
- @mock.patch.object(impl_powerdns.PowerDNSBackend, 'get_session')
- @mock.patch.object(impl_powerdns.PowerDNSBackend, '_get',
- return_value=None)
- def test_delete_zone(self, get_mock, get_session_mock):
- session_mock = mock.MagicMock()
- get_session_mock.return_value = session_mock
-
- # Configure the Session mocks's execute method to return a fudged
- # resultproxy.
- rp_mock = mock.Mock()
- rp_mock.rowcount = 1
-
- session_mock.execute.return_value = rp_mock
-
- context = self.get_context()
- self.backend.delete_zone(context, self.zone)
-
- # Ensure the _get method was called with the correct arguments
- get_mock.assert_called_once_with(
- session_mock, tables.domains, self.zone.id,
- exceptions.ZoneNotFound, id_col=tables.domains.c.designate_id)
-
- # Ensure we have one query, a DELETE
- self.assertEqual(1, session_mock.execute.call_count)
-
- self.assertIsInstance(
- session_mock.execute.call_args_list[0][0][0],
- sqlalchemy.sql.dml.Delete)
-
- # TODO(kiall): Validate the ID being deleted
-
- @mock.patch.object(impl_powerdns.PowerDNSBackend, 'get_session')
- @mock.patch.object(impl_powerdns.PowerDNSBackend, '_get',
- side_effect=exceptions.ZoneNotFound)
- @mock.patch.object(impl_powerdns.PowerDNSBackend, '_delete',
- return_value=None)
- def test_delete_zone_zone_not_found(self, delete_mock, get_mock,
- get_session_mock):
- session_mock = mock.MagicMock()
- get_session_mock.return_value = session_mock
-
- context = self.get_context()
- self.backend.delete_zone(context, self.zone)
-
- # Ensure the _get method was called with the correct arguments
- get_mock.assert_called_once_with(
- session_mock, tables.domains, self.zone.id,
- exceptions.ZoneNotFound, id_col=tables.domains.c.designate_id)
-
- # Ensure the _delete method was not called
- self.assertFalse(delete_mock.called)