MCPcopy Index your code
hub / github.com/getsops/sops / Test_releaseFetcher_LatestReleaseUsingAPI

Function Test_releaseFetcher_LatestReleaseUsingAPI

version/version_test.go:170–232  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

168}
169
170func Test_releaseFetcher_LatestReleaseUsingAPI(t *testing.T) {
171 tests := []struct {
172 name string
173 mockServer mockServer
174 wantTag string
175 wantURL string
176 wantErr bool
177 }{
178 {
179 name: "Success",
180 mockServer: mockServer{
181 statusCode: http.StatusOK,
182 response: `{"tag_name": "v1.0.0", "html_url": "https://github.com/owner/repo/releases/tag/v1.0.0"}`,
183 },
184 wantTag: "v1.0.0",
185 wantURL: "https://github.com/owner/repo/releases/tag/v1.0.0",
186 },
187 {
188 name: "RequestError",
189 mockServer: mockServer{
190 statusCode: http.StatusInternalServerError,
191 response: "",
192 },
193 wantErr: true,
194 },
195 {
196 name: "DecodeError",
197 mockServer: mockServer{
198 statusCode: http.StatusOK,
199 response: `{"invalid_json":}`,
200 },
201 wantErr: true,
202 },
203 {
204 name: "NonOKStatusCode",
205 mockServer: mockServer{
206 statusCode: http.StatusNotFound,
207 response: "",
208 },
209 wantErr: true,
210 },
211 }
212
213 for _, test := range tests {
214 t.Run(test.name, func(t *testing.T) {
215 server := test.mockServer.start()
216 defer server.Close()
217
218 f := releaseFetcher{
219 apiEndpoint: server.URL,
220 }
221 tag, url, err := f.LatestReleaseUsingAPI("owner/repo")
222
223 if test.wantErr {
224 assert.Error(t, err, "Expected an error")
225 } else {
226 assert.NoError(t, err, "Unexpected error")
227 }

Callers

nothing calls this directly

Calls 3

LatestReleaseUsingAPIMethod · 0.95
startMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected