Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }