Skip to content

Commit c4d1404

Browse files
committed
udpate the test
1 parent 2d9cf84 commit c4d1404

1 file changed

Lines changed: 37 additions & 46 deletions

File tree

pkg/cmd/release/shared/fetch_test.go

Lines changed: 37 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"net/http"
66
"testing"
77

8+
"github.com/cli/go-gh/v2/pkg/api"
9+
810
"github.com/cli/cli/v2/internal/ghrepo"
911
"github.com/cli/cli/v2/pkg/httpmock"
1012
"github.com/stretchr/testify/assert"
@@ -13,61 +15,41 @@ import (
1315

1416
func TestFetchRefSHA(t *testing.T) {
1517
tests := []struct {
16-
name string
17-
tagName string
18-
responseStatus int
19-
responseBody string
20-
expectedSHA string
21-
errorMessage string
18+
name string
19+
tagName string
20+
responseStatus int
21+
responseBody string
22+
responseMessage string
23+
expectedSHA string
24+
errorMessage string
2225
}{
2326
{
24-
name: "full semver tag",
27+
name: "match (200)",
2528
tagName: "v1.2.3",
2629
responseStatus: 200,
2730
responseBody: `{"object": {"sha": "1234567890abcdef1234567890abcdef12345678"}}`,
2831
expectedSHA: "1234567890abcdef1234567890abcdef12345678",
2932
},
3033
{
31-
name: "partial semver - major only",
32-
tagName: "v1",
33-
responseStatus: 200,
34-
responseBody: `{"object": {"sha": "abcdef1234567890abcdef1234567890abcdef12"}}`,
35-
expectedSHA: "abcdef1234567890abcdef1234567890abcdef12",
36-
},
37-
{
38-
name: "partial semver - major.minor",
39-
tagName: "v1.2",
40-
responseStatus: 200,
41-
responseBody: `{"object": {"sha": "fedcba0987654321fedcba0987654321fedcba09"}}`,
42-
expectedSHA: "fedcba0987654321fedcba0987654321fedcba09",
43-
},
44-
{
45-
name: "prerelease tag",
46-
tagName: "v1.2.3-alpha.1",
47-
responseStatus: 200,
48-
responseBody: `{"object": {"sha": "9876543210fedcba9876543210fedcba98765432"}}`,
49-
expectedSHA: "9876543210fedcba9876543210fedcba98765432",
50-
},
51-
{
52-
name: "tag not found",
53-
tagName: "v99.99.99",
54-
responseStatus: 404,
55-
responseBody: ``,
56-
errorMessage: "release not found",
34+
name: "non-match (404)",
35+
tagName: "v1.2.3",
36+
responseStatus: 404,
37+
responseMessage: `Not found`,
38+
errorMessage: "release not found",
5739
},
5840
{
59-
name: "empty response body with 200 status",
60-
tagName: "v1.0.0",
61-
responseStatus: 200,
62-
responseBody: `{}`,
63-
errorMessage: "release not found",
41+
name: "server error (500)",
42+
tagName: "v1.2.3",
43+
responseStatus: 500,
44+
responseMessage: `arbitrary error"`,
45+
errorMessage: "HTTP 500: arbitrary error\" (https://api.github.com/repos/owner/repo/git/ref/tags/v1.2.3)",
6446
},
6547
{
66-
name: "malformed JSON response",
67-
tagName: "v1.0.0",
48+
name: "malformed JSON with 200",
49+
tagName: "v1.2.3",
6850
responseStatus: 200,
6951
responseBody: `{"object": {"sha":`,
70-
errorMessage: "failed to parse Git ref response: unexpected EOF",
52+
errorMessage: "failed to parse ref response: unexpected EOF",
7153
},
7254
}
7355

@@ -80,10 +62,19 @@ func TestFetchRefSHA(t *testing.T) {
8062
require.NoError(t, err)
8163

8264
path := "repos/owner/repo/git/ref/tags/" + tt.tagName
83-
if tt.responseStatus == 404 {
84-
fakeHTTP.Register(httpmock.REST("GET", path), httpmock.StatusStringResponse(404, "Not Found"))
65+
if tt.responseStatus == 404 || tt.responseStatus == 500 {
66+
fakeHTTP.Register(
67+
httpmock.REST("GET", path),
68+
httpmock.JSONErrorResponse(tt.responseStatus, api.HTTPError{
69+
StatusCode: tt.responseStatus,
70+
Message: tt.responseMessage,
71+
}),
72+
)
8573
} else {
86-
fakeHTTP.Register(httpmock.REST("GET", path), httpmock.StringResponse(tt.responseBody))
74+
fakeHTTP.Register(
75+
httpmock.REST("GET", path),
76+
httpmock.StatusStringResponse(tt.responseStatus, tt.responseBody),
77+
)
8778
}
8879

8980
httpClient := &http.Client{Transport: fakeHTTP}
@@ -92,8 +83,8 @@ func TestFetchRefSHA(t *testing.T) {
9283
sha, err := FetchRefSHA(ctx, httpClient, repo, tt.tagName)
9384

9485
if tt.errorMessage != "" {
95-
require.Error(t, err)
96-
assert.EqualError(t, err, tt.errorMessage)
86+
assert.Contains(t, err.Error(), tt.errorMessage)
87+
assert.Empty(t, sha)
9788
} else {
9889
require.NoError(t, err)
9990
assert.Equal(t, tt.expectedSHA, sha)

0 commit comments

Comments
 (0)