package se.bjurr.sbcc;
import static com.atlassian.bitbucket.repository.RefChangeType.DELETE;
import static se.bjurr.sbcc.SBCCTestConstants.COMMIT_MESSAGE_NO_ISSUE;
import static se.bjurr.sbcc.data.SbccChangeSetBuilder.changeSetBuilder;
import static se.bjurr.sbcc.settings.SbccSettings.SETTING_BRANCHES;
import static se.bjurr.sbcc.settings.SbccSettings.SETTING_BRANCH_REJECTION_REGEXP;
import static se.bjurr.sbcc.settings.SbccSettings.SETTING_BRANCH_REJECTION_REGEXP_MESSAGE;
import static se.bjurr.sbcc.util.RefChangeBuilder.refChangeBuilder;
import java.io.IOException;
import org.junit.Test;
public class BranchesTest {
@Test
public void testThatBitbucketUserVariableCanBeUsedToAcceptCommit() throws IOException {
refChangeBuilder() //
.withBitbucketUserSlug("tomasbjerre")
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/${BITBUCKET_USER_SLUG}/.*$") //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok") //
.withRefId("/ref/tomasbjerre/feature") //
.build() //
.run() //
.wasAccepted();
}
@Test
public void testThatBitbucketUserVariableCanBeUsedToRejectCommit() throws IOException {
refChangeBuilder() //
.withBitbucketUserSlug("tomasbjerre")
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/${BITBUCKET_USER_SLUG}/.*$") //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok") //
.withRefId("/ref/tomas/feature") //
.build() //
.run() //
.hasTrimmedFlatOutput(
"/ref/tomas/feature e2bc4ed003 -> af35d5c1a4 - Branch: /ref/tomas/feature, /ref/tomasbjerre/.*$ not ok") //
.wasRejected();
}
@Test
public void testThatBranchCanBeAcceptedByRegexp() throws IOException {
refChangeBuilder() //
.withRefId("/ref/feature") //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/(master|feature)$") //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok") //
.build() //
.run() //
.hasNoOutput() //
.wasAccepted();
}
@Test
public void testThatBranchCanBeRejectedByRegexp() throws IOException {
refChangeBuilder()
.withRefId("/ref/feeture")
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build())
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/(master|feature)$")
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok")
.build()
.run()
.hasTrimmedFlatOutput(
"/ref/feeture e2bc4ed003 -> af35d5c1a4 - Branch: /ref/feeture, /ref/(master|feature)$ not ok") //
.wasRejected();
}
@Test
public void testThatBranchCanBeRejectedByRegexpEvenIfNoCommitsArePushed() throws IOException {
refChangeBuilder()
.withRefId("/ref/feeture")
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/(master|feature)$")
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok")
.build()
.run()
.hasTrimmedFlatOutput(
"/ref/feeture e2bc4ed003 -> af35d5c1a4 - Branch: /ref/feeture, /ref/(master|feature)$ not ok") //
.wasRejected();
}
@Test
public void testThatBranchCanBeRejectedByRegexpEvenIfNoCommitsArePushedUnlessDelete()
throws IOException {
refChangeBuilder() //
.withRefId("/ref/feeture") //
.withType(DELETE) //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP, "/ref/(master|feature)$") //
.withSetting(SETTING_BRANCH_REJECTION_REGEXP_MESSAGE, "not ok") //
.build() //
.run() //
.wasAccepted();
}
@Test
public void testThatEmptyIsNotIgnoringRefsMaster() throws IOException {
refChangeBuilder() //
.withGroupAcceptingAtLeastOneJira() //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCHES, "") //
.withRefId("/refs/master") //
.build() //
.run() //
.wasRejected();
}
@Test
public void testThatRegexpAnyMasterAnyIsIgnoredForRefsFeature() throws IOException {
refChangeBuilder() //
.withGroupAcceptingAtLeastOneJira() //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCHES, ".*master.*") //
.withRefId("/refs/feature") //
.build() //
.run() //
.wasAccepted();
}
@Test
public void testThatRegexpAnyMasterAnyIsNotIgnoredForRefsMaster() throws IOException {
refChangeBuilder() //
.withGroupAcceptingAtLeastOneJira() //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCHES, ".*master.*") //
.withRefId("/refs/master") //
.build() //
.run() //
.wasRejected();
}
@Test
public void testThatRegexpAnythingButRelAnyIsIgnoredForRefsRel() throws IOException {
refChangeBuilder() //
.withGroupAcceptingAtLeastOneJira() //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCHES, "^/refs/((?!rel).).*") //
.withRefId("/refs/rel_20150101") //
.build() //
.run() //
.wasAccepted();
}
@Test
public void testThatRegexpAnythingButRelAnyIsNotIgnoredForRefsDev() throws IOException {
refChangeBuilder() //
.withGroupAcceptingAtLeastOneJira() //
.withChangeSet(
changeSetBuilder() //
.withId("1") //
.withMessage(COMMIT_MESSAGE_NO_ISSUE) //
.build()) //
.withSetting(SETTING_BRANCHES, "^/refs/((?!rel).).*") //
.withRefId("/refs/dev_20150101") //
.build() //
.run() //
.wasRejected();
}
}