Exemplo n.º 1
0
        public async Task No_Records_Are_Successfully_Created()
        {
            DNSRecordCollection dnsRecords = new DNSRecordCollection(new[]
            {
                new DNSRecord
                {
                    Data = "100.100.100.100",
                    TTL  = 1800,
                    Type = DNSRecordType.A
                },
                new DNSRecord
                {
                    Data = "100.100.100.101",
                    TTL  = 1800,
                    Type = DNSRecordType.A
                },
            });

            IDigitalOceanClient client = A.Fake <IDigitalOceanClient>();

            A.CallTo(() => client.UpdateDNSRecordAsync(A <string> .Ignored, A <DigitalOceanUpdateDomainRecordRequest> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(Result.Fail("Error"));

            IDigitalOceanDNSRecordUpdater creater = new DigitalOceanDNSRecordUpdater(client, _mappingHelper.Mapper);

            Result result = await creater.UpdateAsync(string.Empty, dnsRecords, string.Empty, CancellationToken.None);

            A.CallTo(() => client.UpdateDNSRecordAsync(A <string> .Ignored, A <DigitalOceanUpdateDomainRecordRequest> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).MustHaveHappenedTwiceExactly();
            Assert.True(result.IsFailed);
            Assert.True(result.Errors.Count == 2);
        }
        public async Task <Result> UpdateAsync(string domainName, DNSRecordCollection dnsRecords, string token, CancellationToken cancellation)
        {
            Result result = Result.Ok();
            IEnumerable <DigitalOceanUpdateDomainRecordRequest> requests = _mapper.Map <IEnumerable <DigitalOceanUpdateDomainRecordRequest> >(dnsRecords);

            foreach (DigitalOceanUpdateDomainRecordRequest request in requests)
            {
                Result updateResult = await _digitalOceanClient.UpdateDNSRecordAsync(domainName, request, token, cancellation);

                result = result.Merge(updateResult);
            }

            return(result);
        }