コード例 #1
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);
        }
コード例 #2
0
        public async Task ReturnsSuccessfulIfAllAccountsReturnSuccessful()
        {
            ExternalAddress externalAddress = new ExternalAddress()
            {
                IPv4Address = IPAddress.Parse("100.100.100.100")
            };

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

            A.CallTo(() => optionsSnapshot.Value).Returns(config);
            A.CallTo(() => accountProcessor.ProcessAsync(A <DigitalOceanAccount> .Ignored, externalAddress, A <CancellationToken> .Ignored)).Returns(Result.Ok());

            DigitalOceanDDNSService DOService = new DigitalOceanDDNSService(optionsSnapshot, accountProcessor);

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

            Assert.True(actual.IsSuccess);
        }
コード例 #3
0
        public async Task <Result> ProcessAsync(ExternalAddress externalAddress, CancellationToken cancellation)
        {
            Result result = Result.Ok();

            foreach (DigitalOceanAccount account in _configuration.Accounts)
            {
                result = result.Merge(await _accountProcessor.ProcessAsync(account, externalAddress, cancellation));
            }
            return(result);
        }