Spaces:
Paused
Paused
| // Copyright 2018 Drone.IO Inc. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| package fixtures | |
| import ( | |
| "net/http" | |
| "github.com/gin-gonic/gin" | |
| ) | |
| // Handler returns an http.Handler that is capable of handling a variety of mock | |
| // Bitbucket requests and returning mock responses. | |
| func Handler() http.Handler { | |
| gin.SetMode(gin.TestMode) | |
| e := gin.New() | |
| e.GET("/api/v3/repos/:owner/:name", getRepo) | |
| e.GET("/api/v3/repositories/:id", getRepoByID) | |
| e.GET("/api/v3/orgs/:org/memberships/:user", getMembership) | |
| e.GET("/api/v3/user/memberships/orgs/:org", getMembership) | |
| return e | |
| } | |
| func getRepo(c *gin.Context) { | |
| switch c.Param("name") { | |
| case "repo_not_found": | |
| c.String(http.StatusNotFound, "") | |
| default: | |
| c.String(http.StatusOK, repoPayload) | |
| } | |
| } | |
| func getRepoByID(c *gin.Context) { | |
| switch c.Param("id") { | |
| case "repo_not_found": | |
| c.String(http.StatusNotFound, "") | |
| default: | |
| c.String(http.StatusOK, repoPayload) | |
| } | |
| } | |
| func getMembership(c *gin.Context) { | |
| switch c.Param("org") { | |
| case "org_not_found": | |
| c.String(http.StatusNotFound, "") | |
| case "github": | |
| c.String(http.StatusOK, membershipIsMemberPayload) | |
| default: | |
| c.String(http.StatusOK, membershipIsOwnerPayload) | |
| } | |
| } | |
| var repoPayload = ` | |
| { | |
| "id": 5, | |
| "owner": { | |
| "login": "octocat", | |
| "avatar_url": "https://github.com/images/error/octocat_happy.gif" | |
| }, | |
| "name": "Hello-World", | |
| "full_name": "octocat/Hello-World", | |
| "private": true, | |
| "html_url": "https://github.com/octocat/Hello-World", | |
| "clone_url": "https://github.com/octocat/Hello-World.git", | |
| "language": null, | |
| "permissions": { | |
| "admin": true, | |
| "push": true, | |
| "pull": true | |
| } | |
| } | |
| ` | |
| var membershipIsOwnerPayload = ` | |
| { | |
| "url": "https://api.github.com/orgs/octocat/memberships/octocat", | |
| "state": "active", | |
| "role": "admin", | |
| "organization_url": "https://api.github.com/orgs/octocat", | |
| "user": { | |
| "login": "octocat", | |
| "id": 5555555, | |
| "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 | |
| }, | |
| "organization": { | |
| "login": "octocat", | |
| "id": 5555556, | |
| "url": "https://api.github.com/orgs/octocat", | |
| "repos_url": "https://api.github.com/orgs/octocat/repos", | |
| "events_url": "https://api.github.com/orgs/octocat/events", | |
| "hooks_url": "https://api.github.com/orgs/octocat/hooks", | |
| "issues_url": "https://api.github.com/orgs/octocat/issues", | |
| "members_url": "https://api.github.com/orgs/octocat/members{/member}", | |
| "public_members_url": "https://api.github.com/orgs/octocat/public_members{/member}", | |
| "avatar_url": "https://github.com/images/error/octocat_happy.gif", | |
| "description": "" | |
| } | |
| } | |
| ` | |
| var membershipIsMemberPayload = ` | |
| { | |
| "url": "https://api.github.com/orgs/github/memberships/octocat", | |
| "state": "active", | |
| "role": "member", | |
| "organization_url": "https://api.github.com/orgs/github", | |
| "user": { | |
| "login": "octocat", | |
| "id": 5555555, | |
| "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 | |
| }, | |
| "organization": { | |
| "login": "octocat", | |
| "id": 5555557, | |
| "url": "https://api.github.com/orgs/github", | |
| "repos_url": "https://api.github.com/orgs/github/repos", | |
| "events_url": "https://api.github.com/orgs/github/events", | |
| "hooks_url": "https://api.github.com/orgs/github/hooks", | |
| "issues_url": "https://api.github.com/orgs/github/issues", | |
| "members_url": "https://api.github.com/orgs/github/members{/member}", | |
| "public_members_url": "https://api.github.com/orgs/github/public_members{/member}", | |
| "avatar_url": "https://github.com/images/error/octocat_happy.gif", | |
| "description": "" | |
| } | |
| } | |
| ` | |