public static bool AreEqual(Models.RecordSet first, Models.RecordSet second, bool ignoreEtag = false) { if (!AreEqualPrereq(first, second)) { return(false); } if (first != null && second != null) { if (first.Properties == null && second.Properties == null) { return(true); } if (first.Properties == null || second.Properties == null) { return(false); } return((ignoreEtag || (first.ETag == second.ETag)) && first.Properties.Ttl == second.Properties.Ttl && AreEqual(first.Properties.ARecords, second.Properties.ARecords) && AreEqual(first.Properties.AaaaRecords, second.Properties.AaaaRecords) && AreEqual(first.Properties.MxRecords, second.Properties.MxRecords) && AreEqual(first.Properties.NsRecords, second.Properties.NsRecords) && AreEqual(first.Properties.PtrRecords, second.Properties.PtrRecords) && AreEqual(first.Properties.SrvRecords, second.Properties.SrvRecords) && AreEqual(first.Properties.CnameRecord, second.Properties.CnameRecord) && AreEqual(first.Properties.SoaRecord, second.Properties.SoaRecord)); } return(true); }
public static bool AreEqual( Models.RecordSet first, Models.RecordSet second, bool ignoreEtag = false) { //if (!AreEqualPrereq(first, second)) //{ // return false; //} if (first != null && second != null) { return((ignoreEtag || (first.Etag == second.Etag)) && first.TTL == second.TTL && AreEqual(first.ARecords, second.ARecords) && AreEqual(first.AaaaRecords, second.AaaaRecords) && AreEqual(first.MxRecords, second.MxRecords) && AreEqual(first.NsRecords, second.NsRecords) && AreEqual(first.PtrRecords, second.PtrRecords) && AreEqual(first.SrvRecords, second.SrvRecords) && AreEqual(first.CnameRecord, second.CnameRecord) && AreEqual(first.SoaRecord, second.SoaRecord)); } return(true); }
public void CrudRecordSetFullCycle() { using (UndoContext context = UndoContext.Current) { context.Start(); SingleRecordSetTestContext testContext = SetupSingleRecordSetTest(); RecordSetCreateOrUpdateParameters createParameters = testContext.TestRecordSkeleton; createParameters.RecordSet.Properties.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" } }; createParameters.RecordSet.Properties.Ttl = 60; // Create the records clean, verify response RecordSetCreateOrUpdateResponse createResponse = testContext.DnsClient.RecordSets.CreateOrUpdate( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, createParameters); Assert.Equal(HttpStatusCode.Created, createResponse.StatusCode); Assert.True( TestHelpers.AreEqual(createParameters.RecordSet, createResponse.RecordSet, ignoreEtag: true), "Response body of Create does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(createResponse.RecordSet.ETag)); // Retrieve the zone after create, verify response var getresponse = testContext.DnsClient.RecordSets.Get( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A); Assert.Equal(HttpStatusCode.OK, getresponse.StatusCode); Assert.True( TestHelpers.AreEqual(createResponse.RecordSet, getresponse.RecordSet, ignoreEtag: false), "Response body of Get does not match expectations"); // Call Update on the object returned by Create (important distinction from Get below) Models.RecordSet createdRecordSet = createResponse.RecordSet; createdRecordSet.Tags = new Dictionary <string, string> { { "tag1", "value1" }, { "tag2", "value2" } }; createdRecordSet.Properties.Ttl = 120; createdRecordSet.Properties.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" }, new ARecord { Ipv4Address = "101.10.0.1" } }; RecordSetCreateOrUpdateResponse updateResponse = testContext.DnsClient.RecordSets.CreateOrUpdate( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, new RecordSetCreateOrUpdateParameters { RecordSet = createdRecordSet }); Assert.Equal(HttpStatusCode.OK, updateResponse.StatusCode); Assert.True( TestHelpers.AreEqual(createdRecordSet, updateResponse.RecordSet, ignoreEtag: true), "Response body of Update does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(updateResponse.RecordSet.ETag)); // Retrieve the records after create, verify response getresponse = testContext.DnsClient.RecordSets.Get( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A); Assert.Equal(HttpStatusCode.OK, getresponse.StatusCode); Assert.True( TestHelpers.AreEqual(updateResponse.RecordSet, getresponse.RecordSet), "Response body of Get does not match expectations"); // Call Update on the object returned by Get (important distinction from Create above) Models.RecordSet retrievedRecordSet = getresponse.RecordSet; retrievedRecordSet.Tags = new Dictionary <string, string> { { "tag1", "value1" }, { "tag2", "value2" }, { "tag3", "value3" } }; retrievedRecordSet.Properties.Ttl = 180; retrievedRecordSet.Properties.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" }, new ARecord { Ipv4Address = "101.10.0.1" }, new ARecord { Ipv4Address = "22.33.44.55" }, }; updateResponse = testContext.DnsClient.RecordSets.CreateOrUpdate( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, new RecordSetCreateOrUpdateParameters { RecordSet = retrievedRecordSet }); Assert.Equal(HttpStatusCode.OK, updateResponse.StatusCode); Assert.True( TestHelpers.AreEqual(retrievedRecordSet, updateResponse.RecordSet, ignoreEtag: true), "Response body of Update does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(updateResponse.RecordSet.ETag)); // Delete the record set AzureOperationResponse deleteResponse = testContext.DnsClient.RecordSets.Delete( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, new RecordSetDeleteParameters()); Assert.Equal(HttpStatusCode.OK, deleteResponse.StatusCode); // Delete the zone deleteResponse = testContext.DnsClient.Zones.Delete( testContext.ResourceGroup.Name, testContext.ZoneName, new ZoneDeleteParameters()); } }
public void CrudRecordSetFullCycle() { using ( MockContext context = MockContext.Start(this.GetType().FullName) ) { var testContexts = SetupSingleRecordSetTestContexts(context); foreach (var testContext in testContexts) { var recordSetToBeCreated = testContext.TestRecordSkeleton; recordSetToBeCreated.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" } }; recordSetToBeCreated.TTL = 60; // Create the records clean, verify response var createResponse = testContext.DnsClient.RecordSets .CreateOrUpdate( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, ifMatch: null, ifNoneMatch: null, parameters: recordSetToBeCreated); Assert.True( TestHelpers.AreEqual( recordSetToBeCreated, createResponse, ignoreEtag: true), "Response body of Create does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(createResponse.Etag)); // Retrieve the zone after create, verify response var getresponse = testContext.DnsClient.RecordSets.Get( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A); Assert.True( TestHelpers.AreEqual( createResponse, getresponse, ignoreEtag: false), "Response body of Get does not match expectations"); // Call Update on the object returned by Create (important distinction from Get below) Models.RecordSet createdRecordSet = createResponse; createdRecordSet.TTL = 120; createdRecordSet.Metadata = new Dictionary <string, string> { { "tag1", "value1" }, { "tag2", "value2" } }; createdRecordSet.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" }, new ARecord { Ipv4Address = "101.10.0.1" } }; var updateResponse = testContext.DnsClient.RecordSets .CreateOrUpdate( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, ifMatch: null, ifNoneMatch: null, parameters: createdRecordSet); Assert.True( TestHelpers.AreEqual( createdRecordSet, updateResponse, ignoreEtag: true), "Response body of Update does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(updateResponse.Etag)); // Retrieve the records after create, verify response getresponse = testContext.DnsClient.RecordSets.Get( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A); Assert.True( TestHelpers.AreEqual(updateResponse, getresponse), "Response body of Get does not match expectations"); // Call Update on the object returned by Get (important distinction from Create above) Models.RecordSet retrievedRecordSet = getresponse; retrievedRecordSet.TTL = 180; retrievedRecordSet.ARecords = new List <ARecord> { new ARecord { Ipv4Address = "123.32.1.0" }, new ARecord { Ipv4Address = "101.10.0.1" }, new ARecord { Ipv4Address = "22.33.44.55" }, }; updateResponse = testContext.DnsClient.RecordSets.CreateOrUpdate ( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, ifMatch: null, ifNoneMatch: null, parameters: retrievedRecordSet); Assert.True( TestHelpers.AreEqual( retrievedRecordSet, updateResponse, ignoreEtag: true), "Response body of Update does not match expectations"); Assert.False(string.IsNullOrWhiteSpace(updateResponse.Etag)); // Delete the record set testContext.DnsClient.RecordSets.Delete( testContext.ResourceGroup.Name, testContext.ZoneName, testContext.RecordSetName, RecordType.A, ifMatch: null); // Delete the zone testContext.DnsClient.Zones.Delete( testContext.ResourceGroup.Name, testContext.ZoneName, ifMatch: null); } } }