package se.bjurr.sbcc; import static com.atlassian.bitbucket.user.UserType.SERVICE; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import static se.bjurr.sbcc.SBCCTestConstants.COMMIT_MESSAGE_NO_ISSUE; import static se.bjurr.sbcc.SbccRepositoryMergeRequestCheck.PR_REJECT_DEFAULT_MSG; import static se.bjurr.sbcc.data.SbccChangeSetBuilder.changeSetBuilder; import static se.bjurr.sbcc.settings.SbccSettings.SETTING_ALLOW_SERVICE_USERS; import static se.bjurr.sbcc.settings.SbccSettings.SETTING_CHECK_PULLREQUESTS; import static se.bjurr.sbcc.settings.SbccSettings.SETTING_CHECK_PULLREQUESTS_MESSAGE; import static se.bjurr.sbcc.settings.SbccSettings.SETTING_DRY_RUN; import static se.bjurr.sbcc.util.RefChangeBuilder.refChangeBuilder; import java.io.IOException; import org.junit.Test; public class PullRequestTest { @Test public void testThatFaultyCommitsAreAcceptedInDryRunMode() throws IOException { refChangeBuilder() .withSetting(SETTING_CHECK_PULLREQUESTS, TRUE) .withSetting(SETTING_DRY_RUN, TRUE) .withGroupAcceptingAtLeastOneJira() .withChangeSet(changeSetBuilder().withId("1").withMessage(COMMIT_MESSAGE_NO_ISSUE).build()) .build() .runPullRequest() .prWasAccepted(); } @Test public void testThatFaultyCommitsAreRejected() throws IOException { refChangeBuilder() .withSetting(SETTING_CHECK_PULLREQUESTS, TRUE) .withSetting(SETTING_DRY_RUN, FALSE) .withGroupAcceptingAtLeastOneJira() .withChangeSet(changeSetBuilder().withId("1").withMessage(COMMIT_MESSAGE_NO_ISSUE).build()) .build() .runPullRequest() .prWasRejected() .hasTrimmedPrPrintOut( "refs/heads/master e2bc4ed003 -> af35d5c1a4<br> <br> <br> 1 Tomas <my@email.com><br> >>> fixing stuff<br> <br> - You need to specity an issue<br> JIRA: ((?<!([A-Z]{1,10})-?)[A-Z]+-\\d+)<br> <br>") .hasTrimmedPrSummary(PR_REJECT_DEFAULT_MSG); } @Test public void testThatFaultyCommitsAreAcceptedIfNotCheckingPullRequests() throws IOException { refChangeBuilder() .withSetting(SETTING_CHECK_PULLREQUESTS, FALSE) .withSetting(SETTING_DRY_RUN, FALSE) .withGroupAcceptingAtLeastOneJira() .withChangeSet(changeSetBuilder().withId("1").withMessage(COMMIT_MESSAGE_NO_ISSUE).build()) .build() .runPullRequest() .prWasAccepted(); } @Test public void testThatFaultyCommitsAreAcceptedIfServiceUser() throws IOException { refChangeBuilder() .withSetting(SETTING_CHECK_PULLREQUESTS, TRUE) .withSetting(SETTING_ALLOW_SERVICE_USERS, TRUE) .withBitbucketUserType(SERVICE) .withGroupAcceptingAtLeastOneJira() .withChangeSet(changeSetBuilder().withId("1").withMessage(COMMIT_MESSAGE_NO_ISSUE).build()) .build() .runPullRequest() .prWasAccepted(); } @Test public void testThatFaultyCommitsCanBeRejectedWithCustomSummary() throws IOException { refChangeBuilder() .withSetting(SETTING_CHECK_PULLREQUESTS, TRUE) .withSetting(SETTING_CHECK_PULLREQUESTS_MESSAGE, "custom summary") .withGroupAcceptingAtLeastOneJira() .withChangeSet(changeSetBuilder().withId("1").withMessage(COMMIT_MESSAGE_NO_ISSUE).build()) .build() .runPullRequest() .prWasRejected() .hasTrimmedPrSummary("custom summary"); } }