def _ImportReplaceFromFileHelper(self, file_path, flags=None): test_zone = util_beta.GetManagedZones()[0] self.mocked_dns_client.managedZones.Get.Expect( self.messages_beta.DnsManagedZonesGetRequest( managedZone=test_zone.name, project=self.Project()), test_zone) self.mocked_dns_client.resourceRecordSets.List.Expect( self.messages_beta.DnsResourceRecordSetsListRequest( project=self.Project(), managedZone=test_zone.name, maxResults=100), self.messages_beta.ResourceRecordSetsListResponse( rrsets=util_beta.GetRecordSets())) self.mocked_dns_client.changes.Create.Expect( self.messages_beta.DnsChangesCreateRequest( change=util_beta.GetImportReplaceChange(), managedZone=test_zone.name, project=self.Project()), util_beta.GetImportReplaceChangeAfterCreation()) self.Run([ 'dns', 'record-sets', 'import', '-z', test_zone.name, file_path, '--delete-all-existing', '--replace-origin-ns' ] + (flags or [])) self.AssertOutputContains("""\ ID START_TIME STATUS 2 today 5 mins ago done """, normalize_space=True) self.AssertErrContains("""\ Created [{0}projects/{1}/managedZones/mz/changes/2]. """.format(self.client.BASE_URL, self.Project()))
def testTransactionStart(self): test_zone = util_beta.GetManagedZones()[0] self.mocked_dns_client.managedZones.Get.Expect( self.messages_beta.DnsManagedZonesGetRequest( managedZone=test_zone.name, project=self.Project()), test_zone) self.mocked_dns_client.resourceRecordSets.List.Expect( self.messages_beta.DnsResourceRecordSetsListRequest( project=self.Project(), managedZone=test_zone.name, name=test_zone.dnsName, type='SOA', maxResults=100), self.messages_beta.ResourceRecordSetsListResponse( rrsets=util_beta.GetRecordSets()[2:3])) self.Run('dns record-sets transaction start -z {0} '.format( test_zone.name)) self.AssertErrContains('Transaction started [{0}].'.format( transaction_util.DEFAULT_PATH)) with open(transaction_util.DEFAULT_PATH) as results: with open(self.initial_transaction) as expected: self.assertEqual(expected.readlines(), results.readlines()) os.remove(transaction_util.DEFAULT_PATH)
def testTransactionRemoveBeforeStart(self): test_zone = util_beta.GetManagedZones()[0] test_record = util_beta.GetRecordSets()[0] with self.assertRaises(transaction_util.TransactionFileNotFound) as context: self.Run('dns record-sets transaction remove -z {0} --name {1} --ttl {2}' ' --type {3} {4}'.format(test_zone.name, test_record.name, test_record.ttl, test_record.type, test_record.rrdatas[0])) self.assertEqual(context.exception.message, 'Transaction not found at [{0}]'.format( transaction_util.DEFAULT_PATH))
def testComputeChangeNoConflicts(self): current_record_sets = dict( ((record_set.name, record_set.type), record_set) for record_set in util_beta.GetRecordSets()) change = import_util.ComputeChange( current_record_sets, util_beta.GetImportedRecordSetsWithoutConflicts(), False, 'zone.com.', True, api_version=self.api_version) self.assertEqual(util_beta.GetImportChange(), change)
def testComputeChangeConflicts(self): current_record_sets = dict( ((record_set.name, record_set.type), record_set) for record_set in util_beta.GetRecordSets()) with self.assertRaises(import_util.ConflictingRecordsFound) as context: import_util.ComputeChange(current_record_sets, util_beta.GetImportedRecordSets(), False, 'zone.com.', True, api_version=self.api_version) self.assertEqual( context.exception.message, 'The following records (name type) already exist: ' '[\'mail.zone.com. A\', \'zone.com. A\', \'zone.com. SOA\']')
def testMultipleRecordSetsList(self): test_zone = util_beta.GetManagedZones()[0] self.mocked_dns_client.resourceRecordSets.List.Expect( self.messages_beta.DnsResourceRecordSetsListRequest( project=self.Project(), managedZone=test_zone.name, maxResults=100), self.messages_beta.ResourceRecordSetsListResponse( rrsets=util_beta.GetRecordSets())) self.Run('dns record-sets list -z {0}'.format(test_zone.name)) self.AssertOutputContains("""\ NAME TYPE TTL DATA zone.com. A 21600 1.2.3.4 zone.com. NS 21600 ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com. zone.com. SOA 21601 ns-cloud-e1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300 mail.zone.com. A 21600 5.6.7.8 www.zone.com. CNAME 21600 zone.com. """, normalize_space=True)
def testComputeChangeReplaceAll(self): current_record_sets = dict( ((record_set.name, record_set.type), record_set) for record_set in util_beta.GetRecordSets()) change = import_util.ComputeChange(current_record_sets, util_beta.GetImportedRecordSets(), True, 'zone.com.', True, api_version=self.api_version) self.assertEqual(util_beta.GetImportReplaceChange(), change) change = import_util.ComputeChange(current_record_sets, util_beta.GetImportedRecordSets(), True, 'zone.com.', False, api_version=self.api_version) self.assertEqual(util_beta.GetImportReplaceChangeNoReplaceOrigin(), change)
def testTransactionAddDatum(self): shutil.copyfile( self.initial_transaction, transaction_util.DEFAULT_PATH) test_zone = util_beta.GetManagedZones()[0] test_record = util_beta.GetRecordSets()[0] self.Run( 'dns record-sets transaction add -z {0} --name {1} --ttl {2} --type ' '{3} {4}'.format(test_zone.name, test_record.name, test_record.ttl, test_record.type, test_record.rrdatas[0])) self.AssertErrContains( 'Record addition appended to transaction at [{0}].'.format( transaction_util.DEFAULT_PATH)) with open(self.initial_transaction) as expected: expected_change = transaction_util.ChangeFromYamlFile( expected, api_version=self.api_version) expected_change.additions.append(test_record) with open(transaction_util.DEFAULT_PATH) as actual: actual_change = transaction_util.ChangeFromYamlFile( actual, api_version=self.api_version) self.assertEqual(expected_change, actual_change)
def testDomainWithoutTrailingDot(self): self._TransactionRemoveHelper(util_beta.GetRecordSets()[0], util_beta.GetRecordSets()[0].name.rstrip('.'))
def testTransactionRemoveDatum(self): self._TransactionRemoveHelper(util_beta.GetRecordSets()[0])
def testTransactionRemoveDifferentRecord(self): self._TransactionRemoveNonExistingHelper( util_beta.GetRecordSets()[0], util_beta.GetRecordSetsForExport()[:1])
def testTransactionRemoveNonExistingRecord(self): self._TransactionRemoveNonExistingHelper(util_beta.GetRecordSets()[0], [])