Ejemplo n.º 1
0
        public async Task AssignTrigger(ProjectTriggerInputDto input)
        {
            var project = await _projectsRepository.FirstOrDefaultAsync(p => p.Id == input.ProjectId);

            if (project == null)
            {
                throw new InvalidInputException(@"Project was not found.");
            }

            var trigger = await _triggerRepository.FirstOrDefaultAsync(p => p.Id == input.TriggerId);

            if (trigger == null)
            {
                throw new InvalidInputException(@"Trigger was not found.");
            }

            var projectTrigger = await _projectTriggerRepository.FirstOrDefaultAsync(p => p.TriggerId == trigger.Id);

            if (projectTrigger != null)
            {
                throw new InvalidInputException(@"The trigger has already been assigned.");
            }

            projectTrigger = new ProjectTrigger
            {
                TriggerId = trigger.Id,

                ProjectId = project.Id
            };

            await _projectTriggerRepository.InsertAsync(projectTrigger);
        }
        public void FirePassesInLoginCredentialsAndHandlesFailure()
        {
            var credentials = new[]
            {
                new NameValuePair("user", "me")
            };
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = InitialiseClientMock(
                false,
                NewProjectStatus("project", IntegrationStatus.Success, now));

            Mock.Get(clientMock).Setup(_clientMock => _clientMock.Login(new List <NameValuePair>(credentials))).Returns(false).Verifiable();
            var factoryMock = this.InitialiseFactoryMock(clientMock);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project             = "project",
                InnerTrigger        = innerTriggerMock,
                TriggerFirstTime    = true,
                SecurityCredentials = credentials
            };

            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
            var expected = ModificationExistRequest();

            Assert.AreEqual(expected, actual);
        }
        public void FirePassesInLoginCredentialsAndLogsOut()
        {
            var credentials = new[]
            {
                new NameValuePair("user", "me")
            };
            var innerTriggerMock = this.InitialiseTriggerMock(1);
            var clientMock       = InitialiseClientMock(
                false,
                NewProjectStatus("project", IntegrationStatus.Success, now));

            Expect.Call(clientMock.Login(new List <NameValuePair>(credentials))).Return(true);
            Expect.Call(clientMock.SessionToken).Return("token");
            Expect.Call(() => clientMock.Logout());
            var factoryMock = this.InitialiseFactoryMock(clientMock);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project             = "project",
                InnerTrigger        = innerTriggerMock,
                TriggerFirstTime    = true,
                SecurityCredentials = credentials
            };

            this.mocks.ReplayAll();
            var actual = trigger.Fire();

            this.mocks.VerifyAll();
            var expected = ModificationExistRequest();

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 4
0
 public static YamlProjectTrigger FromModel(ProjectTrigger model)
 {
     return(new YamlProjectTrigger
     {
         Name = model.Name,
         Type = model.Type,
         Properties = YamlProjectTriggerProperties.FromModel(model.Properties)
     });
 }
 public static YamlProjectTrigger FromModel(ProjectTrigger model)
 {
     return(new YamlProjectTrigger
     {
         Name = model.Identifier.Name,
         RenamedFrom = model.Identifier.RenamedFrom,
         Filter = YamlProjectTriggerFilter.FromModel(model.Filter),
         Action = YamlProjectTriggerAction.FromModel(model.Action)
     });
 }
