Fix testcase

This commit is contained in:
Naoki Takezoe
2016-01-19 12:50:54 +09:00
parent 1b4c621fef
commit 206d597d9b

View File

@@ -1,14 +1,16 @@
package gitbucket.core.service package gitbucket.core.service
import gitbucket.core.util.GitSpecUtil._
import org.specs2.mutable.Specification import org.specs2.mutable.Specification
import org.eclipse.jgit.transport.ReceiveCommand import org.eclipse.jgit.transport.{ReceivePack, ReceiveCommand}
import org.eclipse.jgit.lib.ObjectId import org.eclipse.jgit.lib.ObjectId
import gitbucket.core.model.CommitState import gitbucket.core.model.CommitState
import gitbucket.core.service.ProtectedBranchService.{ProtectedBranchReceiveHook, ProtectedBranchInfo} import gitbucket.core.service.ProtectedBranchService.{ProtectedBranchReceiveHook, ProtectedBranchInfo}
import scalaz._, Scalaz._
class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with ProtectedBranchService with CommitStatusService { class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with ProtectedBranchService with CommitStatusService {
val commitHook = new ProtectedBranchReceiveHook() val receiveHook = new ProtectedBranchReceiveHook()
val now = new java.util.Date() val now = new java.util.Date()
val sha = "0c77148632618b59b6f70004e3084002be2b8804" val sha = "0c77148632618b59b6f70004e3084002be2b8804"
val sha2 = "0c77148632618b59b6f70004e3084002be2b8805" val sha2 = "0c77148632618b59b6f70004e3084002be2b8805"
@@ -50,58 +52,70 @@ class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with
} }
"getBranchProtectedReason on force push from admin" in { "getBranchProtectedReason on force push from admin" in {
withTestDB { implicit session => withTestDB { implicit session =>
withTestRepository { git =>
val rp = new ReceivePack(git.getRepository) <| { _.setAllowNonFastForwards(true) }
val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE_NONFASTFORWARD) val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE_NONFASTFORWARD)
generateNewUserWithDBRepository("user1", "repo1") generateNewUserWithDBRepository("user1", "repo1")
commitHook.hook("user1", "repo1", true, rc, "user1") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== None
enableBranchProtection("user1", "repo1", "branch", false, Nil) enableBranchProtection("user1", "repo1", "branch", false, Nil)
commitHook.hook("user1", "repo1", true, rc, "user1") must_== Some("Cannot force-push to a protected branch") receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== Some("Cannot force-push to a protected branch")
}
} }
} }
"getBranchProtectedReason on force push from othre" in { "getBranchProtectedReason on force push from othre" in {
withTestDB { implicit session => withTestDB { implicit session =>
withTestRepository { git =>
val rp = new ReceivePack(git.getRepository) <| { _.setAllowNonFastForwards(true) }
val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE_NONFASTFORWARD) val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE_NONFASTFORWARD)
generateNewUserWithDBRepository("user1", "repo1") generateNewUserWithDBRepository("user1", "repo1")
commitHook.hook("user1", "repo1", true, rc, "user2") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== None
enableBranchProtection("user1", "repo1", "branch", false, Nil) enableBranchProtection("user1", "repo1", "branch", false, Nil)
commitHook.hook("user1", "repo1", true, rc, "user2") must_== Some("Cannot force-push to a protected branch") receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== Some("Cannot force-push to a protected branch")
}
} }
} }
"getBranchProtectedReason check status on push from othre" in { "getBranchProtectedReason check status on push from othre" in {
withTestDB { implicit session => withTestDB { implicit session =>
withTestRepository { git =>
val rp = new ReceivePack(git.getRepository) <| { _.setAllowNonFastForwards(false) }
val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE) val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE)
val user1 = generateNewUserWithDBRepository("user1", "repo1") val user1 = generateNewUserWithDBRepository("user1", "repo1")
commitHook.hook("user1", "repo1", false, rc, "user2") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== None
enableBranchProtection("user1", "repo1", "branch", false, Seq("must")) enableBranchProtection("user1", "repo1", "branch", false, Seq("must"))
commitHook.hook("user1", "repo1", false, rc, "user2") must_== Some("Required status check \"must\" is expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== Some("Required status check \"must\" is expected")
enableBranchProtection("user1", "repo1", "branch", false, Seq("must", "must2")) enableBranchProtection("user1", "repo1", "branch", false, Seq("must", "must2"))
commitHook.hook("user1", "repo1", false, rc, "user2") must_== Some("2 of 2 required status checks are expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== Some("2 of 2 required status checks are expected")
createCommitStatus("user1", "repo1", sha2, "context", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "context", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user2") must_== Some("2 of 2 required status checks are expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== Some("2 of 2 required status checks are expected")
createCommitStatus("user1", "repo1", sha2, "must", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "must", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user2") must_== Some("Required status check \"must2\" is expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== Some("Required status check \"must2\" is expected")
createCommitStatus("user1", "repo1", sha2, "must2", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "must2", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user2") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user2") must_== None
}
} }
} }
"getBranchProtectedReason check status on push from admin" in { "getBranchProtectedReason check status on push from admin" in {
withTestDB { implicit session => withTestDB { implicit session =>
withTestRepository { git =>
val rp = new ReceivePack(git.getRepository) <| { _.setAllowNonFastForwards(false) }
val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE) val rc = new ReceiveCommand(ObjectId.fromString(sha), ObjectId.fromString(sha2), "refs/heads/branch", ReceiveCommand.Type.UPDATE)
val user1 = generateNewUserWithDBRepository("user1", "repo1") val user1 = generateNewUserWithDBRepository("user1", "repo1")
commitHook.hook("user1", "repo1", false, rc, "user1") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== None
enableBranchProtection("user1", "repo1", "branch", false, Seq("must")) enableBranchProtection("user1", "repo1", "branch", false, Seq("must"))
commitHook.hook("user1", "repo1", false, rc, "user1") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== None
enableBranchProtection("user1", "repo1", "branch", true, Seq("must")) enableBranchProtection("user1", "repo1", "branch", true, Seq("must"))
commitHook.hook("user1", "repo1", false, rc, "user1") must_== Some("Required status check \"must\" is expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== Some("Required status check \"must\" is expected")
enableBranchProtection("user1", "repo1", "branch", false, Seq("must", "must2")) enableBranchProtection("user1", "repo1", "branch", false, Seq("must", "must2"))
commitHook.hook("user1", "repo1", false, rc, "user1") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== None
enableBranchProtection("user1", "repo1", "branch", true, Seq("must", "must2")) enableBranchProtection("user1", "repo1", "branch", true, Seq("must", "must2"))
commitHook.hook("user1", "repo1", false, rc, "user1") must_== Some("2 of 2 required status checks are expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== Some("2 of 2 required status checks are expected")
createCommitStatus("user1", "repo1", sha2, "context", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "context", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user1") must_== Some("2 of 2 required status checks are expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== Some("2 of 2 required status checks are expected")
createCommitStatus("user1", "repo1", sha2, "must", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "must", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user1") must_== Some("Required status check \"must2\" is expected") receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== Some("Required status check \"must2\" is expected")
createCommitStatus("user1", "repo1", sha2, "must2", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha2, "must2", CommitState.SUCCESS, None, None, now, user1)
commitHook.hook("user1", "repo1", false, rc, "user1") must_== None receiveHook.preReceive("user1", "repo1", rp, rc, "user1") must_== None
}
} }
} }
} }
@@ -109,14 +123,14 @@ class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with
"administrator is owner" in { "administrator is owner" in {
withTestDB { implicit session => withTestDB { implicit session =>
generateNewUserWithDBRepository("user1", "repo1") generateNewUserWithDBRepository("user1", "repo1")
var x = ProtectedBranchInfo("user1", "repo1", true, Nil, false) val x = ProtectedBranchInfo("user1", "repo1", true, Nil, false)
x.isAdministrator("user1") must_== true x.isAdministrator("user1") must_== true
x.isAdministrator("user2") must_== false x.isAdministrator("user2") must_== false
} }
} }
"administrator is manager" in { "administrator is manager" in {
withTestDB { implicit session => withTestDB { implicit session =>
var x = ProtectedBranchInfo("grp1", "repo1", true, Nil, false) val x = ProtectedBranchInfo("grp1", "repo1", true, Nil, false)
x.createGroup("grp1", None) x.createGroup("grp1", None)
generateNewAccount("user1") generateNewAccount("user1")
generateNewAccount("user2") generateNewAccount("user2")
@@ -131,7 +145,7 @@ class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with
"unSuccessedContexts" in { "unSuccessedContexts" in {
withTestDB { implicit session => withTestDB { implicit session =>
val user1 = generateNewUserWithDBRepository("user1", "repo1") val user1 = generateNewUserWithDBRepository("user1", "repo1")
var x = ProtectedBranchInfo("user1", "repo1", true, List("must"), false) val x = ProtectedBranchInfo("user1", "repo1", true, List("must"), false)
x.unSuccessedContexts(sha) must_== Set("must") x.unSuccessedContexts(sha) must_== Set("must")
createCommitStatus("user1", "repo1", sha, "context", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha, "context", CommitState.SUCCESS, None, None, now, user1)
x.unSuccessedContexts(sha) must_== Set("must") x.unSuccessedContexts(sha) must_== Set("must")
@@ -148,7 +162,7 @@ class ProtectedBranchServiceSpec extends Specification with ServiceSpecBase with
"unSuccessedContexts when empty" in { "unSuccessedContexts when empty" in {
withTestDB { implicit session => withTestDB { implicit session =>
val user1 = generateNewUserWithDBRepository("user1", "repo1") val user1 = generateNewUserWithDBRepository("user1", "repo1")
var x = ProtectedBranchInfo("user1", "repo1", true, Nil, false) val x = ProtectedBranchInfo("user1", "repo1", true, Nil, false)
val sha = "0c77148632618b59b6f70004e3084002be2b8804" val sha = "0c77148632618b59b6f70004e3084002be2b8804"
x.unSuccessedContexts(sha) must_== Nil x.unSuccessedContexts(sha) must_== Nil
createCommitStatus("user1", "repo1", sha, "context", CommitState.SUCCESS, None, None, now, user1) createCommitStatus("user1", "repo1", sha, "context", CommitState.SUCCESS, None, None, now, user1)