MCPcopy Create free account
hub / github.com/cli/cli / TestFetchReleaseFromTag

Function TestFetchReleaseFromTag

pkg/cmd/extension/http_test.go:186–232  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

184}
185
186func TestFetchReleaseFromTag(t *testing.T) {
187 repo := ghrepo.New("OWNER", "REPO")
188
189 t.Run("success", func(t *testing.T) {
190 client := extensionHTTPClient(t, "repos/OWNER/REPO/releases/tags/v1.2.3", http.StatusOK, `{"tag_name":"v1.2.3","assets":[{"name":"asset","url":"https://example.com/asset"}]}`)
191
192 got, err := fetchReleaseFromTag(client, repo, "v1.2.3")
193
194 require.NoError(t, err)
195 assert.Equal(t, &release{
196 Tag: "v1.2.3",
197 Assets: []releaseAsset{{
198 Name: "asset",
199 APIURL: "https://example.com/asset",
200 }},
201 }, got)
202 })
203
204 t.Run("not found", func(t *testing.T) {
205 client := extensionHTTPClient(t, "repos/OWNER/REPO/releases/tags/v1.2.3", http.StatusNotFound, `{"message":"Not Found"}`)
206
207 got, err := fetchReleaseFromTag(client, repo, "v1.2.3")
208
209 assert.Nil(t, got)
210 require.Same(t, releaseNotFoundErr, err)
211 })
212
213 t.Run("server error", func(t *testing.T) {
214 client := extensionHTTPClient(t, "repos/OWNER/REPO/releases/tags/v1.2.3", http.StatusInternalServerError, `{"message":"Internal Server Error"}`)
215
216 got, err := fetchReleaseFromTag(client, repo, "v1.2.3")
217
218 assert.Nil(t, got)
219 requireExtensionHTTPError(t, err, http.StatusInternalServerError)
220 })
221
222 for _, status := range []int{http.StatusNoContent, http.StatusResetContent} {
223 t.Run(http.StatusText(status), func(t *testing.T) {
224 client := extensionHTTPClient(t, "repos/OWNER/REPO/releases/tags/v1.2.3", status, "")
225
226 got, err := fetchReleaseFromTag(client, repo, "v1.2.3")
227
228 assert.Nil(t, got)
229 require.EqualError(t, err, "unexpected end of JSON input")
230 })
231 }
232}

Callers

nothing calls this directly

Calls 6

NewFunction · 0.92
extensionHTTPClientFunction · 0.85
fetchReleaseFromTagFunction · 0.85
EqualMethod · 0.80
RunMethod · 0.65

Tested by

no test coverage detected