X Tutup
Skip to content

Commit 541ed3b

Browse files
author
vilmibm
committed
test Upgrade with binary exts
1 parent 22c1778 commit 541ed3b

File tree

1 file changed

+95
-1
lines changed

1 file changed

+95
-1
lines changed

pkg/cmd/extension/manager_test.go

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,101 @@ func TestManager_Upgrade_NoExtensions(t *testing.T) {
204204
}
205205

206206
func TestManager_Upgrade_BinaryExtension(t *testing.T) {
207-
// TODO
207+
tempDir := t.TempDir()
208+
209+
installReg := httpmock.Registry{}
210+
defer installReg.Verify(t)
211+
installClient := http.Client{Transport: &installReg}
212+
213+
io, _, _, _ := iostreams.Test()
214+
m := newTestManager(tempDir, &installClient, io)
215+
repo := ghrepo.NewWithHost("owner", "gh-bin-ext", "example.com")
216+
217+
installReg.Register(
218+
httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"),
219+
httpmock.JSONResponse(
220+
release{
221+
Assets: []releaseAsset{
222+
{
223+
Name: "gh-bin-ext-windows-amd64",
224+
APIURL: "https://example.com/release/cool",
225+
},
226+
},
227+
}))
228+
installReg.Register(
229+
httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"),
230+
httpmock.JSONResponse(
231+
release{
232+
Tag: "v1.0.1",
233+
Assets: []releaseAsset{
234+
{
235+
Name: "gh-bin-ext-windows-amd64",
236+
APIURL: "https://example.com/release/cool",
237+
},
238+
},
239+
}))
240+
installReg.Register(
241+
httpmock.REST("GET", "release/cool"),
242+
httpmock.StringResponse("FAKE BINARY"))
243+
244+
err := m.Install(repo)
245+
assert.NoError(t, err)
246+
247+
upgradeReg := httpmock.Registry{}
248+
defer upgradeReg.Verify(t)
249+
upgradeClient := http.Client{Transport: &upgradeReg}
250+
251+
um := newTestManager(tempDir, &upgradeClient, io)
252+
upgradeReg.Register(
253+
httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"),
254+
httpmock.JSONResponse(
255+
release{
256+
Tag: "v1.0.2",
257+
Assets: []releaseAsset{
258+
{
259+
Name: "gh-bin-ext-windows-amd64",
260+
APIURL: "https://example.com/release/cool2",
261+
},
262+
},
263+
}))
264+
upgradeReg.Register(
265+
httpmock.REST("GET", "api/v3/repos/owner/gh-bin-ext/releases/latest"),
266+
httpmock.JSONResponse(
267+
release{
268+
Tag: "v1.0.2",
269+
Assets: []releaseAsset{
270+
{
271+
Name: "gh-bin-ext-windows-amd64",
272+
APIURL: "https://example.com/release/cool2",
273+
},
274+
},
275+
}))
276+
upgradeReg.Register(
277+
httpmock.REST("GET", "release/cool2"),
278+
httpmock.StringResponse("FAKE UPGRADED BINARY"))
279+
280+
err = um.Upgrade("bin-ext", false)
281+
assert.NoError(t, err)
282+
283+
manifest, err := os.ReadFile(filepath.Join(tempDir, "extensions/gh-bin-ext", manifestName))
284+
assert.NoError(t, err)
285+
286+
var bm binManifest
287+
err = yaml.Unmarshal(manifest, &bm)
288+
assert.NoError(t, err)
289+
290+
assert.Equal(t, binManifest{
291+
Name: "gh-bin-ext",
292+
Owner: "owner",
293+
Host: "example.com",
294+
Tag: "v1.0.2",
295+
Path: filepath.Join(tempDir, "extensions/gh-bin-ext/gh-bin-ext"),
296+
}, bm)
297+
298+
fakeBin, err := os.ReadFile(filepath.Join(tempDir, "extensions/gh-bin-ext/gh-bin-ext"))
299+
assert.NoError(t, err)
300+
301+
assert.Equal(t, "FAKE UPGRADED BINARY", string(fakeBin))
208302
}
209303

210304
func TestManager_Install_git(t *testing.T) {

0 commit comments

Comments
 (0)
X Tutup