public async Task ProcessAsync_AnyAccountsReturnFailureResult_ReturnsFailureResult()
        {
            ExternalAddress externalAddress = new ExternalAddress()
            {
                IPv4Address = IPAddress.Parse("100.100.100.100")
            };

            GoDaddyAccount accountOne = new GoDaddyAccount();
            GoDaddyAccount accountTwo = new GoDaddyAccount();

            GoDaddyConfiguration config = new GoDaddyConfiguration()
            {
                Accounts = new List <GoDaddyAccount>()
                {
                    accountOne, accountTwo
                }
            };
            IOptionsSnapshot <GoDaddyConfiguration> optionsSnapshot = A.Fake <IOptionsSnapshot <GoDaddyConfiguration> >();
            IGoDaddyAccountProcessor accountProcessor = A.Fake <IGoDaddyAccountProcessor>();

            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"));

            GoDaddyDDNSService DOService = new GoDaddyDDNSService(accountProcessor, optionsSnapshot);

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

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

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