示例#1
0
        public async Task WaitTimeout()
        {
            const string tenant       = "my tenant";
            const string clientId     = "my id";
            const string clientSecret = "very secret";
            const string commitDigest = "commit digest";

            Mock <IMcrStatusClient> statusClientMock = new Mock <IMcrStatusClient>();

            statusClientMock
            .Setup(o => o.GetCommitResultAsync(commitDigest))
            .ReturnsAsync(
                new CommitResult
            {
                Value = new List <CommitStatus>
                {
                    new CommitStatus
                    {
                        OverallStatus = StageStatus.NotStarted
                    }
                }
            });

            IMcrStatusClientFactory    statusClientFactory    = CreateMcrStatusClientFactory(tenant, clientId, clientSecret, statusClientMock.Object);
            Mock <IEnvironmentService> environmentServiceMock = new Mock <IEnvironmentService>();

            WaitForMcrDocIngestionCommand command = new WaitForMcrDocIngestionCommand(
                Mock.Of <ILoggerService>(),
                statusClientFactory,
                environmentServiceMock.Object);

            command.Options.CommitDigest              = commitDigest;
            command.Options.ServicePrincipal.Tenant   = tenant;
            command.Options.ServicePrincipal.ClientId = clientId;
            command.Options.ServicePrincipal.Secret   = clientSecret;
            command.Options.WaitTimeout = TimeSpan.FromSeconds(3);

            environmentServiceMock.Verify(o => o.Exit(It.IsAny <int>()), Times.Never);
            await Assert.ThrowsAsync <TimeoutException>(() => command.ExecuteAsync());
        }
示例#2
0
        public async Task OnboardingRequestsWithDuplicateDigest_Failed()
        {
            const string tenant               = "my tenant";
            const string clientId             = "my id";
            const string clientSecret         = "very secret";
            const string commitDigest         = "commit digest";
            const string onboardingRequestId1 = "onboard1";
            const string onboardingRequestId2 = "onboard1";

            DateTime baselineTime = DateTime.Now;

            IEnumerator <CommitResult> commitResultEnumerator = new List <CommitResult>
            {
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            QueueTime     = baselineTime,
                            OverallStatus = StageStatus.Processing
                        },
                        new CommitStatus
                        {
                            QueueTime     = baselineTime.AddMinutes(1),
                            OverallStatus = StageStatus.Processing
                        }
                    }
                },
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            OnboardingRequestId = onboardingRequestId1,
                            QueueTime           = baselineTime,
                            OverallStatus       = StageStatus.Failed
                        },
                        new CommitStatus
                        {
                            OnboardingRequestId = onboardingRequestId2,
                            QueueTime           = baselineTime.AddMinutes(1),
                            OverallStatus       = StageStatus.Failed
                        }
                    }
                }
            }.GetEnumerator();

            Mock <IMcrStatusClient> statusClientMock = new Mock <IMcrStatusClient>();

            statusClientMock
            .Setup(o => o.GetCommitResultAsync(commitDigest))
            .ReturnsAsync(() =>
            {
                if (commitResultEnumerator.MoveNext())
                {
                    return(commitResultEnumerator.Current);
                }

                return(null);
            });

            statusClientMock
            .Setup(o => o.GetCommitResultDetailedAsync(commitDigest, onboardingRequestId1))
            .ReturnsAsync(new CommitResultDetailed());
            statusClientMock
            .Setup(o => o.GetCommitResultDetailedAsync(commitDigest, onboardingRequestId2))
            .ReturnsAsync(new CommitResultDetailed());

            IMcrStatusClientFactory    statusClientFactory    = CreateMcrStatusClientFactory(tenant, clientId, clientSecret, statusClientMock.Object);
            Mock <IEnvironmentService> environmentServiceMock = new Mock <IEnvironmentService>();
            Exception exitException = new Exception();

            environmentServiceMock
            .Setup(o => o.Exit(1))
            .Throws(exitException);

            WaitForMcrDocIngestionCommand command = new WaitForMcrDocIngestionCommand(
                Mock.Of <ILoggerService>(),
                statusClientFactory,
                environmentServiceMock.Object);

            command.Options.CommitDigest              = commitDigest;
            command.Options.ServicePrincipal.Tenant   = tenant;
            command.Options.ServicePrincipal.ClientId = clientId;
            command.Options.ServicePrincipal.Secret   = clientSecret;
            command.Options.WaitTimeout = TimeSpan.FromMinutes(1);

            Exception actualException = await Assert.ThrowsAsync <Exception>(command.ExecuteAsync);

            Assert.Same(exitException, actualException);
            environmentServiceMock.Verify(o => o.Exit(It.IsAny <int>()), Times.Once);
            statusClientMock.Verify(o => o.GetCommitResultAsync(commitDigest), Times.Exactly(2));
        }
示例#3
0
        public async Task SuccessfulPublish()
        {
            const string tenant       = "my tenant";
            const string clientId     = "my id";
            const string clientSecret = "very secret";

            const string commitDigest = "commit digest";

            IEnumerator <CommitResult> commitResultEnumerator = new List <CommitResult>
            {
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            OverallStatus = StageStatus.NotStarted
                        }
                    }
                },
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            OverallStatus = StageStatus.Processing
                        }
                    }
                },
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            OverallStatus = StageStatus.Processing
                        }
                    }
                },
                new CommitResult
                {
                    Value = new List <CommitStatus>
                    {
                        new CommitStatus
                        {
                            OverallStatus = StageStatus.Succeeded
                        }
                    }
                }
            }.GetEnumerator();

            Mock <IMcrStatusClient> statusClientMock = new Mock <IMcrStatusClient>();

            statusClientMock
            .Setup(o => o.GetCommitResultAsync(commitDigest))
            .ReturnsAsync(() =>
            {
                if (commitResultEnumerator.MoveNext())
                {
                    return(commitResultEnumerator.Current);
                }

                return(null);
            });

            IMcrStatusClientFactory    statusClientFactory    = CreateMcrStatusClientFactory(tenant, clientId, clientSecret, statusClientMock.Object);
            Mock <IEnvironmentService> environmentServiceMock = new Mock <IEnvironmentService>();

            WaitForMcrDocIngestionCommand command = new WaitForMcrDocIngestionCommand(
                Mock.Of <ILoggerService>(),
                statusClientFactory,
                environmentServiceMock.Object);

            command.Options.CommitDigest              = commitDigest;
            command.Options.ServicePrincipal.Tenant   = tenant;
            command.Options.ServicePrincipal.ClientId = clientId;
            command.Options.ServicePrincipal.Secret   = clientSecret;
            command.Options.WaitTimeout = TimeSpan.FromMinutes(1);

            await command.ExecuteAsync();

            environmentServiceMock.Verify(o => o.Exit(It.IsAny <int>()), Times.Never);
            statusClientMock.Verify(o => o.GetCommitResultAsync(commitDigest), Times.Exactly(4));
        }