25ddaf858b
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
141 lines
3.1 KiB
Go
141 lines
3.1 KiB
Go
package fixtures
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Handler returns an http.Handler that is capable of handling a variety of mock
|
|
// Gitea requests and returning mock responses.
|
|
func Handler() http.Handler {
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
e := gin.New()
|
|
e.GET("/api/v1/repos/:owner/:name", getRepo)
|
|
e.GET("/api/v1/repos/:owner/:name/raw/:commit/:file", getRepoFile)
|
|
e.POST("/api/v1/repos/:owner/:name/hooks", createRepoHook)
|
|
e.GET("/api/v1/repos/:owner/:name/hooks", listRepoHooks)
|
|
e.DELETE("/api/v1/repos/:owner/:name/hooks/:id", deleteRepoHook)
|
|
e.POST("/api/v1/repos/:owner/:name/statuses/:commit", createRepoCommitStatus)
|
|
e.GET("/api/v1/user/repos", getUserRepos)
|
|
|
|
return e
|
|
}
|
|
|
|
func listRepoHooks(c *gin.Context) {
|
|
c.String(200, listRepoHookPayloads)
|
|
}
|
|
|
|
func getRepo(c *gin.Context) {
|
|
switch c.Param("name") {
|
|
case "repo_not_found":
|
|
c.String(404, "")
|
|
default:
|
|
c.String(200, repoPayload)
|
|
}
|
|
}
|
|
|
|
func createRepoCommitStatus(c *gin.Context) {
|
|
if c.Param("commit") == "v1.0.0" || c.Param("commit") == "9ecad50" {
|
|
c.String(200, repoPayload)
|
|
}
|
|
c.String(404, "")
|
|
}
|
|
|
|
func getRepoFile(c *gin.Context) {
|
|
if c.Param("file") == "file_not_found" {
|
|
c.String(404, "")
|
|
}
|
|
if c.Param("commit") == "v1.0.0" || c.Param("commit") == "9ecad50" {
|
|
c.String(200, repoFilePayload)
|
|
}
|
|
c.String(404, "")
|
|
}
|
|
|
|
func createRepoHook(c *gin.Context) {
|
|
in := struct {
|
|
Type string `json:"type"`
|
|
Conf struct {
|
|
Type string `json:"content_type"`
|
|
URL string `json:"url"`
|
|
} `json:"config"`
|
|
}{}
|
|
c.BindJSON(&in)
|
|
if in.Type != "gitea" ||
|
|
in.Conf.Type != "json" ||
|
|
in.Conf.URL != "http://localhost" {
|
|
c.String(500, "")
|
|
return
|
|
}
|
|
|
|
c.String(200, "{}")
|
|
}
|
|
|
|
func deleteRepoHook(c *gin.Context) {
|
|
c.String(200, "{}")
|
|
}
|
|
|
|
func getUserRepos(c *gin.Context) {
|
|
switch c.Request.Header.Get("Authorization") {
|
|
case "token repos_not_found":
|
|
c.String(404, "")
|
|
default:
|
|
c.String(200, userRepoPayload)
|
|
}
|
|
}
|
|
|
|
const listRepoHookPayloads = `
|
|
[
|
|
{
|
|
"id": 1,
|
|
"type": "gitea",
|
|
"config": {
|
|
"content_type": "json",
|
|
"url": "http:\/\/localhost\/hook?access_token=1234567890"
|
|
}
|
|
}
|
|
]
|
|
`
|
|
|
|
const repoPayload = `
|
|
{
|
|
"owner": {
|
|
"login": "test_name",
|
|
"email": "octocat@github.com",
|
|
"avatar_url": "https:\/\/secure.gravatar.com\/avatar\/8c58a0be77ee441bb8f8595b7f1b4e87"
|
|
},
|
|
"full_name": "test_name\/repo_name",
|
|
"private": true,
|
|
"html_url": "http:\/\/localhost\/test_name\/repo_name",
|
|
"clone_url": "http:\/\/localhost\/test_name\/repo_name.git",
|
|
"permissions": {
|
|
"admin": true,
|
|
"push": true,
|
|
"pull": true
|
|
}
|
|
}
|
|
`
|
|
|
|
const repoFilePayload = `{ platform: linux/amd64 }`
|
|
|
|
const userRepoPayload = `
|
|
[
|
|
{
|
|
"owner": {
|
|
"login": "test_name",
|
|
"email": "octocat@github.com",
|
|
"avatar_url": "https:\/\/secure.gravatar.com\/avatar\/8c58a0be77ee441bb8f8595b7f1b4e87"
|
|
},
|
|
"full_name": "test_name\/repo_name",
|
|
"private": true,
|
|
"html_url": "http:\/\/localhost\/test_name\/repo_name",
|
|
"clone_url": "http:\/\/localhost\/test_name\/repo_name.git",
|
|
"permissions": {
|
|
"admin": true,
|
|
"push": true,
|
|
"pull": true
|
|
}
|
|
}
|
|
]
|
|
`
|