Example #1
0
        public async Task ReturnsFailureWhenAnyFail()
        {
            DigitalOceanDomain domainOne = new DigitalOceanDomain();
            DigitalOceanDomain domainTwo = new DigitalOceanDomain();

            IDigitalOceanDomainProcessor domainProcessor = A.Fake <IDigitalOceanDomainProcessor>();

            A.CallTo(() => domainProcessor.ProcessAsync(domainOne, A <ExternalAddress> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(Result.Ok());
            A.CallTo(() => domainProcessor.ProcessAsync(domainTwo, A <ExternalAddress> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(Result.Fail("This failed"));
            DigitalOceanAccountProcessor processor = new DigitalOceanAccountProcessor(domainProcessor);

            DigitalOceanAccount account = new DigitalOceanAccount()
            {
                Domains = new List <DigitalOceanDomain>()
                {
                    domainOne, domainTwo
                }
            };
            ExternalAddress externalAddress = new ExternalAddress()
            {
                IPv4Address = IPAddress.Parse("100.100.100.100")
            };

            Result result = await processor.ProcessAsync(account, externalAddress, new CancellationToken());

            Assert.True(result.IsFailed);
        }
Example #2
0
        public async Task ReturnsFailureIfAnyAccountsReturnFailure()
        {
            ExternalAddress externalAddress = new ExternalAddress()
            {
                IPv4Address = IPAddress.Parse("100.100.100.100")
            };

            DigitalOceanAccount accountOne = new DigitalOceanAccount();
            DigitalOceanAccount accountTwo = new DigitalOceanAccount();

            DigitalOceanConfiguration config = new DigitalOceanConfiguration()
            {
                Accounts = new List <DigitalOceanAccount>()
                {
                    accountOne, accountTwo
                }
            };
            IOptionsSnapshot <DigitalOceanConfiguration> optionsSnapshot = A.Fake <IOptionsSnapshot <DigitalOceanConfiguration> >();
            IDigitalOceanAccountProcessor accountProcessor = A.Fake <IDigitalOceanAccountProcessor>();

            A.CallTo(() => optionsSnapshot.Value).Returns(config);
            A.CallTo(() => accountProcessor.ProcessAsync(accountOne, externalAddress, A <CancellationToken> .Ignored)).Returns(Result.Ok());
            A.CallTo(() => accountProcessor.ProcessAsync(accountTwo, externalAddress, A <CancellationToken> .Ignored)).Returns(Result.Fail("This failed"));

            DigitalOceanDDNSService DOService = new DigitalOceanDDNSService(optionsSnapshot, accountProcessor);

            Result actual = await DOService.ProcessAsync(externalAddress, new CancellationToken());

            Assert.True(actual.IsFailed);
        }
        public async Task <Result> ProcessAsync(DigitalOceanAccount account, ExternalAddress externalAddress, CancellationToken cancellation)
        {
            Result result = Result.Ok();

            foreach (DigitalOceanDomain domain in account.Domains)
            {
                result = result.Merge(await _domainProcessor.ProcessAsync(domain, externalAddress, account.Token, cancellation));
            }
            return(result);
        }
        public void ValidDigitalOceanAccount()
        {
            DigitalOceanAccount account = new DigitalOceanAccount
            {
                Domains = new[]
                {
                    ValidDigitalOceanDomain()
                },
                Token = "QSA5VXQSWMH3L8MYX2XF"
            };

            IValidator <DigitalOceanAccount> validator = new DigitalOceanAccountValidator();
            ValidationResult validationResult          = validator.Validate(account);

            Assert.True(validationResult.IsValid);
        }
        public void InvalidDigitalOceanAccount()
        {
            DigitalOceanAccount account = new DigitalOceanAccount
            {
                Domains = new[]
                {
                    ValidDigitalOceanDomain()
                },
                Token = string.Empty
            };

            IValidator <DigitalOceanAccount> validator = new DigitalOceanAccountValidator();
            ValidationResult validationResult          = validator.Validate(account);

            Assert.False(validationResult.IsValid);
            Assert.True(validationResult.Errors.All(m => m.ErrorMessage.Equals(DigitalOceanAccountValidator.TokenErrorMessage)));
        }
Example #6
0
        public async Task ReturnsSuccessfulResultWhenAllSucceed()
        {
            IDigitalOceanDomainProcessor domainProcessor = A.Fake <IDigitalOceanDomainProcessor>();

            A.CallTo(() => domainProcessor.ProcessAsync(A <DigitalOceanDomain> .Ignored, A <ExternalAddress> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored)).Returns(Result.Ok());
            DigitalOceanAccountProcessor processor = new DigitalOceanAccountProcessor(domainProcessor);

            DigitalOceanAccount account = new DigitalOceanAccount()
            {
                Domains = new List <DigitalOceanDomain>()
                {
                    new DigitalOceanDomain(), new DigitalOceanDomain()
                }
            };
            ExternalAddress externalAddress = new ExternalAddress()
            {
                IPv4Address = IPAddress.Parse("100.100.100.100")
            };

            Result result = await processor.ProcessAsync(account, externalAddress, new CancellationToken());

            Assert.True(result.IsSuccess);
        }