public async Task ReceievePullRequestReviewChangesRequestedEvent_AllTestsPassed_DoNothing() { var owner = Guid.NewGuid().ToString(); var repo = Guid.NewGuid().ToString(); var payloadString = await File.ReadAllTextAsync("../../../DummyEvents/ReviewPullRequest.json"); var payload = JsonConvert.DeserializeObject <dynamic>(payloadString); payload["repository"]["name"] = repo; payload["repository"]["owner"]["login"] = owner; payload["pull_request"]["number"] = PR_ID; payload["review"]["state"] = "CHANGES_REQUESTED"; // Mock github var mergePrCallId = await MockMergeGithubCallHelper.MockMergeCall(owner, repo, PR_ID); // insert to DB with all checks passed await checkListsCollection.InsertWithDefaultChecks(owner, repo); await mergeRequestsCollection.InsertWithTestChecksSuccessAndMergeCommand(owner, repo, PR_ID); await MockReviewGithubCallHelper.MockAllReviewsPassedResponses(owner, repo, PR_ID); // ACTION await SendWebhookRequest("pull_request_review", JsonConvert.SerializeObject(payload)); // ASSERT var mergePrCall = await GetCall(mergePrCallId); Assert.False(mergePrCall.HasBeenMade, "pr should not have been merged"); var mergeRequest = await mergeRequestsCollection.Collection.Find(d => d["Owner"] == owner && d["Repo"] == repo && d["PrId"] == PR_ID).FirstAsync(); Assert.NotNull(mergeRequest); }
public async Task PushEvent_OnPullRequestBranch_StrictMergePolicy_RemoveChecksAndResolveMiroCheck() { var owner = Guid.NewGuid().ToString(); var repo = Guid.NewGuid().ToString(); var branchName = Guid.NewGuid().ToString(); var oldSha = Guid.NewGuid().ToString(); var sha = Guid.NewGuid().ToString(); // Load checks in DB await repoConfigurationCollection.Insert(owner, repo, "oldest", "whitelist-strict"); await checkListsCollection.InsertWithDefaultChecks(owner, repo); await mergeRequestsCollection.InsertWithTestChecksSuccessAndMergeCommand(owner, repo, PR_ID, branchName, oldSha); // Issue Push event var payloadString = await File.ReadAllTextAsync("../../../DummyEvents/Push.json"); var payload = JsonConvert.DeserializeObject <dynamic>(payloadString); payload["ref"] = $"refs/heads/{branchName}"; payload["after"] = sha; payload["repository"]["name"] = repo; payload["repository"]["owner"]["login"] = owner; // Mock github call var miroMergeCheckCallId = await MockGithubCall("post", StatusCheckUrlFor(owner, repo, sha), "{}", false); // Action await SendWebhookRequest("push", JsonConvert.SerializeObject(payload)); // Assert var miroMergeCheckCall = await GetCall(miroMergeCheckCallId); var mergeRequest = await mergeRequestsCollection.Collection.Find(d => d["Owner"] == owner && d["Repo"] == repo && d["PrId"] == PR_ID).FirstAsync(); Assert.True(miroMergeCheckCall.HasBeenMade, "call to resolve miro check should have been made"); Assert.Empty((BsonArray)mergeRequest["Checks"]); Assert.Equal(sha, mergeRequest["Sha"]); }