Ejemplo n.º 6
0
        private async Task <bool> BeUniqueByProjectIdName(ApiProjectTriggerRequestModel model, CancellationToken cancellationToken)
        {
            ProjectTrigger record = await this.projectTriggerRepository.ByProjectIdName(model.ProjectId, model.Name);

            if (record == null || (this.existingRecordId != default(string) && record.Id == this.existingRecordId))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 7
0
        public async Task <ApiProjectTriggerResponseModel> ByProjectIdName(string projectId, string name)
        {
            ProjectTrigger record = await this.projectTriggerRepository.ByProjectIdName(projectId, name);

            if (record == null)
            {
                return(null);
            }
            else
            {
                return(this.bolProjectTriggerMapper.MapBOToModel(this.dalProjectTriggerMapper.MapEFToBO(record)));
            }
        }
        public void IntegrationCompletedShouldDelegateToInnerTrigger()
        {
            var innerTriggerMock = this.mocks.Create <ITrigger>(MockBehavior.Strict).Object;

            Mock.Get(innerTriggerMock).Setup(_innerTrigger => _innerTrigger.IntegrationCompleted()).Verifiable();
            var trigger = new ProjectTrigger
            {
                InnerTrigger = innerTriggerMock
            };

            trigger.IntegrationCompleted();
            mocks.VerifyAll();
        }
Ejemplo n.º 9
0
        public virtual ProjectTrigger MapBOToEF(
            BOProjectTrigger bo)
        {
            ProjectTrigger efProjectTrigger = new ProjectTrigger();

            efProjectTrigger.SetProperties(
                bo.Id,
                bo.IsDisabled,
                bo.JSON,
                bo.Name,
                bo.ProjectId,
                bo.TriggerType);
            return(efProjectTrigger);
        }
Ejemplo n.º 10
0
        public void MapEFToBOList()
        {
            var            mapper = new DALProjectTriggerMapper();
            ProjectTrigger entity = new ProjectTrigger();

            entity.SetProperties("A", true, "A", "A", "A", "A");

            List <BOProjectTrigger> response = mapper.MapEFToBO(new List <ProjectTrigger>()
            {
                entity
            });

            response.Count.Should().Be(1);
        }
Ejemplo n.º 11
0
        public virtual BOProjectTrigger MapEFToBO(
            ProjectTrigger ef)
        {
            var bo = new BOProjectTrigger();

            bo.SetProperties(
                ef.Id,
                ef.IsDisabled,
                ef.JSON,
                ef.Name,
                ef.ProjectId,
                ef.TriggerType);
            return(bo);
        }
        public void IntegrationCompletedShouldDelegateToInnerTrigger()
        {
            var innerTriggerMock = this.mocks.StrictMock <ITrigger>();

            Expect.Call(() => innerTriggerMock.IntegrationCompleted());
            var trigger = new ProjectTrigger
            {
                InnerTrigger = innerTriggerMock
            };

            mocks.ReplayAll();
            trigger.IntegrationCompleted();
            mocks.VerifyAll();
        }
        public void NextBuildShouldReturnInnerTriggerNextBuildIfUnknown()
        {
            var innerTriggerMock = this.mocks.Create <ITrigger>(MockBehavior.Strict).Object;

            Mock.Get(innerTriggerMock).SetupGet(_innerTrigger => _innerTrigger.NextBuild).Returns(now).Verifiable();
            var trigger = new ProjectTrigger
            {
                InnerTrigger = innerTriggerMock
            };
            var actual = trigger.NextBuild;

            mocks.VerifyAll();
            Assert.AreEqual(now, actual);
        }
Ejemplo n.º 14
0
        public void MapBOToEF()
        {
            var mapper = new DALProjectTriggerMapper();
            var bo     = new BOProjectTrigger();

            bo.SetProperties("A", true, "A", "A", "A", "A");

            ProjectTrigger response = mapper.MapBOToEF(bo);

            response.Id.Should().Be("A");
            response.IsDisabled.Should().Be(true);
            response.JSON.Should().Be("A");
            response.Name.Should().Be("A");
            response.ProjectId.Should().Be("A");
            response.TriggerType.Should().Be("A");
        }
        public void HandleExceptionInProjectLocator()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = this.InitialiseClientMock(true, NewProjectStatus("wrong", IntegrationStatus.Failure, now));
            var factoryMock      = this.InitialiseFactoryMock(clientMock);
            var trigger          = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            Assert.Throws <NoSuchProjectException>(() => trigger.Fire());

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
        }
        public void NextBuildShouldReturnInnerTriggerNextBuildIfUnknown()
        {
            var innerTriggerMock = this.mocks.StrictMock <ITrigger>();

            Expect.Call(innerTriggerMock.NextBuild).Return(now);
            var trigger = new ProjectTrigger
            {
                InnerTrigger = innerTriggerMock
            };

            mocks.ReplayAll();
            var actual = trigger.NextBuild;

            mocks.VerifyAll();
            Assert.AreEqual(now, actual);
        }
Ejemplo n.º 17
0
        public void MapEFToBO()
        {
            var            mapper = new DALProjectTriggerMapper();
            ProjectTrigger entity = new ProjectTrigger();

            entity.SetProperties("A", true, "A", "A", "A", "A");

            BOProjectTrigger response = mapper.MapEFToBO(entity);

            response.Id.Should().Be("A");
            response.IsDisabled.Should().Be(true);
            response.JSON.Should().Be("A");
            response.Name.Should().Be("A");
            response.ProjectId.Should().Be("A");
            response.TriggerType.Should().Be("A");
        }
        public void DoNotTriggerWhenInnerTriggerReturnsNoBuild()
        {
            var innerTriggerMock = this.mocks.Create <ITrigger>(MockBehavior.Strict).Object;

            Mock.Get(innerTriggerMock).Setup(_innerTrigger => _innerTrigger.Fire()).Returns(() => null).Verifiable();
            var factoryMock = this.mocks.Create <ICruiseServerClientFactory>(MockBehavior.Strict).Object;
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            var actual = trigger.Fire();

            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void ShouldNotTriggerOnFirstIntegration()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, now));
            var factoryMock      = this.InitialiseFactoryMock(clientMock);
            var trigger          = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
Ejemplo n.º 20
0
        public async void Get()
        {
            var mock   = new ServiceMockFacade <IProjectTriggerRepository>();
            var record = new ProjectTrigger();

            mock.RepositoryMock.Setup(x => x.Get(It.IsAny <string>())).Returns(Task.FromResult(record));
            var service = new ProjectTriggerService(mock.LoggerMock.Object,
                                                    mock.RepositoryMock.Object,
                                                    mock.ModelValidatorMockFactory.ProjectTriggerModelValidatorMock.Object,
                                                    mock.BOLMapperMockFactory.BOLProjectTriggerMapperMock,
                                                    mock.DALMapperMockFactory.DALProjectTriggerMapperMock);

            ApiProjectTriggerResponseModel response = await service.Get(default(string));

            response.Should().NotBeNull();
            mock.RepositoryMock.Verify(x => x.Get(It.IsAny <string>()));
        }
        public void DoNotTriggerWhenInnerTriggerReturnsNoBuild()
        {
            var innerTriggerMock = this.mocks.StrictMock <ITrigger>();

            Expect.Call(innerTriggerMock.Fire()).Return(null);
            var factoryMock = this.mocks.StrictMock <ICruiseServerClientFactory>();
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            this.mocks.ReplayAll();
            var actual = trigger.Fire();

            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void ShouldNotTriggerOnFirstIntegrationIfDependentProjectBuildFailedAndTriggerFirstTimeIsSet()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Failure, now));
            var factoryMock      = this.InitialiseFactoryMock(clientMock);
            var trigger          = new ProjectTrigger(factoryMock)
            {
                Project          = "project",
                InnerTrigger     = innerTriggerMock,
                TriggerFirstTime = true
            };

            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void HandleSocketError()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = this.mocks.Create <CruiseServerClientBase>(MockBehavior.Strict).Object;
            var factoryMock      = this.InitialiseFactoryMock(clientMock);

            Mock.Get(clientMock).SetupSet(_clientMock => _clientMock.SessionToken = It.IsAny <string>()).Verifiable();
            Mock.Get(clientMock).Setup(_clientMock => _clientMock.GetProjectStatus())
            .Throws(new SocketException()).Verifiable();
            var trigger = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void HandleSocketError()
        {
            var innerTriggerMock = this.InitialiseTriggerMock(1);
            var clientMock       = this.mocks.StrictMock <CruiseServerClientBase>();
            var factoryMock      = this.InitialiseFactoryMock(clientMock);

            Expect.Call(clientMock.SessionToken).SetPropertyAndIgnoreArgument();
            Expect.Call(clientMock.GetProjectStatus())
            .Throw(new SocketException());
            var trigger = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            this.mocks.ReplayAll();
            var actual = trigger.Fire();

            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void ShouldTriggerOnFirstIntegrationIfDependentProjectBuildSucceededAndTriggerFirstTimeIsSet()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMock       = InitialiseClientMock(
                true,
                NewProjectStatus("project", IntegrationStatus.Success, now));
            var factoryMock = this.InitialiseFactoryMock(clientMock);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project          = "project",
                InnerTrigger     = innerTriggerMock,
                TriggerFirstTime = true
            };

            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 1);
            this.mocks.VerifyAll();
            var expected = ModificationExistRequest();

            Assert.AreEqual(expected, actual);
        }
        public void DoNotTriggerWhenDependentProjectBuildFails()
        {
            var innerTriggerMock = this.InitialiseTriggerMock(2);
            var clientMocks      = new[]
            {
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, now)),
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Failure, later))
            };
            var factoryMock = this.InitialiseFactoryMock(clientMocks);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            this.mocks.ReplayAll();
            trigger.Fire();
            var actual = trigger.Fire();

            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void DoNotTriggerIfProjectHasNotBuiltSinceLastPoll()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMocks      = new[]
            {
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, now)),
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, now))
            };
            var factoryMock = this.InitialiseFactoryMock(clientMocks);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            trigger.Fire();
            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 2);
            this.mocks.VerifyAll();
            Assert.IsNull(actual);
        }
        public void TriggerWhenDependentProjectBuildsSuccessfully()
        {
            var innerTriggerMock = this.InitialiseTriggerMock();
            var clientMocks      = new[]
            {
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, now)),
                InitialiseClientMock(true, NewProjectStatus("project", IntegrationStatus.Success, later))
            };
            var factoryMock = this.InitialiseFactoryMock(clientMocks);
            var trigger     = new ProjectTrigger(factoryMock)
            {
                Project      = "project",
                InnerTrigger = innerTriggerMock
            };

            trigger.Fire();
            var actual = trigger.Fire();

            this.InitialiseTriggerMockVerify(innerTriggerMock, 2);
            this.mocks.VerifyAll();
            var expected = ModificationExistRequest();

            Assert.AreEqual(expected, actual);
        }
 public static ProjectTriggerResource UpdateWith(this ProjectTriggerResource resource, ProjectTrigger model, string projectResourceId, IOctopusRepository repository)
 {
     resource.ProjectId = projectResourceId;
     resource.Name      = model.Identifier.Name;
     resource.Filter    = model.Filter.FromModel(repository);
     resource.Action    = model.Action.FromModel();
     return(resource);
 }
Ejemplo n.º 30
0
 public static ProjectTriggerResource UpdateWith(this ProjectTriggerResource resource, ProjectTrigger model, string projectResourceId, IOctopusRepository repository)
 {
     resource.ProjectId = projectResourceId;
     resource.Name      = model.Name;
     resource.Type      = (ProjectTriggerType)model.Type;
     UpdateProjectTriggerProperties(resource.Properties, model.Properties, repository);
     return(resource);
 }