1""" 2Copyright 2015 Rackspace 3 4Licensed under the Apache License, Version 2.0 (the "License"); 5you may not use this file except in compliance with the License. 6You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10Unless required by applicable law or agreed to in writing, software 11distributed under the License is distributed on an "AS IS" BASIS, 12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13See the License for the specific language governing permissions and 14limitations under the License. 15""" 16from tempest.lib.exceptions import CommandFailed 17 18from designateclient.functionaltests.base import BaseDesignateTest 19from designateclient.functionaltests.datagen import random_a_recordset_name 20from designateclient.functionaltests.datagen import random_zone_name 21from designateclient.functionaltests.v2.fixtures import RecordsetFixture 22from designateclient.functionaltests.v2.fixtures import ZoneFixture 23 24 25class TestRecordset(BaseDesignateTest): 26 27 def setUp(self): 28 super(TestRecordset, self).setUp() 29 self.ensure_tld_exists('com') 30 self.zone = self.useFixture(ZoneFixture( 31 name=random_zone_name(), 32 email='test@example.com', 33 )).zone 34 35 name = random_a_recordset_name(self.zone.name) 36 self.recordset = self.useFixture(RecordsetFixture( 37 zone_id=self.zone.id, 38 name=name, 39 records='1.2.3.4', 40 description='An a recordset', 41 type='A', 42 ttl=1234, 43 )).recordset 44 45 self.assertEqual(self.recordset.name, name) 46 self.assertEqual(self.recordset.records, '1.2.3.4') 47 self.assertEqual(self.recordset.description, 'An a recordset') 48 self.assertEqual(self.recordset.type, 'A') 49 self.assertEqual(self.recordset.ttl, '1234') 50 51 def test_recordset_list(self): 52 rsets = self.clients.recordset_list(self.zone.id) 53 self.assertGreater(len(rsets), 0) 54 55 def test_recordset_create_and_show(self): 56 rset = self.clients.recordset_show(self.zone.id, self.recordset.id) 57 self.assertTrue(hasattr(self.recordset, 'action')) 58 self.assertTrue(hasattr(rset, 'action')) 59 self.assertEqual(self.recordset.created_at, rset.created_at) 60 self.assertEqual(self.recordset.description, rset.description) 61 self.assertEqual(self.recordset.id, rset.id) 62 self.assertEqual(self.recordset.name, rset.name) 63 self.assertEqual(self.recordset.records, rset.records) 64 self.assertEqual(self.recordset.status, rset.status) 65 self.assertEqual(self.recordset.ttl, rset.ttl) 66 self.assertEqual(self.recordset.type, rset.type) 67 self.assertEqual(self.recordset.updated_at, rset.updated_at) 68 self.assertEqual(self.recordset.version, rset.version) 69 self.assertEqual(self.recordset.zone_id, self.zone.id) 70 71 def test_recordset_delete(self): 72 rset = self.clients.recordset_delete(self.zone.id, self.recordset.id) 73 self.assertEqual(rset.action, 'DELETE') 74 self.assertEqual(rset.status, 'PENDING') 75 76 def test_recordset_set(self): 77 rset = self.clients.recordset_set( 78 self.zone.id, 79 self.recordset.id, 80 records='2.3.4.5', 81 ttl=2345, 82 description='Updated description', 83 ) 84 85 self.assertEqual(rset.records, '2.3.4.5') 86 self.assertEqual(rset.ttl, '2345') 87 self.assertEqual(rset.description, 'Updated description') 88 89 def test_recordset_set_clear_ttl_and_description(self): 90 rset = self.clients.recordset_set( 91 self.zone.id, 92 self.recordset.id, 93 no_description=True, 94 no_ttl=True, 95 ) 96 97 self.assertEqual(rset.description, 'None') 98 self.assertEqual(rset.ttl, 'None') 99 100 101class TestRecordsetNegative(BaseDesignateTest): 102 103 def test_invalid_option_on_recordset_create(self): 104 cmd = 'recordset create de47d30b-41c5-4e38-b2c5-e0b908e19ec7 ' \ 105 'aaa.desig.com. --type A --records 1.2.3.4 ' \ 106 '--invalid "not valid"' 107 self.assertRaises(CommandFailed, self.clients.openstack, cmd) 108 109 def test_invalid_recordset_command(self): 110 cmd = 'recordset hopefullynotvalid' 111 self.assertRaises(CommandFailed, self.clients.openstack, cmd) 112