From e08e47f7518db45665fb32e5e67269b194fa8ae7 Mon Sep 17 00:00:00 2001 From: Miguel Elias dos Santos Date: Thu, 13 Oct 2022 23:17:26 +1100 Subject: [PATCH] Fix Repositories.GetCommitSHA1() with forward slashes --- src/gen/gen_mutations.go | 1 + src/mock/endpointpattern.go | 303 ++++++++++--------------------- src/mock/endpointpattern_test.go | 35 ++++ src/mock/server.go | 65 +++---- src/mock/server_options.go | 87 ++++----- 5 files changed, 210 insertions(+), 281 deletions(-) diff --git a/src/gen/gen_mutations.go b/src/gen/gen_mutations.go index 3d9db31..cdb4242 100644 --- a/src/gen/gen_mutations.go +++ b/src/gen/gen_mutations.go @@ -10,6 +10,7 @@ var enabledMutators = map[string]func(ScrapeResult) ScrapeResult{ "/repos/{owner}/{repo}/contents/{path}": allowExtendedLastParamMutatorHelper(), "/repos/{owner}/{repo}/git/ref/{ref}": allowExtendedLastParamMutatorHelper(), "/repos/{owner}/{repo}/git/refs/{ref}": allowExtendedLastParamMutatorHelper(), // thanks for the consistency, GitHub + "/repos/{owner}/{repo}/commits/{ref}": allowExtendedLastParamMutatorHelper(), // thanks for not base64encode the parameter, GitHub } // allowExtendedLastParamMutatorHelper mutates the last param of the endpoint pattern diff --git a/src/mock/endpointpattern.go b/src/mock/endpointpattern.go index 8e4ea3e..828fb90 100644 --- a/src/mock/endpointpattern.go +++ b/src/mock/endpointpattern.go @@ -127,11 +127,6 @@ var GetEnterprisesActionsCacheUsageByEnterprise EndpointPattern = EndpointPatter Method: "GET", } -var PutEnterprisesActionsOidcCustomizationIssuerByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/actions/oidc/customization/issuer", - Method: "PUT", -} - var GetEnterprisesActionsPermissionsByEnterprise EndpointPattern = EndpointPattern{ Pattern: "/enterprises/{enterprise}/actions/permissions", Method: "GET", @@ -302,51 +297,21 @@ var DeleteEnterprisesActionsRunnersLabelsByEnterpriseByRunnerIdByName EndpointPa Method: "DELETE", } -var GetEnterprisesAuditLogByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/audit-log", - Method: "GET", -} - var GetEnterprisesCodeScanningAlertsByEnterprise EndpointPattern = EndpointPattern{ Pattern: "/enterprises/{enterprise}/code-scanning/alerts", Method: "GET", } -var GetEnterprisesConsumedLicensesByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/consumed-licenses", - Method: "GET", -} - -var GetEnterprisesLicenseSyncStatusByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/license-sync-status", - Method: "GET", -} - var GetEnterprisesSecretScanningAlertsByEnterprise EndpointPattern = EndpointPattern{ Pattern: "/enterprises/{enterprise}/secret-scanning/alerts", Method: "GET", } -var GetEnterprisesSettingsBillingActionsByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/settings/billing/actions", - Method: "GET", -} - var GetEnterprisesSettingsBillingAdvancedSecurityByEnterprise EndpointPattern = EndpointPattern{ Pattern: "/enterprises/{enterprise}/settings/billing/advanced-security", Method: "GET", } -var GetEnterprisesSettingsBillingPackagesByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/settings/billing/packages", - Method: "GET", -} - -var GetEnterprisesSettingsBillingSharedStorageByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/enterprises/{enterprise}/settings/billing/shared-storage", - Method: "GET", -} - var GetEvents EndpointPattern = EndpointPattern{ Pattern: "/events", Method: "GET", @@ -607,16 +572,6 @@ var GetOrgsActionsCacheUsageByRepositoryByOrg EndpointPattern = EndpointPattern{ Method: "GET", } -var GetOrgsActionsOidcCustomizationSubByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/actions/oidc/customization/sub", - Method: "GET", -} - -var PutOrgsActionsOidcCustomizationSubByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/actions/oidc/customization/sub", - Method: "PUT", -} - var GetOrgsActionsPermissionsByOrg EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/actions/permissions", Method: "GET", @@ -702,11 +657,6 @@ var PutOrgsActionsRunnerGroupsRepositoriesByOrgByRunnerGroupId EndpointPattern = Method: "PUT", } -var PutOrgsActionsRunnerGroupsRepositoriesByOrgByRunnerGroupIdByRepositoryId EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", - Method: "PUT", -} - var DeleteOrgsActionsRunnerGroupsRepositoriesByOrgByRunnerGroupIdByRepositoryId EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", Method: "DELETE", @@ -832,11 +782,6 @@ var DeleteOrgsActionsSecretsRepositoriesByOrgBySecretNameByRepositoryId Endpoint Method: "DELETE", } -var GetOrgsAuditLogByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/audit-log", - Method: "GET", -} - var GetOrgsBlocksByOrg EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/blocks", Method: "GET", @@ -867,13 +812,68 @@ var GetOrgsCodespacesByOrg EndpointPattern = EndpointPattern{ Method: "GET", } -var GetOrgsCredentialAuthorizationsByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/credential-authorizations", +var PutOrgsCodespacesBillingByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/billing", + Method: "PUT", +} + +var GetOrgsCodespacesSecretsByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets", + Method: "GET", +} + +var GetOrgsCodespacesSecretsPublicKeyByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/public-key", + Method: "GET", +} + +var GetOrgsCodespacesSecretsByOrgBySecretName EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}", + Method: "GET", +} + +var PutOrgsCodespacesSecretsByOrgBySecretName EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}", + Method: "PUT", +} + +var DeleteOrgsCodespacesSecretsByOrgBySecretName EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}", + Method: "DELETE", +} + +var GetOrgsCodespacesSecretsRepositoriesByOrgBySecretName EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}/repositories", Method: "GET", } -var DeleteOrgsCredentialAuthorizationsByOrgByCredentialId EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/credential-authorizations/{credential_id}", +var PutOrgsCodespacesSecretsRepositoriesByOrgBySecretName EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}/repositories", + Method: "PUT", +} + +var PutOrgsCodespacesSecretsRepositoriesByOrgBySecretNameByRepositoryId EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", + Method: "PUT", +} + +var DeleteOrgsCodespacesSecretsRepositoriesByOrgBySecretNameByRepositoryId EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", + Method: "DELETE", +} + +var PostOrgsCustomRolesByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/custom_roles", + Method: "POST", +} + +var PatchOrgsCustomRolesByOrgByRoleId EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/custom_roles/{role_id}", + Method: "PATCH", +} + +var DeleteOrgsCustomRolesByOrgByRoleId EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/custom_roles/{role_id}", Method: "DELETE", } @@ -927,18 +927,13 @@ var GetOrgsEventsByOrg EndpointPattern = EndpointPattern{ Method: "GET", } -var GetOrgsExternalGroupByOrgByGroupId EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/external-group/{group_id}", +var GetOrgsFailedInvitationsByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/failed_invitations", Method: "GET", } -var GetOrgsExternalGroupsByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/external-groups", - Method: "GET", -} - -var GetOrgsFailedInvitationsByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/failed_invitations", +var GetOrgsFineGrainedPermissionsByOrg EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/fine_grained_permissions", Method: "GET", } @@ -1062,6 +1057,11 @@ var DeleteOrgsMembersByOrgByUsername EndpointPattern = EndpointPattern{ Method: "DELETE", } +var GetOrgsMembersCodespacesByOrgByUsername EndpointPattern = EndpointPattern{ + Pattern: "/orgs/{org}/members/{username}/codespaces", + Method: "GET", +} + var DeleteOrgsMembersCodespacesByOrgByUsernameByCodespaceName EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/members/{username}/codespaces/{codespace_name}", Method: "DELETE", @@ -1257,11 +1257,6 @@ var GetOrgsSettingsBillingSharedStorageByOrg EndpointPattern = EndpointPattern{ Method: "GET", } -var GetOrgsTeamSyncGroupsByOrg EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/team-sync/groups", - Method: "GET", -} - var GetOrgsTeamsByOrg EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/teams", Method: "GET", @@ -1367,21 +1362,6 @@ var DeleteOrgsTeamsDiscussionsReactionsByOrgByTeamSlugByDiscussionNumberByReacti Method: "DELETE", } -var GetOrgsTeamsExternalGroupsByOrgByTeamSlug EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/teams/{team_slug}/external-groups", - Method: "GET", -} - -var PatchOrgsTeamsExternalGroupsByOrgByTeamSlug EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/teams/{team_slug}/external-groups", - Method: "PATCH", -} - -var DeleteOrgsTeamsExternalGroupsByOrgByTeamSlug EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/teams/{team_slug}/external-groups", - Method: "DELETE", -} - var GetOrgsTeamsInvitationsByOrgByTeamSlug EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/teams/{team_slug}/invitations", Method: "GET", @@ -1447,16 +1427,6 @@ var DeleteOrgsTeamsReposByOrgByTeamSlugByOwnerByRepo EndpointPattern = EndpointP Method: "DELETE", } -var GetOrgsTeamsTeamSyncGroupMappingsByOrgByTeamSlug EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", - Method: "GET", -} - -var PatchOrgsTeamsTeamSyncGroupMappingsByOrgByTeamSlug EndpointPattern = EndpointPattern{ - Pattern: "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", - Method: "PATCH", -} - var GetOrgsTeamsTeamsByOrgByTeamSlug EndpointPattern = EndpointPattern{ Pattern: "/orgs/{org}/teams/{team_slug}/teams", Method: "GET", @@ -1637,16 +1607,6 @@ var PostReposActionsJobsRerunByOwnerByRepoByJobId EndpointPattern = EndpointPatt Method: "POST", } -var GetReposActionsOidcCustomizationSubByOwnerByRepo EndpointPattern = EndpointPattern{ - Pattern: "/repos/{owner}/{repo}/actions/oidc/customization/sub", - Method: "GET", -} - -var PutReposActionsOidcCustomizationSubByOwnerByRepo EndpointPattern = EndpointPattern{ - Pattern: "/repos/{owner}/{repo}/actions/oidc/customization/sub", - Method: "PUT", -} - var GetReposActionsPermissionsByOwnerByRepo EndpointPattern = EndpointPattern{ Pattern: "/repos/{owner}/{repo}/actions/permissions", Method: "GET", @@ -2197,6 +2157,16 @@ var DeleteReposCodeScanningAnalysesByOwnerByRepoByAnalysisId EndpointPattern = E Method: "DELETE", } +var GetReposCodeScanningCodeqlDatabasesByOwnerByRepo EndpointPattern = EndpointPattern{ + Pattern: "/repos/{owner}/{repo}/code-scanning/codeql/databases", + Method: "GET", +} + +var GetReposCodeScanningCodeqlDatabasesByOwnerByRepoByLanguage EndpointPattern = EndpointPattern{ + Pattern: "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + Method: "GET", +} + var PostReposCodeScanningSarifsByOwnerByRepo EndpointPattern = EndpointPattern{ Pattern: "/repos/{owner}/{repo}/code-scanning/sarifs", Method: "POST", @@ -2348,7 +2318,7 @@ var GetReposCommitsPullsByOwnerByRepoByCommitSha EndpointPattern = EndpointPatte } var GetReposCommitsByOwnerByRepoByRef EndpointPattern = EndpointPattern{ - Pattern: "/repos/{owner}/{repo}/commits/{ref}", + Pattern: "/repos/{owner}/{repo}/commits/{ref:.+}", Method: "GET", } @@ -2402,6 +2372,21 @@ var GetReposContributorsByOwnerByRepo EndpointPattern = EndpointPattern{ Method: "GET", } +var GetReposDependabotAlertsByOwnerByRepo EndpointPattern = EndpointPattern{ + Pattern: "/repos/{owner}/{repo}/dependabot/alerts", + Method: "GET", +} + +var GetReposDependabotAlertsByOwnerByRepoByAlertNumber EndpointPattern = EndpointPattern{ + Pattern: "/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", + Method: "GET", +} + +var PatchReposDependabotAlertsByOwnerByRepoByAlertNumber EndpointPattern = EndpointPattern{ + Pattern: "/repos/{owner}/{repo}/dependabot/alerts/{alert_number}", + Method: "PATCH", +} + var GetReposDependabotSecretsByOwnerByRepo EndpointPattern = EndpointPattern{ Pattern: "/repos/{owner}/{repo}/dependabot/secrets", Method: "GET", @@ -3497,96 +3482,6 @@ var DeleteRepositoriesEnvironmentsSecretsByRepositoryIdByEnvironmentNameBySecret Method: "DELETE", } -var GetScimV2EnterprisesGroupsByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups", - Method: "GET", -} - -var PostScimV2EnterprisesGroupsByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups", - Method: "POST", -} - -var GetScimV2EnterprisesGroupsByEnterpriseByScimGroupId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", - Method: "GET", -} - -var PutScimV2EnterprisesGroupsByEnterpriseByScimGroupId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", - Method: "PUT", -} - -var PatchScimV2EnterprisesGroupsByEnterpriseByScimGroupId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", - Method: "PATCH", -} - -var DeleteScimV2EnterprisesGroupsByEnterpriseByScimGroupId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", - Method: "DELETE", -} - -var GetScimV2EnterprisesUsersByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users", - Method: "GET", -} - -var PostScimV2EnterprisesUsersByEnterprise EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users", - Method: "POST", -} - -var GetScimV2EnterprisesUsersByEnterpriseByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", - Method: "GET", -} - -var PutScimV2EnterprisesUsersByEnterpriseByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", - Method: "PUT", -} - -var PatchScimV2EnterprisesUsersByEnterpriseByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", - Method: "PATCH", -} - -var DeleteScimV2EnterprisesUsersByEnterpriseByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", - Method: "DELETE", -} - -var GetScimV2OrganizationsUsersByOrg EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users", - Method: "GET", -} - -var PostScimV2OrganizationsUsersByOrg EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users", - Method: "POST", -} - -var GetScimV2OrganizationsUsersByOrgByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users/{scim_user_id}", - Method: "GET", -} - -var PutScimV2OrganizationsUsersByOrgByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users/{scim_user_id}", - Method: "PUT", -} - -var PatchScimV2OrganizationsUsersByOrgByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users/{scim_user_id}", - Method: "PATCH", -} - -var DeleteScimV2OrganizationsUsersByOrgByScimUserId EndpointPattern = EndpointPattern{ - Pattern: "/scim/v2/organizations/{org}/Users/{scim_user_id}", - Method: "DELETE", -} - var GetSearchCode EndpointPattern = EndpointPattern{ Pattern: "/search/code", Method: "GET", @@ -3787,16 +3682,6 @@ var DeleteTeamsReposByTeamIdByOwnerByRepo EndpointPattern = EndpointPattern{ Method: "DELETE", } -var GetTeamsTeamSyncGroupMappingsByTeamId EndpointPattern = EndpointPattern{ - Pattern: "/teams/{team_id}/team-sync/group-mappings", - Method: "GET", -} - -var PatchTeamsTeamSyncGroupMappingsByTeamId EndpointPattern = EndpointPattern{ - Pattern: "/teams/{team_id}/team-sync/group-mappings", - Method: "PATCH", -} - var GetTeamsTeamsByTeamId EndpointPattern = EndpointPattern{ Pattern: "/teams/{team_id}/teams", Method: "GET", diff --git a/src/mock/endpointpattern_test.go b/src/mock/endpointpattern_test.go index 2e2f536..e9de3c7 100644 --- a/src/mock/endpointpattern_test.go +++ b/src/mock/endpointpattern_test.go @@ -134,3 +134,38 @@ func TestGetGitReference(t *testing.T) { ) } } + +func TestRepositoriesGetCommitSHA1WithForwardSlash(t *testing.T) { + mockedHTTPClient := NewMockedHTTPClient( + WithRequestMatch( + GetReposCommitsByOwnerByRepoByRef, + []byte("01234567890"), + ), + ) + + c := github.NewClient(mockedHTTPClient) + + ctx := context.Background() + + sha, _, err := c.Repositories.GetCommitSHA1( + ctx, + "myself", + "mocked-repo", + "refs/heads/ddd", + "", + ) + + if err != nil { + t.Errorf( + "err is %s, want nil", + err.Error(), + ) + } + + if sha != "01234567890" { + t.Errorf( + "sha is %s, want 01234567890", + sha, + ) + } +} diff --git a/src/mock/server.go b/src/mock/server.go index fcc6a4f..b620a40 100644 --- a/src/mock/server.go +++ b/src/mock/server.go @@ -36,6 +36,7 @@ type FIFOReponseHandler struct { func (srh *FIFOReponseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { srh.lock.Lock() defer srh.lock.Unlock() + if srh.CurrentIndex > len(srh.Responses) { panic(fmt.Sprintf( "go-github-mock: no more mocks available for %s", @@ -53,10 +54,10 @@ func (srh *FIFOReponseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) // PaginatedReponseHandler handler implementation that // responds to the HTTP requests and honors the pagination headers // -// Header e.g: `Link: ; rel="next", -// ; rel="last", -// ; rel="first", -// ; rel="prev"` +// Header e.g: `Link: ; rel="next", +// ; rel="last", +// ; rel="first", +// ; rel="prev"` // // See: https://docs.github.com/en/rest/guides/traversing-with-pagination type PaginatedReponseHandler struct { @@ -130,33 +131,35 @@ func (efrt *EnforceHostRoundTripper) RoundTrip(r *http.Request) (*http.Response, // Example: // // mockedHTTPClient := NewMockedHTTPClient( -// WithRequestMatch( -// GetUsersByUsername, -// github.User{ -// Name: github.String("foobar"), -// }, -// ), -// WithRequestMatch( -// GetUsersOrgsByUsername, -// []github.Organization{ -// { -// Name: github.String("foobar123thisorgwasmocked"), -// }, -// }, -// ), -// WithRequestMatchHandler( -// GetOrgsProjectsByOrg, -// func(w http.ResponseWriter, _ *http.Request) { -// w.Write(MustMarshal([]github.Project{ -// { -// Name: github.String("mocked-proj-1"), -// }, -// { -// Name: github.String("mocked-proj-2"), -// }, -// })) -// }, -// ), +// +// WithRequestMatch( +// GetUsersByUsername, +// github.User{ +// Name: github.String("foobar"), +// }, +// ), +// WithRequestMatch( +// GetUsersOrgsByUsername, +// []github.Organization{ +// { +// Name: github.String("foobar123thisorgwasmocked"), +// }, +// }, +// ), +// WithRequestMatchHandler( +// GetOrgsProjectsByOrg, +// func(w http.ResponseWriter, _ *http.Request) { +// w.Write(MustMarshal([]github.Project{ +// { +// Name: github.String("mocked-proj-1"), +// }, +// { +// Name: github.String("mocked-proj-2"), +// }, +// })) +// }, +// ), +// // ) // // c := github.NewClient(mockedHTTPClient) diff --git a/src/mock/server_options.go b/src/mock/server_options.go index 466d624..52cc9ac 100644 --- a/src/mock/server_options.go +++ b/src/mock/server_options.go @@ -13,19 +13,19 @@ import ( // // Example: // -// WithRequestMatchHandler( -// GetOrgsProjectsByOrg, -// func(w http.ResponseWriter, _ *http.Request) { -// w.Write(MustMarshal([]github.Project{ -// { -// Name: github.String("mocked-proj-1"), -// }, -// { -// Name: github.String("mocked-proj-2"), -// }, -// })) -// }, -// ) +// WithRequestMatchHandler( +// GetOrgsProjectsByOrg, +// func(w http.ResponseWriter, _ *http.Request) { +// w.Write(MustMarshal([]github.Project{ +// { +// Name: github.String("mocked-proj-1"), +// }, +// { +// Name: github.String("mocked-proj-2"), +// }, +// })) +// }, +// ) func WithRequestMatchHandler( ep EndpointPattern, handler http.Handler, @@ -42,12 +42,12 @@ func WithRequestMatchHandler( // // Example: // -// WithRequestMatch( -// GetUsersByUsername, -// github.User{ -// Name: github.String("foobar"), -// }, -// ) +// WithRequestMatch( +// GetUsersByUsername, +// github.User{ +// Name: github.String("foobar"), +// }, +// ) func WithRequestMatch( ep EndpointPattern, responsesFIFO ...interface{}, @@ -55,7 +55,12 @@ func WithRequestMatch( responses := [][]byte{} for _, r := range responsesFIFO { - responses = append(responses, MustMarshal(r)) + switch v := r.(type) { + case []byte: + responses = append(responses, v) + default: + responses = append(responses, MustMarshal(r)) + } } return WithRequestMatchHandler(ep, &FIFOReponseHandler{ @@ -69,27 +74,27 @@ func WithRequestMatch( // // E.g. // -// mockedHTTPClient := NewMockedHTTPClient( -// WithRequestMatchPages( -// GetOrgsReposByOrg, -// []github.Repository{ -// { -// Name: github.String("repo-A-on-first-page"), -// }, -// { -// Name: github.String("repo-B-on-first-page"), -// }, -// }, -// []github.Repository{ -// { -// Name: github.String("repo-C-on-second-page"), -// }, -// { -// Name: github.String("repo-D-on-second-page"), -// }, -// }, -// ), -// ) +// mockedHTTPClient := NewMockedHTTPClient( +// WithRequestMatchPages( +// GetOrgsReposByOrg, +// []github.Repository{ +// { +// Name: github.String("repo-A-on-first-page"), +// }, +// { +// Name: github.String("repo-B-on-first-page"), +// }, +// }, +// []github.Repository{ +// { +// Name: github.String("repo-C-on-second-page"), +// }, +// { +// Name: github.String("repo-D-on-second-page"), +// }, +// }, +// ), +// ) func WithRequestMatchPages( ep EndpointPattern, pages ...interface{},