public EnsurePullDogRepositoryCommand( PullDogSettings pullDogSettings, string repositoryHandle) { this.PullDogSettings = pullDogSettings; this.RepositoryHandle = repositoryHandle; }
public AddPullDogToGitHubRepositoriesCommand( long gitHubInstallationId, PullDogSettings pullDogSettings, long[] gitHubRepositoryIds) { this.GitHubInstallationId = gitHubInstallationId; this.PullDogSettings = pullDogSettings; this.GitHubRepositoryIds = gitHubRepositoryIds; }
public WebhookPayloadContext( WebhookPayload payload, PullDogSettings settings, PullDogRepository repository, PullDogPullRequest pullRequest) { this.Payload = payload; this.Settings = settings; this.Repository = repository; this.PullRequest = pullRequest; }
public async Task Handle_ValidConfigurationCommitPayloadWithValidConfigurationFileAndRepositoriesToRemove_RemovesRepositoriesFromInstallation() { //Arrange var settings = new PullDogSettings(); var fakeMediator = Substitute.For <IMediator>(); fakeMediator .Send(Arg.Is <GetPullDogSettingsByGitHubInstallationIdQuery>(args => args.InstallationId == 1338)) .Returns(settings); var handler = new InstallationConfigurationPayloadHandler(fakeMediator); //Act await handler.HandleAsync(new WebhookPayload() { Pusher = new UserPayload(), Installation = new InstallationPayload() { Id = 1338 }, RepositoriesRemoved = new[] { new InstallationRepositoryReferencePayload() { Id = 1339 }, new InstallationRepositoryReferencePayload() { Id = 1340 } } }); //Assert await fakeMediator .Received(2) .Send(Arg.Any <DeletePullDogRepositoryCommand>()); await fakeMediator .Received(1) .Send(Arg.Is <DeletePullDogRepositoryCommand>(args => args.Handle == "1339")); await fakeMediator .Received(1) .Send(Arg.Is <DeletePullDogRepositoryCommand>(args => args.Handle == "1340")); }
public async Task Handle_ValidConfigurationCommitPayloadWithValidConfigurationFileAndRepositoriesToAdd_AddsRepositoriesToInstallation() { //Arrange var settings = new PullDogSettings(); var fakeMediator = Substitute.For <IMediator>(); fakeMediator .Send(Arg.Is <GetPullDogSettingsByGitHubInstallationIdQuery>(args => args.InstallationId == 1338)) .Returns(settings); var handler = new InstallationConfigurationPayloadHandler(fakeMediator); //Act await handler.HandleAsync(new WebhookPayload() { Pusher = new UserPayload(), Installation = new InstallationPayload() { Id = 1338 }, RepositoriesAdded = new [] { new InstallationRepositoryReferencePayload() { Id = 1339 }, new InstallationRepositoryReferencePayload() { Id = 1340 } } }); //Assert await fakeMediator .Received(1) .Send(Arg.Is <AddPullDogToGitHubRepositoriesCommand>(args => args.PullDogSettings == settings && args.GitHubInstallationId == 1338 && args.GitHubRepositoryIds.Contains(1339) && args.GitHubRepositoryIds.Contains(1340))); }
public async Task Handle_ExistingPullDogRepositoryFound_ReturnsExistingRepository() { //Arrange await using var environment = await IntegrationTestEnvironment.CreateAsync(); var pullDogSettings = new PullDogSettings() { User = new User() { StripeCustomerId = "dummy" }, PlanId = "dummy", EncryptedApiKey = Array.Empty <byte>() }; var pullDogRepository = new PullDogRepository() { Handle = "some-repository-handle", PullDogSettings = pullDogSettings }; await environment.WithFreshDataContext(async dataContext => { await dataContext.PullDogRepositories.AddAsync(pullDogRepository); }); //Act var repository = await environment.Mediator.Send(new EnsurePullDogRepositoryCommand( pullDogSettings, "some-repository-handle")); //Assert Assert.IsNotNull(repository); await environment.WithFreshDataContext(async dataContext => { Assert.AreEqual(1, await dataContext.PullDogRepositories.CountAsync()); }); }
private async Task ReportProvisioningToSlackAsync(ProvisionPullDogEnvironmentCommand request, PullDogSettings settings) { await this.slackClient.PostAsync( new SlackMessage() { Text = "A Pull Dog instance is being provisioned.", Attachments = new List <SlackAttachment>() { new SlackAttachment() { Fields = new List <SlackField>() { new SlackField() { Title = "Repository handle", Value = request.Repository.Handle, Short = true }, new SlackField() { Title = "Pull request handle", Value = request.PullRequestHandle, Short = true }, new SlackField() { Title = "Installation ID", Value = request.Repository.GitHubInstallationId.ToString(), Short = true } } } } }); }