mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-03-20 08:55:35 +01:00
To test that it correctly authorises a valid user, prior to me extending it. This only tests the happy path because simulating oAuth failures is going to be quite hard at this stage.
216 lines
5.0 KiB
Go
216 lines
5.0 KiB
Go
package testdata
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
)
|
|
|
|
// setup a mock server for testing purposes.
|
|
func NewServer() *httptest.Server {
|
|
mux := http.NewServeMux()
|
|
server := httptest.NewServer(mux)
|
|
|
|
// handle requests and serve mock data
|
|
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
// evaluate the path to serve a dummy data file
|
|
switch r.URL.Path {
|
|
case "/login/oauth/access_token":
|
|
w.Write(accessTokenPayload)
|
|
return
|
|
case "/user":
|
|
w.Write(userPayload)
|
|
return
|
|
case "/user/emails":
|
|
w.Write(userEmailsPayload)
|
|
return
|
|
case "/user/repos":
|
|
w.Write(userReposPayload)
|
|
return
|
|
case "/user/orgs":
|
|
w.Write(userOrgsPayload)
|
|
return
|
|
case "/orgs/octocats-inc/repos":
|
|
w.Write(userReposPayload)
|
|
return
|
|
case "/repos/octocat/Hello-World/contents/.drone.yml":
|
|
w.Write(droneYamlPayload)
|
|
return
|
|
case "/repos/octocat/Hello-World/hooks":
|
|
switch r.Method {
|
|
case "POST":
|
|
w.Write(createHookPayload)
|
|
return
|
|
}
|
|
case "/repos/octocat/Hola-Mundo/hooks":
|
|
switch r.Method {
|
|
case "POST":
|
|
w.Write(createHookPayload)
|
|
return
|
|
}
|
|
case "/repos/octocat/Hola-Mundo/keys":
|
|
switch r.Method {
|
|
case "POST":
|
|
w.Write(createKeyPayload)
|
|
return
|
|
}
|
|
}
|
|
|
|
// else return a 404
|
|
http.NotFound(w, r)
|
|
})
|
|
|
|
// return the server to the client which
|
|
// will need to know the base URL path
|
|
return server
|
|
}
|
|
|
|
var accessTokenPayload = []byte(`access_token=sekret&scope=repo%2Cuser%3Aemail&token_type=bearer`)
|
|
|
|
var userPayload = []byte(`
|
|
{
|
|
"login": "octocat",
|
|
"id": 1,
|
|
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
|
|
"gravatar_id": "",
|
|
"url": "https://api.github.com/users/octocat",
|
|
"html_url": "https://github.com/octocat",
|
|
"followers_url": "https://api.github.com/users/octocat/followers",
|
|
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
|
|
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
|
|
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
|
|
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
|
|
"organizations_url": "https://api.github.com/users/octocat/orgs",
|
|
"repos_url": "https://api.github.com/users/octocat/repos",
|
|
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
|
|
"received_events_url": "https://api.github.com/users/octocat/received_events",
|
|
"type": "User",
|
|
"site_admin": false,
|
|
"name": "monalisa octocat",
|
|
"company": "GitHub",
|
|
"blog": "https://github.com/blog",
|
|
"location": "San Francisco",
|
|
"email": "octocat@github.com",
|
|
"hireable": false,
|
|
"bio": "There once was...",
|
|
"public_repos": 2,
|
|
"public_gists": 1,
|
|
"followers": 20,
|
|
"following": 0,
|
|
"created_at": "2008-01-14T04:33:35Z",
|
|
"updated_at": "2008-01-14T04:33:35Z",
|
|
"total_private_repos": 100,
|
|
"owned_private_repos": 100,
|
|
"private_gists": 81,
|
|
"disk_usage": 10000,
|
|
"collaborators": 8,
|
|
"plan": {
|
|
"name": "Medium",
|
|
"space": 400,
|
|
"private_repos": 20,
|
|
"collaborators": 0
|
|
}
|
|
}
|
|
`)
|
|
|
|
var userEmailsPayload = []byte(`
|
|
[
|
|
{
|
|
"email": "octocat@github.com",
|
|
"verified": true,
|
|
"primary": true
|
|
}
|
|
]
|
|
`)
|
|
|
|
// sample repository list
|
|
var userReposPayload = []byte(`
|
|
[
|
|
{
|
|
"owner": {
|
|
"login": "octocat",
|
|
"id": 1
|
|
},
|
|
"id": 1296269,
|
|
"name": "Hello-World",
|
|
"full_name": "octocat/Hello-World",
|
|
"private": true,
|
|
"url": "https://api.github.com/repos/octocat/Hello-World",
|
|
"html_url": "https://github.com/octocat/Hello-World",
|
|
"clone_url": "https://github.com/octocat/Hello-World.git",
|
|
"git_url": "git://github.com/octocat/Hello-World.git",
|
|
"ssh_url": "git@github.com:octocat/Hello-World.git",
|
|
"permissions": {
|
|
"admin": true,
|
|
"push": true,
|
|
"pull": true
|
|
}
|
|
},
|
|
{
|
|
"owner": {
|
|
"login": "octocat",
|
|
"id": 1
|
|
},
|
|
"id": 9626921,
|
|
"name": "Hola-Mundo",
|
|
"full_name": "octocat/Hola-Mundo",
|
|
"private": false,
|
|
"url": "https://api.github.com/repos/octocat/Hola-Mundo",
|
|
"html_url": "https://github.com/octocat/Hola-Mundo",
|
|
"clone_url": "https://github.com/octocat/Hola-Mundo.git",
|
|
"git_url": "git://github.com/octocat/Hola-Mundo.git",
|
|
"ssh_url": "git@github.com:octocat/Hola-Mundo.git",
|
|
"permissions": {
|
|
"admin": false,
|
|
"push": false,
|
|
"pull": true
|
|
}
|
|
}
|
|
]
|
|
`)
|
|
|
|
var emptySetPayload = []byte(`[]`)
|
|
var emptyObjPayload = []byte(`{}`)
|
|
|
|
// sample org list response
|
|
var userOrgsPayload = []byte(`
|
|
[
|
|
{ "login": "octocats-inc", "id": 1 }
|
|
]
|
|
`)
|
|
|
|
// sample content response for .drone.yml request
|
|
var droneYamlPayload = []byte(`
|
|
{
|
|
"type": "file",
|
|
"encoding": "base64",
|
|
"name": ".drone.yml",
|
|
"path": ".drone.yml",
|
|
"content": "aW1hZ2U6IGdv"
|
|
}
|
|
`)
|
|
|
|
// sample create hook response
|
|
var createHookPayload = []byte(`
|
|
{
|
|
"id": 1,
|
|
"name": "web",
|
|
"events": [ "push", "pull_request" ],
|
|
"active": true,
|
|
"config": {
|
|
"url": "http://example.com",
|
|
"content_type": "json"
|
|
}
|
|
}
|
|
`)
|
|
|
|
// sample create hook response
|
|
var createKeyPayload = []byte(`
|
|
{
|
|
"id": 1,
|
|
"key": "ssh-rsa AAA...",
|
|
"url": "https://api.github.com/user/keys/1",
|
|
"title": "octocat@octomac"
|
|
}
|
|
`)
|