mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 14:05:52 +01:00
Separate models from JSON serialization specs
This commit is contained in:
170
src/test/scala/gitbucket/core/api/ApiSpecModels.scala
Normal file
170
src/test/scala/gitbucket/core/api/ApiSpecModels.scala
Normal file
@@ -0,0 +1,170 @@
|
||||
package gitbucket.core.api
|
||||
|
||||
import java.util.{Calendar, TimeZone, Date}
|
||||
|
||||
import gitbucket.core.util.RepositoryName
|
||||
|
||||
object ApiSpecModels {
|
||||
|
||||
implicit val context = JsonFormat.Context("http://gitbucket.exmple.com", None)
|
||||
|
||||
val date1 = {
|
||||
val d = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
|
||||
d.set(2011, 3, 14, 16, 0, 49)
|
||||
d.getTime
|
||||
}
|
||||
|
||||
def date(date: String): Date = {
|
||||
val f = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
|
||||
f.setTimeZone(TimeZone.getTimeZone("UTC"))
|
||||
f.parse(date)
|
||||
}
|
||||
|
||||
val sha1 = "6dcb09b5b57875f334f61aebed695e2e4193db5e"
|
||||
val repo1Name = RepositoryName("octocat/Hello-World")
|
||||
|
||||
val apiUser = ApiUser(
|
||||
login = "octocat",
|
||||
email = "octocat@example.com",
|
||||
`type` = "User",
|
||||
site_admin = false,
|
||||
created_at = date1
|
||||
)
|
||||
|
||||
val repository = ApiRepository(
|
||||
name = repo1Name.name,
|
||||
full_name = repo1Name.fullName,
|
||||
description = "This your first repo!",
|
||||
watchers = 0,
|
||||
forks = 0,
|
||||
`private` = false,
|
||||
default_branch = "master",
|
||||
owner = apiUser
|
||||
)(urlIsHtmlUrl = false)
|
||||
|
||||
val apiCommitStatus = ApiCommitStatus(
|
||||
created_at = date1,
|
||||
updated_at = date1,
|
||||
state = "success",
|
||||
target_url = Some("https://ci.example.com/1000/output"),
|
||||
description = Some("Build has completed successfully"),
|
||||
id = 1,
|
||||
context = "Default",
|
||||
creator = apiUser
|
||||
)(sha1, repo1Name)
|
||||
|
||||
val apiCommit = ApiCommit(
|
||||
id = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
message = "Update README.md",
|
||||
timestamp = date1,
|
||||
added = Nil,
|
||||
removed = Nil,
|
||||
modified = List("README.md"),
|
||||
author = ApiPersonIdent("baxterthehacker", "baxterthehacker@users.noreply.github.com", date1),
|
||||
committer = ApiPersonIdent("baxterthehacker", "baxterthehacker@users.noreply.github.com", date1)
|
||||
)(RepositoryName("baxterthehacker", "public-repo"), true)
|
||||
|
||||
val apiComment = ApiComment(
|
||||
id = 1,
|
||||
user = apiUser,
|
||||
body = "Me too",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), 100, false)
|
||||
|
||||
val apiCommentPR = ApiComment(
|
||||
id = 1,
|
||||
user = apiUser,
|
||||
body = "Me too",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), 100, true)
|
||||
|
||||
val apiPersonIdent = ApiPersonIdent("Monalisa Octocat", "support@example.com", date1)
|
||||
|
||||
val apiCommitListItem = ApiCommitListItem(
|
||||
sha = sha1,
|
||||
commit = ApiCommitListItem.Commit(
|
||||
message = "Fix all the bugs",
|
||||
author = apiPersonIdent,
|
||||
committer = apiPersonIdent
|
||||
)(sha1, repo1Name),
|
||||
author = Some(apiUser),
|
||||
committer = Some(apiUser),
|
||||
parents = Seq(ApiCommitListItem.Parent("6dcb09b5b57875f334f61aebed695e2e4193db5e")(repo1Name))
|
||||
)(repo1Name)
|
||||
|
||||
val apiCombinedCommitStatus = ApiCombinedCommitStatus(
|
||||
state = "success",
|
||||
sha = sha1,
|
||||
total_count = 2,
|
||||
statuses = List(apiCommitStatus),
|
||||
repository = repository
|
||||
)
|
||||
|
||||
val apiLabel = ApiLabel(
|
||||
name = "bug",
|
||||
color = "f29513"
|
||||
)(RepositoryName("octocat", "Hello-World"))
|
||||
|
||||
val apiIssue = ApiIssue(
|
||||
number = 1347,
|
||||
title = "Found a bug",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
state = "open",
|
||||
body = "I'm having a problem with this.",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), false)
|
||||
|
||||
val apiIssuePR = ApiIssue(
|
||||
number = 1347,
|
||||
title = "Found a bug",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
state = "open",
|
||||
body = "I'm having a problem with this.",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), true)
|
||||
|
||||
val apiPullRequest = ApiPullRequest(
|
||||
number = 1347,
|
||||
state = "open",
|
||||
updated_at = date1,
|
||||
created_at = date1,
|
||||
head = ApiPullRequest.Commit(sha = sha1, ref = "new-topic", repo = repository)("octocat"),
|
||||
base = ApiPullRequest.Commit(sha = sha1, ref = "master", repo = repository)("octocat"),
|
||||
mergeable = None,
|
||||
merged = false,
|
||||
merged_at = Some(date1),
|
||||
merged_by = Some(apiUser),
|
||||
title = "new-feature",
|
||||
body = "Please pull these awesome changes",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
assignee = Some(apiUser)
|
||||
)
|
||||
|
||||
// https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent
|
||||
val apiPullRequestReviewComment = ApiPullRequestReviewComment(
|
||||
id = 29724692,
|
||||
// "diff_hunk": "@@ -1 +1 @@\n-# public-repo",
|
||||
path = "README.md",
|
||||
// "position": 1,
|
||||
// "original_position": 1,
|
||||
commit_id = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
// "original_commit_id": "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
user = apiUser,
|
||||
body = "Maybe you should use more emoji on this line.",
|
||||
created_at = date("2015-05-05T23:40:27Z"),
|
||||
updated_at = date("2015-05-05T23:40:27Z")
|
||||
)(RepositoryName("baxterthehacker/public-repo"), 1)
|
||||
|
||||
val apiBranchProtection = ApiBranchProtection(
|
||||
true,
|
||||
Some(ApiBranchProtection.Status(ApiBranchProtection.Everyone, Seq("continuous-integration/travis-ci")))
|
||||
)
|
||||
|
||||
}
|
||||
@@ -1,30 +1,12 @@
|
||||
package gitbucket.core.api
|
||||
|
||||
import gitbucket.core.util.RepositoryName
|
||||
|
||||
import org.json4s.jackson.JsonMethods.parse
|
||||
import org.json4s._
|
||||
import org.scalatest.FunSuite
|
||||
|
||||
import java.util.{Calendar, TimeZone, Date}
|
||||
|
||||
class JsonFormatSpec extends FunSuite {
|
||||
val date1 = {
|
||||
val d = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
|
||||
d.set(2011, 3, 14, 16, 0, 49)
|
||||
d.getTime
|
||||
}
|
||||
def date(date: String): Date = {
|
||||
val f = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
|
||||
f.setTimeZone(TimeZone.getTimeZone("UTC"))
|
||||
f.parse(date)
|
||||
}
|
||||
val sha1 = "6dcb09b5b57875f334f61aebed695e2e4193db5e"
|
||||
val repo1Name = RepositoryName("octocat/Hello-World")
|
||||
implicit val context = JsonFormat.Context("http://gitbucket.exmple.com", None)
|
||||
import ApiSpecModels._
|
||||
|
||||
val apiUser =
|
||||
ApiUser(login = "octocat", email = "octocat@example.com", `type` = "User", site_admin = false, created_at = date1)
|
||||
val apiUserJson = """{
|
||||
"login":"octocat",
|
||||
"email":"octocat@example.com",
|
||||
@@ -37,16 +19,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"avatar_url":"http://gitbucket.exmple.com/octocat/_avatar"
|
||||
}"""
|
||||
|
||||
val repository = ApiRepository(
|
||||
name = repo1Name.name,
|
||||
full_name = repo1Name.fullName,
|
||||
description = "This your first repo!",
|
||||
watchers = 0,
|
||||
forks = 0,
|
||||
`private` = false,
|
||||
default_branch = "master",
|
||||
owner = apiUser
|
||||
)(urlIsHtmlUrl = false)
|
||||
val repositoryJson = s"""{
|
||||
"name" : "Hello-World",
|
||||
"full_name" : "octocat/Hello-World",
|
||||
@@ -65,16 +37,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"html_url" : "${context.baseUrl}/octocat/Hello-World"
|
||||
}"""
|
||||
|
||||
val apiCommitStatus = ApiCommitStatus(
|
||||
created_at = date1,
|
||||
updated_at = date1,
|
||||
state = "success",
|
||||
target_url = Some("https://ci.example.com/1000/output"),
|
||||
description = Some("Build has completed successfully"),
|
||||
id = 1,
|
||||
context = "Default",
|
||||
creator = apiUser
|
||||
)(sha1, repo1Name)
|
||||
val apiCommitStatusJson = s"""{
|
||||
"created_at":"2011-04-14T16:00:49Z",
|
||||
"updated_at":"2011-04-14T16:00:49Z",
|
||||
@@ -87,16 +49,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"url": "http://gitbucket.exmple.com/api/v3/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e/statuses"
|
||||
}"""
|
||||
|
||||
val apiPushCommit = ApiCommit(
|
||||
id = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
message = "Update README.md",
|
||||
timestamp = date1,
|
||||
added = Nil,
|
||||
removed = Nil,
|
||||
modified = List("README.md"),
|
||||
author = ApiPersonIdent("baxterthehacker", "baxterthehacker@users.noreply.github.com", date1),
|
||||
committer = ApiPersonIdent("baxterthehacker", "baxterthehacker@users.noreply.github.com", date1)
|
||||
)(RepositoryName("baxterthehacker", "public-repo"), true)
|
||||
val apiPushCommitJson = s"""{
|
||||
"id": "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
// "distinct": true,
|
||||
@@ -126,11 +78,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
]
|
||||
}"""
|
||||
|
||||
val apiComment = ApiComment(id = 1, user = apiUser, body = "Me too", created_at = date1, updated_at = date1)(
|
||||
RepositoryName("octocat", "Hello-World"),
|
||||
100,
|
||||
false
|
||||
)
|
||||
val apiCommentJson = s"""{
|
||||
"id": 1,
|
||||
"body": "Me too",
|
||||
@@ -140,11 +87,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"updated_at": "2011-04-14T16:00:49Z"
|
||||
}"""
|
||||
|
||||
val apiCommentPR = ApiComment(id = 1, user = apiUser, body = "Me too", created_at = date1, updated_at = date1)(
|
||||
RepositoryName("octocat", "Hello-World"),
|
||||
100,
|
||||
true
|
||||
)
|
||||
val apiCommentPRJson = s"""{
|
||||
"id": 1,
|
||||
"body": "Me too",
|
||||
@@ -154,24 +96,12 @@ class JsonFormatSpec extends FunSuite {
|
||||
"updated_at": "2011-04-14T16:00:49Z"
|
||||
}"""
|
||||
|
||||
val apiPersonIdent = ApiPersonIdent("Monalisa Octocat", "support@example.com", date1)
|
||||
val apiPersonIdentJson = """ {
|
||||
"name": "Monalisa Octocat",
|
||||
"email": "support@example.com",
|
||||
"date": "2011-04-14T16:00:49Z"
|
||||
}"""
|
||||
|
||||
val apiCommitListItem = ApiCommitListItem(
|
||||
sha = sha1,
|
||||
commit = ApiCommitListItem.Commit(
|
||||
message = "Fix all the bugs",
|
||||
author = apiPersonIdent,
|
||||
committer = apiPersonIdent
|
||||
)(sha1, repo1Name),
|
||||
author = Some(apiUser),
|
||||
committer = Some(apiUser),
|
||||
parents = Seq(ApiCommitListItem.Parent("6dcb09b5b57875f334f61aebed695e2e4193db5e")(repo1Name))
|
||||
)(repo1Name)
|
||||
val apiCommitListItemJson = s"""{
|
||||
"url": "${context.baseUrl}/api/v3/repos/octocat/Hello-World/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
||||
"sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
||||
@@ -191,13 +121,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
]
|
||||
}"""
|
||||
|
||||
val apiCombinedCommitStatus = ApiCombinedCommitStatus(
|
||||
state = "success",
|
||||
sha = sha1,
|
||||
total_count = 2,
|
||||
statuses = List(apiCommitStatus),
|
||||
repository = repository
|
||||
)
|
||||
val apiCombinedCommitStatusJson = s"""{
|
||||
"state": "success",
|
||||
"sha": "$sha1",
|
||||
@@ -207,23 +130,12 @@ class JsonFormatSpec extends FunSuite {
|
||||
"url": "${context.baseUrl}/api/v3/repos/octocat/Hello-World/commits/$sha1/status"
|
||||
}"""
|
||||
|
||||
val apiLabel = ApiLabel(name = "bug", color = "f29513")(RepositoryName("octocat", "Hello-World"))
|
||||
val apiLabelJson = s"""{
|
||||
"name": "bug",
|
||||
"color": "f29513",
|
||||
"url": "${context.baseUrl}/api/v3/repos/octocat/Hello-World/labels/bug"
|
||||
}"""
|
||||
|
||||
val apiIssue = ApiIssue(
|
||||
number = 1347,
|
||||
title = "Found a bug",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
state = "open",
|
||||
body = "I'm having a problem with this.",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), false)
|
||||
val apiIssueJson = s"""{
|
||||
"number": 1347,
|
||||
"state": "open",
|
||||
@@ -238,16 +150,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"updated_at": "2011-04-14T16:00:49Z"
|
||||
}"""
|
||||
|
||||
val apiIssuePR = ApiIssue(
|
||||
number = 1347,
|
||||
title = "Found a bug",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
state = "open",
|
||||
body = "I'm having a problem with this.",
|
||||
created_at = date1,
|
||||
updated_at = date1
|
||||
)(RepositoryName("octocat", "Hello-World"), true)
|
||||
val apiIssuePRJson = s"""{
|
||||
"number": 1347,
|
||||
"state": "open",
|
||||
@@ -268,24 +170,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
"updated_at": "2011-04-14T16:00:49Z"
|
||||
}"""
|
||||
|
||||
val apiPullRequest = ApiPullRequest(
|
||||
number = 1347,
|
||||
state = "open",
|
||||
updated_at = date1,
|
||||
created_at = date1,
|
||||
head = ApiPullRequest.Commit(sha = sha1, ref = "new-topic", repo = repository)("octocat"),
|
||||
base = ApiPullRequest.Commit(sha = sha1, ref = "master", repo = repository)("octocat"),
|
||||
mergeable = None,
|
||||
merged = false,
|
||||
merged_at = Some(date1),
|
||||
merged_by = Some(apiUser),
|
||||
title = "new-feature",
|
||||
body = "Please pull these awesome changes",
|
||||
user = apiUser,
|
||||
labels = List(apiLabel),
|
||||
assignee = Some(apiUser)
|
||||
)
|
||||
|
||||
val apiPullRequestJson = s"""{
|
||||
"number": 1347,
|
||||
"state" : "open",
|
||||
@@ -335,20 +219,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
// "changed_files": 5
|
||||
}"""
|
||||
|
||||
// https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent
|
||||
val apiPullRequestReviewComment = ApiPullRequestReviewComment(
|
||||
id = 29724692,
|
||||
// "diff_hunk": "@@ -1 +1 @@\n-# public-repo",
|
||||
path = "README.md",
|
||||
// "position": 1,
|
||||
// "original_position": 1,
|
||||
commit_id = "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
// "original_commit_id": "0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c",
|
||||
user = apiUser,
|
||||
body = "Maybe you should use more emoji on this line.",
|
||||
created_at = date("2015-05-05T23:40:27Z"),
|
||||
updated_at = date("2015-05-05T23:40:27Z")
|
||||
)(RepositoryName("baxterthehacker/public-repo"), 1)
|
||||
val apiPullRequestReviewCommentJson = s"""{
|
||||
"url": "http://gitbucket.exmple.com/api/v3/repos/baxterthehacker/public-repo/pulls/comments/29724692",
|
||||
"id": 29724692,
|
||||
@@ -377,10 +247,6 @@ class JsonFormatSpec extends FunSuite {
|
||||
}
|
||||
}"""
|
||||
|
||||
val apiBranchProtection = ApiBranchProtection(
|
||||
true,
|
||||
Some(ApiBranchProtection.Status(ApiBranchProtection.Everyone, Seq("continuous-integration/travis-ci")))
|
||||
)
|
||||
val apiBranchProtectionJson = """{
|
||||
"enabled": true,
|
||||
"required_status_checks": {
|
||||
@@ -414,7 +280,7 @@ class JsonFormatSpec extends FunSuite {
|
||||
assertJson(JsonFormat(repository), repositoryJson)
|
||||
}
|
||||
test("apiPushCommit") {
|
||||
assertJson(JsonFormat(apiPushCommit), apiPushCommitJson)
|
||||
assertJson(JsonFormat(apiCommit), apiPushCommitJson)
|
||||
}
|
||||
test("apiComment") {
|
||||
assertJson(JsonFormat(apiComment), apiCommentJson)
|
||||
|
||||
Reference in New Issue
Block a user