This commit is contained in:
shimamoto
2018-12-27 20:39:38 +09:00
parent dcf2f1dfdf
commit 9e8015f475
3 changed files with 140 additions and 27 deletions

View File

@@ -51,7 +51,7 @@ object ApiRepository {
ApiRepository(repositoryInfo.repository, owner, forkedCount = repositoryInfo.forkedCount) ApiRepository(repositoryInfo.repository, owner, forkedCount = repositoryInfo.forkedCount)
def apply(repositoryInfo: RepositoryInfo, owner: Account): ApiRepository = def apply(repositoryInfo: RepositoryInfo, owner: Account): ApiRepository =
this(repositoryInfo.repository, ApiUser(owner)) this(repositoryInfo, ApiUser(owner))
def forWebhookPayload(repositoryInfo: RepositoryInfo, owner: ApiUser): ApiRepository = def forWebhookPayload(repositoryInfo: RepositoryInfo, owner: ApiUser): ApiRepository =
ApiRepository(repositoryInfo.repository, owner, forkedCount = repositoryInfo.forkedCount, urlIsHtmlUrl = true) ApiRepository(repositoryInfo.repository, owner, forkedCount = repositoryInfo.forkedCount, urlIsHtmlUrl = true)

View File

@@ -2,8 +2,9 @@ package gitbucket.core.api
import java.util.{Base64, Calendar, Date, TimeZone} import java.util.{Base64, Calendar, Date, TimeZone}
import gitbucket.core.model.Account import gitbucket.core.model.{Account, Repository, RepositoryOptions}
import gitbucket.core.util.JGitUtil.{CommitInfo, DiffInfo} import gitbucket.core.service.RepositoryService.RepositoryInfo
import gitbucket.core.util.JGitUtil.{CommitInfo, DiffInfo, TagInfo}
import gitbucket.core.util.RepositoryName import gitbucket.core.util.RepositoryName
import org.eclipse.jgit.diff.DiffEntry.ChangeType import org.eclipse.jgit.diff.DiffEntry.ChangeType
@@ -42,18 +43,56 @@ object ApiSpecModels {
val sha1 = "6dcb09b5b57875f334f61aebed695e2e4193db5e" val sha1 = "6dcb09b5b57875f334f61aebed695e2e4193db5e"
val repo1Name = RepositoryName("octocat/Hello-World") val repo1Name = RepositoryName("octocat/Hello-World")
val repository = Repository(
userName = repo1Name.owner,
repositoryName = repo1Name.name,
isPrivate = false,
description = Some("This your first repo!"),
defaultBranch = "master",
registeredDate = date1,
updatedDate = date1,
lastActivityDate = date1,
originUserName = Some("octopus plus cat"),
originRepositoryName = Some("Hello World"),
parentUserName = Some("github"),
parentRepositoryName = Some("Hello-World"),
options = RepositoryOptions(
issuesOption = "PUBLIC",
externalIssuesUrl = Some("https://external.com/gitbucket"),
wikiOption = "PUBLIC",
externalWikiUrl = Some("https://external.com/gitbucket"),
allowFork = true,
mergeOptions = "merge-commit,squash,rebase",
defaultMergeOption = "merge-commit"
)
)
val repositoryInfo = RepositoryInfo(
owner = repo1Name.owner,
name = repo1Name.name,
repository = repository,
issueCount = 1,
pullCount = 1,
forkedCount = 1,
branchList = Seq("master", "develop"),
tags = Seq(
TagInfo(name = "v1.0", time = date("2015-05-05T23:40:27Z"), id = "id1", message = "1.0 released"),
TagInfo(name = "v2.0", time = date("2016-05-05T23:40:27Z"), id = "id2", message = "2.0 released")
),
managers = Seq("myboss")
)
val apiUser = ApiUser(account) val apiUser = ApiUser(account)
val repository = ApiRepository( val apiRepository = ApiRepository(
name = repo1Name.name, repository = repository,
full_name = repo1Name.fullName, owner = apiUser,
description = "This your first repo!", forkedCount = repositoryInfo.forkedCount,
watchers = 0, watchers = 0,
forks = 0, urlIsHtmlUrl = false
`private` = false, )
default_branch = "master",
owner = apiUser // TODO ------------
)(urlIsHtmlUrl = false)
val apiCommitStatus = ApiCommitStatus( val apiCommitStatus = ApiCommitStatus(
created_at = date1, created_at = date1,
@@ -112,7 +151,7 @@ object ApiSpecModels {
sha = sha1, sha = sha1,
total_count = 2, total_count = 2,
statuses = List(apiCommitStatus), statuses = List(apiCommitStatus),
repository = repository repository = apiRepository
) )
val apiLabel = ApiLabel( val apiLabel = ApiLabel(
@@ -147,8 +186,8 @@ object ApiSpecModels {
state = "open", state = "open",
updated_at = date1, updated_at = date1,
created_at = date1, created_at = date1,
head = ApiPullRequest.Commit(sha = sha1, ref = "new-topic", repo = repository)("octocat"), head = ApiPullRequest.Commit(sha = sha1, ref = "new-topic", repo = apiRepository)("octocat"),
base = ApiPullRequest.Commit(sha = sha1, ref = "master", repo = repository)("octocat"), base = ApiPullRequest.Commit(sha = sha1, ref = "master", repo = apiRepository)("octocat"),
mergeable = None, mergeable = None,
merged = false, merged = false,
merged_at = Some(date1), merged_at = Some(date1),

View File

@@ -1,38 +1,112 @@
package gitbucket.core.service package gitbucket.core.service
import gitbucket.core.api.JsonFormat
import gitbucket.core.service.WebHookService._
import org.json4s.jackson.JsonMethods.parse import org.json4s.jackson.JsonMethods.parse
import org.json4s._ import org.json4s._
import org.scalatest.FunSuite import org.scalatest.{Assertion, FunSuite}
class WebHookJsonFormatSpec extends FunSuite { class WebHookJsonFormatSpec extends FunSuite {
import gitbucket.core.api.ApiSpecModels._ import gitbucket.core.api.ApiSpecModels._
test("WebHookCreatePayload"){ // TODO move to ApiSpecModels?
val jsonUser = """{
|"login":"octocat",
|"email":"octocat@example.com",
|"type":"User",
|"site_admin":false,
|"created_at":"2011-04-14T16:00:49Z",
|"id":0,
|"url":"http://gitbucket.exmple.com/api/v3/users/octocat",
|"html_url":"http://gitbucket.exmple.com/octocat",
|"avatar_url":"http://gitbucket.exmple.com/octocat/_avatar"
|}""".stripMargin
val jsonRepository = s"""{
|"name":"Hello-World",
|"full_name":"octocat/Hello-World",
|"description":"This your first repo!",
|"watchers":0,
|"forks":1,
|"private":false,
|"default_branch":"master",
|"owner":$jsonUser,
|"id":0,
|"forks_count":1,
|"watchers_count":0,
|"url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World",
|"http_url":"http://gitbucket.exmple.com/git/octocat/Hello-World.git",
|"clone_url":"http://gitbucket.exmple.com/git/octocat/Hello-World.git",
|"html_url":"http://gitbucket.exmple.com/octocat/Hello-World"
|}""".stripMargin
private def assert(payload: WebHookPayload, expected: String): Assertion = {
val json = JsonFormat(payload)
assert(json == expected.replaceAll("\n", ""))
}
test("WebHookCreatePayload") {
fail("TODO") fail("TODO")
} }
test("WebHookPushPayload"){ test("WebHookPushPayload") {
fail("TODO") fail("TODO")
} }
test("WebHookIssuesPayload"){ test("WebHookIssuesPayload") {
val payload = WebHookIssuesPayload(
action = "edited",
number = 1,
repository = apiRepository,
issue = apiIssue,
sender = apiUser
)
val expected = s"""{
|"action":"edited",
|"number":1,
|"repository":$jsonRepository,
|"issue":{
|"number":1347,
|"title":"Found a bug",
|"user":$jsonUser,
|"labels":[{"name":"bug","color":"f29513","url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/labels/bug"}],
|"state":"open",
|"created_at":"2011-04-14T16:00:49Z",
|"updated_at":"2011-04-14T16:00:49Z",
|"body":"I'm having a problem with this.",
|"id":0,
|"comments_url":"http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/issues/1347/comments",
|"html_url":"http://gitbucket.exmple.com/octocat/Hello-World/issues/1347"},
|"sender":$jsonUser
|}""".stripMargin
assert(payload, expected)
}
test("WebHookPullRequestPayload") {
fail("TODO") fail("TODO")
} }
test("WebHookPullRequestPayload"){ test("WebHookIssueCommentPayload") {
fail("TODO") fail("TODO")
} }
test("WebHookIssueCommentPayload"){ test("WebHookPullRequestReviewCommentPayload") {
fail("TODO") fail("TODO")
} }
test("WebHookPullRequestReviewCommentPayload"){ test("WebHookGollumPayload") {
fail("TODO") val payload = WebHookGollumPayload(
} pages = Seq(("edited", "Home", sha1)),
repository = repositoryInfo,
test("WebHookGollumPayload"){ repositoryUser = account,
fail("TODO") sender = account
)
val expected = s"""{
|"pages":[{"page_name":"Home","title":"Home","action":"edited","sha":"6dcb09b5b57875f334f61aebed695e2e4193db5e","html_url":"http://gitbucket.exmple.com/octocat/Hello-World/wiki/Home"}],
|"repository":$jsonRepository,
|"sender":$jsonUser
|}""".stripMargin
assert(payload, expected)
} }
} }