diff --git a/src/test/scala/gitbucket/core/service/IssuesServiceSpec.scala b/src/test/scala/gitbucket/core/service/IssuesServiceSpec.scala index 9daa751..7ac058e 100644 --- a/src/test/scala/gitbucket/core/service/IssuesServiceSpec.scala +++ b/src/test/scala/gitbucket/core/service/IssuesServiceSpec.scala @@ -33,7 +33,7 @@ assert(getCommitStatues(1) == None) - val (is2, pr2) = generateNewPullRequest("user1/repo1/master", "user1/repo1/feature1") + val (is2, pr2) = generateNewPullRequest("user1/repo1/master", "user1/repo1/feature1", loginUser = "root") assert(pr2.issueId == 2) // if there are no statuses, state is none @@ -79,7 +79,7 @@ assert(getCommitStatues(2) == Some(CommitStatusInfo(2, 1, None, None, None, None))) // get only statuses in query issues - val (is3, pr3) = generateNewPullRequest("user1/repo1/master", "user1/repo1/feature3") + val (is3, pr3) = generateNewPullRequest("user1/repo1/master", "user1/repo1/feature3", loginUser = "root") val cs4 = dummyService.createCommitStatus( "user1", "repo1", diff --git a/src/test/scala/gitbucket/core/service/PullRequestServiceSpec.scala b/src/test/scala/gitbucket/core/service/PullRequestServiceSpec.scala index 2f1db6d..9cd3c20 100644 --- a/src/test/scala/gitbucket/core/service/PullRequestServiceSpec.scala +++ b/src/test/scala/gitbucket/core/service/PullRequestServiceSpec.scala @@ -31,13 +31,13 @@ generateNewUserWithDBRepository("user1", "repo1") generateNewUserWithDBRepository("user1", "repo2") generateNewUserWithDBRepository("user2", "repo1") - generateNewPullRequest("user1/repo1/master", "user1/repo1/head2") // not target branch - generateNewPullRequest("user1/repo1/head1", "user1/repo1/master") // not target branch ( swap from, to ) - generateNewPullRequest("user1/repo1/master", "user2/repo1/head1") // other user - generateNewPullRequest("user1/repo1/master", "user1/repo2/head1") // other repository - val r1 = swap(generateNewPullRequest("user1/repo1/master2", "user1/repo1/head1")) - val r2 = swap(generateNewPullRequest("user1/repo1/master", "user1/repo1/head1")) - val r3 = swap(generateNewPullRequest("user1/repo1/master4", "user1/repo1/head1")) + generateNewPullRequest("user1/repo1/master", "user1/repo1/head2", loginUser = "root") // not target branch + generateNewPullRequest("user1/repo1/head1", "user1/repo1/master", loginUser = "root") // not target branch ( swap from, to ) + generateNewPullRequest("user1/repo1/master", "user2/repo1/head1", loginUser = "root") // other user + generateNewPullRequest("user1/repo1/master", "user1/repo2/head1", loginUser = "root") // other repository + val r1 = swap(generateNewPullRequest("user1/repo1/master2", "user1/repo1/head1", loginUser = "root")) + val r2 = swap(generateNewPullRequest("user1/repo1/master", "user1/repo1/head1", loginUser = "root")) + val r3 = swap(generateNewPullRequest("user1/repo1/master4", "user1/repo1/head1", loginUser = "root")) assert(getPullRequestFromBranch("user1", "repo1", "head1", "master") == Some(r2)) updateClosed("user1", "repo1", r2._1.issueId, true) assert(Seq(r1, r2).contains(getPullRequestFromBranch("user1", "repo1", "head1", "master").get)) diff --git a/src/test/scala/gitbucket/core/service/ServiceSpecBase.scala b/src/test/scala/gitbucket/core/service/ServiceSpecBase.scala index 4842d66..97a7cc4 100644 --- a/src/test/scala/gitbucket/core/service/ServiceSpecBase.scala +++ b/src/test/scala/gitbucket/core/service/ServiceSpecBase.scala @@ -1,7 +1,7 @@ package gitbucket.core.service import gitbucket.core.GitBucketCoreModule -import gitbucket.core.util.{DatabaseConfig, FileUtil} +import gitbucket.core.util.{DatabaseConfig, Directory, FileUtil, JGitUtil} import gitbucket.core.util.SyntaxSugars._ import io.github.gitbucket.solidbase.Solidbase import liquibase.database.core.H2Database @@ -15,10 +15,48 @@ import java.io.File import gitbucket.core.controller.Context +import gitbucket.core.service.SystemSettingsService.{Ssh, SystemSettings} +import javax.servlet.http.{HttpServletRequest, HttpSession} +import org.scalatest.mockito.MockitoSugar +import org.mockito.Mockito._ import scala.util.Random -trait ServiceSpecBase { +trait ServiceSpecBase extends MockitoSugar { + + val request = mock[HttpServletRequest] + val session = mock[HttpSession] + when(request.getRequestURL).thenReturn(new StringBuffer("http://localhost:8080/path.html")) + when(request.getRequestURI).thenReturn("/path.html") + when(request.getContextPath).thenReturn("") + when(request.getSession).thenReturn(session) + + private def createSystemSettings() = + SystemSettings( + baseUrl = None, + information = None, + allowAccountRegistration = false, + allowAnonymousAccess = true, + isCreateRepoOptionPublic = true, + gravatar = false, + notification = false, + activityLogLimit = None, + ssh = Ssh( + enabled = false, + sshHost = None, + sshPort = None + ), + useSMTP = false, + smtp = None, + ldapAuthentication = false, + ldap = None, + oidcAuthentication = false, + oidc = None, + skinName = "skin-blue", + showMailAddress = false, + pluginNetworkInstall = false, + pluginProxy = None + ) def withTestDB[A](action: (Session) => A): A = { FileUtil.withTmpDir(new File(FileUtils.getTempDirectory(), Random.alphanumeric.take(10).mkString)) { dir => @@ -46,10 +84,24 @@ lazy val dummyService = new RepositoryService with AccountService with ActivityService with IssuesService with MergeService with PullRequestService with CommitsService with CommitStatusService with LabelsService with MilestonesService with PrioritiesService with WebHookService with WebHookPullRequestService - with WebHookPullRequestReviewCommentService {} + with WebHookPullRequestReviewCommentService { + override def fetchAsPullRequest( + userName: String, + repositoryName: String, + requestUserName: String, + requestRepositoryName: String, + requestBranch: String, + issueId: Int + ): Unit = {} + } def generateNewUserWithDBRepository(userName: String, repositoryName: String)(implicit s: Session): Account = { val ac = AccountService.getAccountByUserName(userName).getOrElse(generateNewAccount(userName)) + val dir = Directory.getRepositoryDir(userName, repositoryName) + if (dir.exists()) { + FileUtils.deleteQuietly(dir) + } + JGitUtil.initRepository(dir) dummyService.insertRepository(repositoryName, userName, None, false) ac } @@ -70,9 +122,10 @@ ) } - def generateNewPullRequest(base: String, request: String, loginUser: String = null)( + def generateNewPullRequest(base: String, request: String, loginUser: String)( implicit s: Session ): (Issue, PullRequest) = { + implicit val context = Context(createSystemSettings(), None, this.request) val Array(baseUserName, baseRepositoryName, baesBranch) = base.split("/") val Array(requestUserName, requestRepositoryName, requestBranch) = request.split("/") val issueId = generateNewIssue(baseUserName, baseRepositoryName, Option(loginUser).getOrElse(requestUserName)) diff --git a/src/test/scala/gitbucket/core/service/WebHookServiceSpec.scala b/src/test/scala/gitbucket/core/service/WebHookServiceSpec.scala index 92a4aa3..5f151ad 100644 --- a/src/test/scala/gitbucket/core/service/WebHookServiceSpec.scala +++ b/src/test/scala/gitbucket/core/service/WebHookServiceSpec.scala @@ -19,7 +19,7 @@ val (issue3, pullreq3) = generateNewPullRequest("user3/repo3/master3", "user2/repo2/master2", loginUser = "root") val (issue32, pullreq32) = generateNewPullRequest("user3/repo3/master32", "user2/repo2/master2", loginUser = "root") - generateNewPullRequest("user2/repo2/master2", "user1/repo1/master2") + generateNewPullRequest("user2/repo2/master2", "user1/repo1/master2", loginUser = "root") service.addWebHook("user1", "repo1", "webhook1-1", Set(WebHook.PullRequest), WebHookContentType.FORM, Some("key")) service.addWebHook("user1", "repo1", "webhook1-2", Set(WebHook.PullRequest), WebHookContentType.FORM, Some("key")) service.addWebHook("user2", "repo2", "webhook2-1", Set(WebHook.PullRequest), WebHookContentType.FORM, Some("key"))