public async Task CloudflareApi_ListDNSRecords_ReturnsAnEmptyListWhenNoResultsAreReturned() { // Given var zoneId = "123"; var apiToken = "456"; _mockHttp .Expect($"{CloudflareApi.ENDPOINT}/zones/{zoneId}/dns_records") .WithQueryString(new Dictionary <string, string> { { "type", "A" }, { "page", "1" }, { "per_page", "20" }, }) .WithHeaders(new Dictionary <string, string> { { "Authorization", $"Bearer {apiToken}" }, }) .RespondWithJson(new { success = true, errors = Array.Empty <object>(), messages = Array.Empty <string>(), }); // When var client = _mockHttp.ToHttpClient(); var cloudflare = new CloudflareApi(client, new CloudflareApiOptions(apiToken)); var(results, pager) = await cloudflare.ListDNSRecords(zoneId, "A"); // Then Assert.Empty(results); Assert.Null(pager); _mockHttp.VerifyNoOutstandingRequest(); }
public async Task CloudflareApi_ListDNSRecords_CreatesCorrectQueryForMultipleSearchParameters() { // Given var zoneId = "123"; var apiToken = "456"; var type = "CNAME"; var name = "yolo.example.com"; var page = 2; var total = 100; var recordOne = new { id = "372e67954025e0ba6aaa6d586b9e0b59", type = "A", name = "yolo.example.com", content = "198.51.100.4", proxiable = true, proxied = false, ttl = 120, locked = false, zone_id = "123", zone_name = "example.com", created_on = "2014-01-01T05:20:00.12345Z", modified_on = "2014-01-01T05:20:00.12345Z", }; _mockHttp .Expect($"{CloudflareApi.ENDPOINT}/zones/{zoneId}/dns_records") .WithQueryString(new Dictionary <string, string> { { "type", type }, { "name", name }, { "page", $"{page}" }, { "per_page", $"{total}" }, }) .WithHeaders(new Dictionary <string, string> { { "Authorization", $"Bearer {apiToken}" }, }) .RespondWithJson(new { success = true, errors = Array.Empty <object>(), messages = Array.Empty <string>(), result = new object[] { recordOne, }, result_info = new { page = 1, per_page = 20, total_count = 1, total_pages = 1, }, }); // When var client = _mockHttp.ToHttpClient(); var cloudflare = new CloudflareApi(client, new CloudflareApiOptions(apiToken)); _ = await cloudflare.ListDNSRecords(zoneId, type, name, page, total); // Then _mockHttp.VerifyNoOutstandingRequest(); }
public async Task CloudflareApi_ListDNSRecords_ReturnsAPagerObject() { // Given var zoneId = "123"; var apiToken = "456"; var recordOne = new { id = "372e67954025e0ba6aaa6d586b9e0b59", type = "A", name = "yolo.example.com", content = "198.51.100.4", proxiable = true, proxied = false, ttl = 120, locked = false, zone_id = "123", zone_name = "example.com", created_on = "2014-01-01T05:20:00.12345Z", modified_on = "2014-01-01T05:20:00.12345Z", }; _mockHttp .Expect($"{CloudflareApi.ENDPOINT}/zones/{zoneId}/dns_records") .WithQueryString(new Dictionary <string, string> { { "page", "1" }, { "per_page", "20" }, }) .WithHeaders(new Dictionary <string, string> { { "Authorization", $"Bearer {apiToken}" }, }) .RespondWithJson(new { success = true, errors = Array.Empty <object>(), messages = Array.Empty <string>(), result = new object[] { recordOne, recordOne, recordOne, recordOne, recordOne, recordOne }, result_info = new { page = 1, per_page = 20, total_count = 6, total_pages = 1, }, }); // When var client = _mockHttp.ToHttpClient(); var cloudflare = new CloudflareApi(client, new CloudflareApiOptions(apiToken)); var(results, pager) = await cloudflare.ListDNSRecords(zoneId); // Then Assert.Equal(6, results.Count); pager.Should().BeEquivalentTo(new ApiResultPager { Page = 1, PerPage = 20, TotalCount = 6, TotalPages = 1, }); _mockHttp.VerifyNoOutstandingRequest(); }
public async Task CloudflareApi_ListDNSRecords_ReturnsAListOfARecordsWithoutAPager() { // Given var zoneId = "123"; var apiToken = "456"; var recordOne = new { id = "372e67954025e0ba6aaa6d586b9e0b59", type = "A", name = "yolo.example.com", content = "198.51.100.4", proxiable = true, proxied = false, ttl = 120, locked = false, zone_id = "123", zone_name = "example.com", created_on = "2014-01-01T05:20:00.12345Z", modified_on = "2014-01-01T05:20:00.12345Z", }; var recordTwo = new { id = "99b83b442ecd4915b78050e068bd2280", type = "A", name = "whatup.example.com", content = "198.51.100.5", proxiable = true, proxied = false, ttl = 120, locked = false, zone_id = "123", zone_name = "example.com", created_on = "2014-01-01T05:20:00.12345Z", modified_on = "2014-01-01T05:20:00.12345Z", }; _mockHttp .Expect($"{CloudflareApi.ENDPOINT}/zones/{zoneId}/dns_records") .WithQueryString(new Dictionary <string, string> { { "type", "A" }, { "page", "1" }, { "per_page", "20" }, }) .WithHeaders(new Dictionary <string, string> { { "Authorization", $"Bearer {apiToken}" }, }) .RespondWithJson(new { success = true, errors = Array.Empty <object>(), messages = Array.Empty <string>(), result = new object[] { recordOne, recordTwo, }, }); // When var client = _mockHttp.ToHttpClient(); var cloudflare = new CloudflareApi(client, new CloudflareApiOptions(apiToken)); var(results, pager) = await cloudflare.ListDNSRecords(zoneId, "A"); // Then Assert.Equal(2, results.Count); Assert.Collection( results, dns => dns.Should().BeEquivalentTo(new DnsResult { Id = recordOne.id, Type = recordOne.type, Name = recordOne.name, Content = recordOne.content, Proxiable = recordOne.proxiable, Proxied = recordOne.proxied, Ttl = recordOne.ttl, Locked = recordOne.locked, ZoneId = recordOne.zone_id, ZoneName = recordOne.zone_name, CreatedOn = DateTimeOffset.Parse(recordOne.created_on), ModifiedOn = DateTimeOffset.Parse(recordOne.modified_on), }), dns => dns.Should().BeEquivalentTo(new DnsResult { Id = recordTwo.id, Type = recordTwo.type, Name = recordTwo.name, Content = recordTwo.content, Proxiable = recordTwo.proxiable, Proxied = recordTwo.proxied, Ttl = recordTwo.ttl, Locked = recordTwo.locked, ZoneId = recordTwo.zone_id, ZoneName = recordTwo.zone_name, CreatedOn = DateTimeOffset.Parse(recordTwo.created_on), ModifiedOn = DateTimeOffset.Parse(recordTwo.modified_on), }) ); Assert.Null(pager); _mockHttp.VerifyNoOutstandingRequest(); }