diff --git a/github/actions_artifacts_test.go b/github/actions_artifacts_test.go index de07c14f847..6b1859ebf4e 100644 --- a/github/actions_artifacts_test.go +++ b/github/actions_artifacts_test.go @@ -453,25 +453,7 @@ func TestArtifact_Marshal(t *testing.T) { }, } - want := `{ - "id": 1, - "node_id": "nid", - "name": "n", - "size_in_bytes": 1, - "url": "u", - "archive_download_url": "a", - "expired": false, - "created_at": ` + referenceTimeStr + `, - "updated_at": ` + referenceTimeStr + `, - "expires_at": ` + referenceTimeStr + `, - "workflow_run": { - "id": 1, - "repository_id": 1, - "head_repository_id": 1, - "head_branch": "b", - "head_sha": "s" - } - }` + want := `{"id":1,"node_id":"nid","name":"n","size_in_bytes":1,"url":"u","archive_download_url":"a","expired":false,"created_at":` + referenceTimeStr + `,"updated_at":` + referenceTimeStr + `,"expires_at":` + referenceTimeStr + `,"workflow_run":{"id":1,"repository_id":1,"head_repository_id":1,"head_branch":"b","head_sha":"s"}}` testJSONMarshal(t, u, want) } @@ -504,28 +486,7 @@ func TestArtifactList_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "artifacts": [{ - "id": 1, - "node_id": "nid", - "name": "n", - "size_in_bytes": 1, - "url": "u", - "archive_download_url": "a", - "expired": false, - "created_at": ` + referenceTimeStr + `, - "updated_at": ` + referenceTimeStr + `, - "expires_at": ` + referenceTimeStr + `, - "workflow_run": { - "id": 1, - "repository_id": 1, - "head_repository_id": 1, - "head_branch": "b", - "head_sha": "s" - } - }] - }` + want := `{"total_count":1,"artifacts":[{"id":1,"node_id":"nid","name":"n","size_in_bytes":1,"url":"u","archive_download_url":"a","expired":false,"created_at":` + referenceTimeStr + `,"updated_at":` + referenceTimeStr + `,"expires_at":` + referenceTimeStr + `,"workflow_run":{"id":1,"repository_id":1,"head_repository_id":1,"head_branch":"b","head_sha":"s"}}]}` testJSONMarshal(t, u, want) } diff --git a/github/actions_runner_groups_test.go b/github/actions_runner_groups_test.go index 16d92ed7c64..d3cbea949d6 100644 --- a/github/actions_runner_groups_test.go +++ b/github/actions_runner_groups_test.go @@ -547,24 +547,16 @@ func TestRunnerGroup_Marshal(t *testing.T) { SelectedWorkflows: []string{}, } - want := `{ - "id": 1, - "name": "n", - "visibility": "v", - "default": true, - "selected_repositories_url": "s", - "runners_url": "r", - "inherited": true, - "allows_public_repositories": true, - "restricted_to_workflows": false, - "selected_workflows": [] - }` + want := `{"id":1,"name":"n","visibility":"v","default":true,"selected_repositories_url":"s","runners_url":"r","inherited":true,"allows_public_repositories":true,"restricted_to_workflows":false}` + testJSONMarshal(t, u, want) + u.SelectedWorkflows = []string{"1"} + want = `{"id":1,"name":"n","visibility":"v","default":true,"selected_repositories_url":"s","runners_url":"r","inherited":true,"allows_public_repositories":true,"restricted_to_workflows":false,"selected_workflows":["1"]}` testJSONMarshal(t, u, want) } func TestRunnerGroups_Marshal(t *testing.T) { - testJSONMarshal(t, &RunnerGroups{}, "{}") + testJSONMarshal(t, &RunnerGroups{}, `{"total_count":0,"runner_groups":null}`) u := &RunnerGroups{ TotalCount: int(1), @@ -584,22 +576,11 @@ func TestRunnerGroups_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "runner_groups": [{ - "id": 1, - "name": "n", - "visibility": "v", - "default": true, - "selected_repositories_url": "s", - "runners_url": "r", - "inherited": true, - "allows_public_repositories": true, - "restricted_to_workflows": false, - "selected_workflows": [] - }] - }` + want := `{"total_count":1,"runner_groups":[{"id":1,"name":"n","visibility":"v","default":true,"selected_repositories_url":"s","runners_url":"r","inherited":true,"allows_public_repositories":true,"restricted_to_workflows":false}]}` + testJSONMarshal(t, u, want) + u.RunnerGroups[0].SelectedWorkflows = []string{"1"} + want = `{"total_count":1,"runner_groups":[{"id":1,"name":"n","visibility":"v","default":true,"selected_repositories_url":"s","runners_url":"r","inherited":true,"allows_public_repositories":true,"restricted_to_workflows":false,"selected_workflows":["1"]}]}` testJSONMarshal(t, u, want) } @@ -616,15 +597,7 @@ func TestCreateRunnerGroupRequest_Marshal(t *testing.T) { SelectedWorkflows: []string{"a", "b"}, } - want := `{ - "name": "n", - "visibility": "v", - "selected_repository_ids": [1], - "runners": [1], - "allows_public_repositories": true, - "restricted_to_workflows": true, - "selected_workflows": ["a","b"] - }` + want := `{"name":"n","visibility":"v","selected_repository_ids":[1],"runners":[1],"allows_public_repositories":true,"restricted_to_workflows":true,"selected_workflows":["a","b"]}` testJSONMarshal(t, u, want) } @@ -640,41 +613,35 @@ func TestUpdateRunnerGroupRequest_Marshal(t *testing.T) { SelectedWorkflows: []string{}, } - want := `{ - "name": "n", - "visibility": "v", - "allows_public_repositories": true, - "restricted_to_workflows": false, - "selected_workflows": [] - }` + want := `{"name":"n","visibility":"v","allows_public_repositories":true,"restricted_to_workflows":false}` + + testJSONMarshal(t, u, want) + u.SelectedWorkflows = []string{"1"} + want = `{"name":"n","visibility":"v","allows_public_repositories":true,"restricted_to_workflows":false,"selected_workflows":["1"]}` testJSONMarshal(t, u, want) } func TestSetRepoAccessRunnerGroupRequest_Marshal(t *testing.T) { - testJSONMarshal(t, &SetRepoAccessRunnerGroupRequest{}, "{}") + testJSONMarshal(t, &SetRepoAccessRunnerGroupRequest{}, `{"selected_repository_ids":null}`) u := &SetRepoAccessRunnerGroupRequest{ SelectedRepositoryIDs: []int64{1}, } - want := `{ - "selected_repository_ids": [1] - }` + want := `{"selected_repository_ids":[1]}` testJSONMarshal(t, u, want) } func TestSetRunnerGroupRunnersRequest_Marshal(t *testing.T) { - testJSONMarshal(t, &SetRunnerGroupRunnersRequest{}, "{}") + testJSONMarshal(t, &SetRunnerGroupRunnersRequest{}, `{"runners":null}`) u := &SetRunnerGroupRunnersRequest{ Runners: []int64{1}, } - want := `{ - "runners": [1] - }` + want := `{"runners":[1]}` testJSONMarshal(t, u, want) } diff --git a/github/actions_runners_test.go b/github/actions_runners_test.go index 9b338641eae..0155147b9ac 100644 --- a/github/actions_runners_test.go +++ b/github/actions_runners_test.go @@ -596,20 +596,13 @@ func TestRunnerApplicationDownload_Marshal(t *testing.T) { SHA256Checksum: String("s"), } - want := `{ - "os": "o", - "architecture": "a", - "download_url": "d", - "filename": "f", - "temp_download_token": "t", - "sha256_checksum": "s" - }` + want := `{"os":"o","architecture":"a","download_url":"d","filename":"f","temp_download_token":"t","sha256_checksum":"s"}` testJSONMarshal(t, u, want) } func TestActionsEnabledOnOrgRepos_Marshal(t *testing.T) { - testJSONMarshal(t, &ActionsEnabledOnOrgRepos{}, "{}") + testJSONMarshal(t, &ActionsEnabledOnOrgRepos{}, `{"total_count":0,"repositories":null}`) u := &ActionsEnabledOnOrgRepos{ TotalCount: 1, @@ -622,16 +615,7 @@ func TestActionsEnabledOnOrgRepos_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "repositories": [ - { - "id": 1, - "url": "u", - "name": "n" - } - ] - }` + want := `{"total_count":1,"repositories":[{"id":1,"name":"n","url":"u"}]}` testJSONMarshal(t, u, want) } @@ -644,10 +628,7 @@ func TestRegistrationToken_Marshal(t *testing.T) { ExpiresAt: &Timestamp{referenceTime}, } - want := `{ - "token": "t", - "expires_at": ` + referenceTimeStr + ` - }` + want := `{"token":"t","expires_at":` + referenceTimeStr + `}` testJSONMarshal(t, u, want) } @@ -661,11 +642,7 @@ func TestRunnerLabels_Marshal(t *testing.T) { Type: String("t"), } - want := `{ - "id": 1, - "name": "n", - "type": "t" - }` + want := `{"id":1,"name":"n","type":"t"}` testJSONMarshal(t, u, want) } @@ -688,26 +665,13 @@ func TestRunner_Marshal(t *testing.T) { }, } - want := `{ - "id": 1, - "name": "n", - "os": "o", - "status": "s", - "busy": false, - "labels": [ - { - "id": 1, - "name": "n", - "type": "t" - } - ] - }` + want := `{"id":1,"name":"n","os":"o","status":"s","busy":false,"labels":[{"id":1,"name":"n","type":"t"}]}` testJSONMarshal(t, u, want) } func TestRunners_Marshal(t *testing.T) { - testJSONMarshal(t, &Runners{}, "{}") + testJSONMarshal(t, &Runners{}, `{"total_count":0,"runners":null}`) u := &Runners{ TotalCount: 1, @@ -729,25 +693,7 @@ func TestRunners_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "runners": [ - { - "id": 1, - "name": "n", - "os": "o", - "status": "s", - "busy": false, - "labels": [ - { - "id": 1, - "name": "n", - "type": "t" - } - ] - } - ] - }` + want := `{"total_count":1,"runners":[{"id":1,"name":"n","os":"o","status":"s","busy":false,"labels":[{"id":1,"name":"n","type":"t"}]}]}` testJSONMarshal(t, u, want) } @@ -760,10 +706,7 @@ func TestRemoveToken_Marshal(t *testing.T) { ExpiresAt: &Timestamp{referenceTime}, } - want := `{ - "token": "t", - "expires_at": ` + referenceTimeStr + ` - }` + want := `{"token":"t","expires_at":` + referenceTimeStr + `}` testJSONMarshal(t, u, want) } diff --git a/github/actions_secrets_test.go b/github/actions_secrets_test.go index a1266d6bae6..969aac87eba 100644 --- a/github/actions_secrets_test.go +++ b/github/actions_secrets_test.go @@ -812,23 +812,20 @@ func TestActionsService_DeleteEnvSecret(t *testing.T) { } func TestPublicKey_Marshal(t *testing.T) { - testJSONMarshal(t, &PublicKey{}, "{}") + testJSONMarshal(t, &PublicKey{}, `{"key_id":null,"key":null}`) u := &PublicKey{ KeyID: String("kid"), Key: String("k"), } - want := `{ - "key_id": "kid", - "key": "k" - }` + want := `{"key_id":"kid","key":"k"}` testJSONMarshal(t, u, want) } func TestSecret_Marshal(t *testing.T) { - testJSONMarshal(t, &Secret{}, "{}") + testJSONMarshal(t, &Secret{}, `{"name":"","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z"}`) u := &Secret{ Name: "n", @@ -838,19 +835,13 @@ func TestSecret_Marshal(t *testing.T) { SelectedRepositoriesURL: "s", } - want := `{ - "name": "n", - "created_at": ` + referenceTimeStr + `, - "updated_at": ` + referenceTimeStr + `, - "visibility": "v", - "selected_repositories_url": "s" - }` + want := `{"name":"n","created_at":` + referenceTimeStr + `,"updated_at":` + referenceTimeStr + `,"visibility":"v","selected_repositories_url":"s"}` testJSONMarshal(t, u, want) } func TestSecrets_Marshal(t *testing.T) { - testJSONMarshal(t, &Secrets{}, "{}") + testJSONMarshal(t, &Secrets{}, `{"total_count":0,"secrets":null}`) u := &Secrets{ TotalCount: 1, @@ -864,24 +855,13 @@ func TestSecrets_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "secrets": [ - { - "name": "n", - "created_at": ` + referenceTimeStr + `, - "updated_at": ` + referenceTimeStr + `, - "visibility": "v", - "selected_repositories_url": "s" - } - ] - }` + want := `{"total_count":1,"secrets":[{"name":"n","created_at":` + referenceTimeStr + `,"updated_at":` + referenceTimeStr + `,"visibility":"v","selected_repositories_url":"s"}]}` testJSONMarshal(t, u, want) } func TestEncryptedSecret_Marshal(t *testing.T) { - testJSONMarshal(t, &EncryptedSecret{}, "{}") + testJSONMarshal(t, &EncryptedSecret{}, `{"key_id":"","encrypted_value":""}`) u := &EncryptedSecret{ Name: "n", @@ -891,12 +871,7 @@ func TestEncryptedSecret_Marshal(t *testing.T) { SelectedRepositoryIDs: []int64{1}, } - want := `{ - "key_id": "kid", - "encrypted_value": "e", - "visibility": "v", - "selected_repository_ids": [1] - }` + want := `{"key_id":"kid","encrypted_value":"e","visibility":"v","selected_repository_ids":[1]}` testJSONMarshal(t, u, want) } @@ -915,16 +890,7 @@ func TestSelectedReposList_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "repositories": [ - { - "id": 1, - "url": "u", - "name": "n" - } - ] - }` + want := `{"total_count":1,"repositories":[{"id":1,"name":"n","url":"u"}]}` testJSONMarshal(t, u, want) } diff --git a/github/actions_workflow_jobs_test.go b/github/actions_workflow_jobs_test.go index 521e401102b..80212816cc6 100644 --- a/github/actions_workflow_jobs_test.go +++ b/github/actions_workflow_jobs_test.go @@ -226,14 +226,7 @@ func TestTaskStep_Marshal(t *testing.T) { CompletedAt: &Timestamp{referenceTime}, } - want := `{ - "name": "n", - "status": "s", - "conclusion": "c", - "number": 1, - "started_at": ` + referenceTimeStr + `, - "completed_at": ` + referenceTimeStr + ` - }` + want := `{"name":"n","status":"s","conclusion":"c","number":1,"started_at":` + referenceTimeStr + `,"completed_at":` + referenceTimeStr + `}` testJSONMarshal(t, u, want) } @@ -269,31 +262,7 @@ func TestWorkflowJob_Marshal(t *testing.T) { WorkflowName: String("w"), } - want := `{ - "id": 1, - "run_id": 1, - "run_url": "r", - "node_id": "n", - "head_sha": "h", - "url": "u", - "html_url": "h", - "status": "s", - "conclusion": "c", - "created_at": ` + referenceTimeStr + `, - "started_at": ` + referenceTimeStr + `, - "completed_at": ` + referenceTimeStr + `, - "name": "n", - "steps": [{ - "name": "n", - "status": "s", - "conclusion": "c", - "number": 1, - "started_at": ` + referenceTimeStr + `, - "completed_at": ` + referenceTimeStr + ` - }], - "check_run_url": "c", - "workflow_name": "w" - }` + want := `{"id":1,"run_id":1,"run_url":"r","node_id":"n","head_sha":"h","url":"u","html_url":"h","status":"s","conclusion":"c","created_at":` + referenceTimeStr + `,"started_at":` + referenceTimeStr + `,"completed_at":` + referenceTimeStr + `,"name":"n","steps":[{"name":"n","status":"s","conclusion":"c","number":1,"started_at":` + referenceTimeStr + `,"completed_at":` + referenceTimeStr + `}],"check_run_url":"c","workflow_name":"w"}` testJSONMarshal(t, u, want) } @@ -335,35 +304,7 @@ func TestJobs_Marshal(t *testing.T) { }, } - want := `{ - "total_count": 1, - "jobs": [{ - "id": 1, - "run_id": 1, - "run_url": "r", - "node_id": "n", - "head_sha": "h", - "url": "u", - "html_url": "h", - "status": "s", - "conclusion": "c", - "created_at": ` + referenceTimeStr + `, - "started_at": ` + referenceTimeStr + `, - "completed_at": ` + referenceTimeStr + `, - "name": "n", - "steps": [{ - "name": "n", - "status": "s", - "conclusion": "c", - "number": 1, - "started_at": ` + referenceTimeStr + `, - "completed_at": ` + referenceTimeStr + ` - }], - "check_run_url": "c", - "run_attempt": 2, - "workflow_name": "w" - }] - }` + want := `{"total_count":1,"jobs":[{"id":1,"run_id":1,"run_url":"r","node_id":"n","head_sha":"h","url":"u","html_url":"h","status":"s","conclusion":"c","created_at":` + referenceTimeStr + `,"started_at":` + referenceTimeStr + `,"completed_at":` + referenceTimeStr + `,"name":"n","steps":[{"name":"n","status":"s","conclusion":"c","number":1,"started_at":` + referenceTimeStr + `,"completed_at":` + referenceTimeStr + `}],"check_run_url":"c","run_attempt":2,"workflow_name":"w"}]}` testJSONMarshal(t, u, want) } diff --git a/github/github_test.go b/github/github_test.go index 0c969404341..ea86e86cd54 100644 --- a/github/github_test.go +++ b/github/github_test.go @@ -6,6 +6,7 @@ package github import ( + "bytes" "context" "encoding/json" "errors" @@ -147,25 +148,14 @@ func testBody(t *testing.T, r *http.Request, want string) { // to the want string. func testJSONMarshal(t *testing.T, v interface{}, want string) { t.Helper() - // Unmarshal the wanted JSON, to verify its correctness, and marshal it back - // to sort the keys. - u := reflect.New(reflect.TypeOf(v)).Interface() - if err := json.Unmarshal([]byte(want), &u); err != nil { - t.Errorf("Unable to unmarshal JSON for %v: %v", want, err) - } - w, err := json.Marshal(u) - if err != nil { - t.Errorf("Unable to marshal JSON for %#v", u) - } - // Marshal the target value. j, err := json.Marshal(v) if err != nil { - t.Errorf("Unable to marshal JSON for %#v", v) + t.Errorf("Unable to unmarshal JSON for %v: %v", v, err) } - if string(w) != string(j) { - t.Errorf("json.Marshal(%q) returned %s, want %s", v, j, w) + if !bytes.Equal(j, []byte(want)) { + t.Errorf("json.Marshal(%+v) returned %s, want %s", v, j, want) } }