89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
package httpmock
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
)
|
|
|
|
// TODO: clean up methods in this file when there are no more callers
|
|
|
|
func (r *Registry) StubResponse(status int, body io.Reader) {
|
|
r.Register(MatchAny, func(*http.Request) (*http.Response, error) {
|
|
return httpResponse(status, body), nil
|
|
})
|
|
}
|
|
|
|
func (r *Registry) StubWithFixture(status int, fixtureFileName string) func() {
|
|
fixturePath := path.Join("../test/fixtures/", fixtureFileName)
|
|
fixtureFile, err := os.Open(fixturePath)
|
|
r.Register(MatchAny, func(*http.Request) (*http.Response, error) {
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return httpResponse(200, fixtureFile), nil
|
|
})
|
|
return func() {
|
|
if err == nil {
|
|
fixtureFile.Close()
|
|
}
|
|
}
|
|
}
|
|
|
|
func (r *Registry) StubRepoResponse(owner, repo string) {
|
|
r.StubRepoResponseWithPermission(owner, repo, "WRITE")
|
|
}
|
|
|
|
func (r *Registry) StubRepoResponseWithPermission(owner, repo, permission string) {
|
|
r.Register(MatchAny, StringResponse(RepoNetworkStubResponse(owner, repo, "master", permission)))
|
|
}
|
|
|
|
func (r *Registry) StubRepoResponseWithDefaultBranch(owner, repo, defaultBranch string) {
|
|
r.Register(MatchAny, StringResponse(RepoNetworkStubResponse(owner, repo, defaultBranch, "WRITE")))
|
|
}
|
|
|
|
func (r *Registry) StubForkedRepoResponse(ownRepo, parentRepo string) {
|
|
r.Register(MatchAny, StringResponse(RepoNetworkStubForkResponse(ownRepo, parentRepo)))
|
|
}
|
|
|
|
func RepoNetworkStubResponse(owner, repo, defaultBranch, permission string) string {
|
|
return fmt.Sprintf(`
|
|
{ "data": { "repo_000": {
|
|
"id": "REPOID",
|
|
"name": "%s",
|
|
"owner": {"login": "%s"},
|
|
"defaultBranchRef": {
|
|
"name": "%s"
|
|
},
|
|
"viewerPermission": "%s"
|
|
} } }
|
|
`, repo, owner, defaultBranch, permission)
|
|
}
|
|
|
|
func RepoNetworkStubForkResponse(forkFullName, parentFullName string) string {
|
|
forkRepo := strings.SplitN(forkFullName, "/", 2)
|
|
parentRepo := strings.SplitN(parentFullName, "/", 2)
|
|
return fmt.Sprintf(`
|
|
{ "data": { "repo_000": {
|
|
"id": "REPOID2",
|
|
"name": "%s",
|
|
"owner": {"login": "%s"},
|
|
"defaultBranchRef": {
|
|
"name": "master"
|
|
},
|
|
"viewerPermission": "ADMIN",
|
|
"parent": {
|
|
"id": "REPOID1",
|
|
"name": "%s",
|
|
"owner": {"login": "%s"},
|
|
"defaultBranchRef": {
|
|
"name": "master"
|
|
},
|
|
"viewerPermission": "READ"
|
|
}
|
|
} } }
|
|
`, forkRepo[1], forkRepo[0], parentRepo[1], parentRepo[0])
|
|
}
|