Beispiel #1
0
 public EnsurePullDogRepositoryCommand(
     PullDogSettings pullDogSettings,
     string repositoryHandle)
 {
     this.PullDogSettings  = pullDogSettings;
     this.RepositoryHandle = repositoryHandle;
 }
Beispiel #2
0
 public AddPullDogToGitHubRepositoriesCommand(
     long gitHubInstallationId,
     PullDogSettings pullDogSettings,
     long[] gitHubRepositoryIds)
 {
     this.GitHubInstallationId = gitHubInstallationId;
     this.PullDogSettings      = pullDogSettings;
     this.GitHubRepositoryIds  = gitHubRepositoryIds;
 }
Beispiel #3
0
 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
                     }
                 }
             }
         }
     });
 }