Exemplo n.º 1
0
        public void Ctor_NegativeInterval_ThrowsException()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            Assert.Throws <ArgumentException>(() => this.sut =
                                                  new SequentialDeploymentHandler(deploymentExecutor, -1));
        }
Exemplo n.º 2
0
        public void Deploy_NullEnvironment_ThrowsException()
        {
            IProductManifestRepository manifestRepository = Substitute.For <IProductManifestRepository>();
            IServiceDeploymentHandler  deploymentHandler  = Substitute.For <IServiceDeploymentHandler>();

            this.sut = new DeploymentService(manifestRepository, deploymentHandler);

            Assert.Throws <ArgumentException>(() => this.sut.Deploy("someproduct", null, "someVersion"));
        }
Exemplo n.º 3
0
        public void Deploy_DoesntGetVersion_DoesntDeploy()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            this.sut = new SequentialDeploymentHandler(deploymentExecutor, 0);
            this.sut.Deploy(GetTestManifest(2), environment: "someEnvironment", productVersion: "wrongVersion");

            deploymentExecutor.DidNotReceiveWithAnyArgs().Deploy(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 4
0
        public void Deploy_NullEnvironment_ThrowsException()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            this.sut = new SequentialDeploymentHandler(deploymentExecutor, 0);

            Assert.Throws <ArgumentException>(() =>
                                              this.sut.Deploy(GetTestManifest(1), environment: null, productVersion: "someVersion"));
        }
Exemplo n.º 5
0
        public void Deploy_DoesntSucceed_Aborts()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            deploymentExecutor.Deploy(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(true);
            deploymentExecutor.GetDeploymentStatus(
                Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(DeploymentStatus.Failed);

            this.sut = new SequentialDeploymentHandler(deploymentExecutor, 0);
            this.sut.Deploy(GetTestManifest(2), environment: "someEnvironment", productVersion: "someVersion");

            deploymentExecutor.Received(1).Deploy(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 6
0
        public void Deploy_NoManifest_DoesNothing()
        {
            IProductManifestRepository manifestRepository = Substitute.For <IProductManifestRepository>();
            IServiceDeploymentHandler  deploymentHandler  = Substitute.For <IServiceDeploymentHandler>();

            manifestRepository.GetManifest(Arg.Any <string>(), Arg.Any <string>())
            .Returns((ProductManifest)null);

            this.sut = new DeploymentService(manifestRepository, deploymentHandler);
            this.sut.Deploy("someProduct", "someEnvironment", "someVersion");

            deploymentHandler.DidNotReceiveWithAnyArgs()
            .Deploy(Arg.Any <ProductManifest>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 7
0
        public void Deploy_GetsManifest_DeploysServices()
        {
            IProductManifestRepository manifestRepository = Substitute.For <IProductManifestRepository>();
            IServiceDeploymentHandler  deploymentHandler  = Substitute.For <IServiceDeploymentHandler>();

            manifestRepository.GetManifest(Arg.Any <string>(), Arg.Any <string>())
            .Returns(GetTestManifest(2));

            this.sut = new DeploymentService(manifestRepository, deploymentHandler);
            this.sut.Deploy("someProduct", "someEnvironment", "someVersion");

            deploymentHandler.ReceivedWithAnyArgs()
            .Deploy(Arg.Any <ProductManifest>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 8
0
        public void Deploy_HasBranch_UsesBranch()
        {
            IProductManifestRepository manifestRepository = Substitute.For <IProductManifestRepository>();
            IServiceDeploymentHandler  deploymentHandler  = Substitute.For <IServiceDeploymentHandler>();

            ProductManifest testManifest = GetTestManifest(2);

            manifestRepository.GetManifest(Arg.Any <string>(), Arg.Any <string>())
            .Returns(testManifest);
            this.sut = new DeploymentService(manifestRepository, deploymentHandler);
            this.sut.Deploy("someProduct", "someEnvironment", "someVersion", "someBranch");

            deploymentHandler.Received()
            .Deploy(testManifest, "someEnvironment", "someVersion", "someBranch");
        }
Exemplo n.º 9
0
        public void Deploy_DeploymentQueued_Waits()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            deploymentExecutor.Deploy(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(true);

            Stack <DeploymentStatus> statusResults = new Stack <DeploymentStatus>();

            statusResults.Push(DeploymentStatus.Succeeded);
            statusResults.Push(DeploymentStatus.Queued);

            deploymentExecutor.GetDeploymentStatus(
                Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(x => statusResults.Pop());

            this.sut = new SequentialDeploymentHandler(deploymentExecutor, 0);
            this.sut.Deploy(GetTestManifest(1), environment: "someEnvironment", productVersion: "someVersion");

            deploymentExecutor.Received(2).GetDeploymentStatus(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 10
0
        public void Deploy_Whatif_DoesntWait()
        {
            IServiceDeploymentExecutor deploymentExecutor = Substitute.For <IServiceDeploymentExecutor>();

            deploymentExecutor.Deploy(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(true);

            Stack <DeploymentStatus> statusResults = new Stack <DeploymentStatus>();

            statusResults.Push(DeploymentStatus.Succeeded);
            statusResults.Push(DeploymentStatus.InProgress);

            deploymentExecutor.GetDeploymentStatus(
                Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(x => statusResults.Pop());

            this.sut = new SequentialDeploymentHandler(deploymentExecutor, 0, new Options {
                WhatIf = true
            });
            this.sut.Deploy(GetTestManifest(1), environment: "someEnvironment", productVersion: "someVersion");

            deploymentExecutor.DidNotReceiveWithAnyArgs().GetDeploymentStatus(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>());
        }
Exemplo n.º 11
0
        public void Ctor_NullCatalogueRepository_ThrowsException()
        {
            IServiceDeploymentHandler deploymentHandler = Substitute.For <IServiceDeploymentHandler>();

            Assert.Throws <ArgumentNullException>(() => this.sut = new DeploymentService(null, deploymentHandler));
        }
Exemplo n.º 12
0
 public void Ctor_NullDeploymentExecutor_ThrowsException()
 {
     Assert.Throws <ArgumentNullException>(() => this.sut = new SequentialDeploymentHandler(null, 0));
 }
Exemplo n.º 13
0
 public DeploymentService(
     IProductManifestRepository manifestRepository, IServiceDeploymentHandler deploymentHandler)
 {
     this.manifestRepository = manifestRepository ?? throw new ArgumentNullException(nameof(manifestRepository));
     this.deploymentHandler  = deploymentHandler ?? throw new ArgumentNullException(nameof(deploymentHandler));
 }