Fix release download test http stubbing
Co-authored-by: William Martin <williammartin@github.com>
This commit is contained in:
parent
ee281fd9ba
commit
d78980c668
1 changed files with 158 additions and 34 deletions
|
|
@ -183,6 +183,7 @@ func Test_downloadRun(t *testing.T) {
|
|||
name string
|
||||
isTTY bool
|
||||
opts DownloadOptions
|
||||
httpStubs func(*httpmock.Registry)
|
||||
wantErr string
|
||||
wantStdout string
|
||||
wantStderr string
|
||||
|
|
@ -196,6 +197,24 @@ func Test_downloadRun(t *testing.T) {
|
|||
Destination: ".",
|
||||
Concurrency: 2,
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(httpmock.REST("GET", "assets/1234"), httpmock.StringResponse(`1234`))
|
||||
reg.Register(httpmock.REST("GET", "assets/3456"), httpmock.StringResponse(`3456`))
|
||||
reg.Register(httpmock.REST("GET", "assets/5678"), httpmock.StringResponse(`5678`))
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -213,6 +232,23 @@ func Test_downloadRun(t *testing.T) {
|
|||
Destination: "tmp/assets",
|
||||
Concurrency: 2,
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(httpmock.REST("GET", "assets/1234"), httpmock.StringResponse(`1234`))
|
||||
reg.Register(httpmock.REST("GET", "assets/3456"), httpmock.StringResponse(`3456`))
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -229,6 +265,20 @@ func Test_downloadRun(t *testing.T) {
|
|||
Destination: ".",
|
||||
Concurrency: 2,
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantErr: "no assets match the file pattern",
|
||||
|
|
@ -242,6 +292,30 @@ func Test_downloadRun(t *testing.T) {
|
|||
Destination: "tmp/packages",
|
||||
Concurrency: 2,
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(
|
||||
httpmock.REST(
|
||||
"GET",
|
||||
"repos/OWNER/REPO/zipball/v1.2.3",
|
||||
),
|
||||
httpmock.WithHeader(
|
||||
httpmock.StringResponse("somedata"), "content-disposition", "attachment; filename=zipball.zip",
|
||||
),
|
||||
)
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -257,6 +331,30 @@ func Test_downloadRun(t *testing.T) {
|
|||
Destination: "tmp/packages",
|
||||
Concurrency: 2,
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(
|
||||
httpmock.REST(
|
||||
"GET",
|
||||
"repos/OWNER/REPO/tarball/v1.2.3",
|
||||
),
|
||||
httpmock.WithHeader(
|
||||
httpmock.StringResponse("somedata"), "content-disposition", "attachment; filename=tarball.tgz",
|
||||
),
|
||||
)
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -273,6 +371,30 @@ func Test_downloadRun(t *testing.T) {
|
|||
Concurrency: 2,
|
||||
ArchiveType: "tar.gz",
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(
|
||||
httpmock.REST(
|
||||
"GET",
|
||||
"repos/OWNER/REPO/tarball/v1.2.3",
|
||||
),
|
||||
httpmock.WithHeader(
|
||||
httpmock.StringResponse("somedata"), "content-disposition", "attachment; filename=tarball.tgz",
|
||||
),
|
||||
)
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -289,6 +411,22 @@ func Test_downloadRun(t *testing.T) {
|
|||
Concurrency: 2,
|
||||
FilePatterns: []string{"*windows-32bit.zip"},
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(httpmock.REST("GET", "assets/1234"), httpmock.StringResponse(`1234`))
|
||||
},
|
||||
wantStdout: ``,
|
||||
wantStderr: ``,
|
||||
wantFiles: []string{
|
||||
|
|
@ -305,6 +443,22 @@ func Test_downloadRun(t *testing.T) {
|
|||
Concurrency: 2,
|
||||
FilePatterns: []string{"*windows-32bit.zip"},
|
||||
},
|
||||
httpStubs: func(reg *httpmock.Registry) {
|
||||
shared.StubFetchRelease(t, reg, "OWNER", "REPO", "v1.2.3", `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
|
||||
reg.Register(httpmock.REST("GET", "assets/1234"), httpmock.StringResponse(`1234`))
|
||||
},
|
||||
wantStdout: `1234`,
|
||||
wantStderr: ``,
|
||||
},
|
||||
|
|
@ -324,41 +478,11 @@ func Test_downloadRun(t *testing.T) {
|
|||
ios.SetStderrTTY(tt.isTTY)
|
||||
|
||||
fakeHTTP := &httpmock.Registry{}
|
||||
shared.StubFetchRelease(t, fakeHTTP, "OWNER", "REPO", tt.opts.TagName, `{
|
||||
"assets": [
|
||||
{ "name": "windows-32bit.zip", "size": 12,
|
||||
"url": "https://api.github.com/assets/1234" },
|
||||
{ "name": "windows-64bit.zip", "size": 34,
|
||||
"url": "https://api.github.com/assets/3456" },
|
||||
{ "name": "linux.tgz", "size": 56,
|
||||
"url": "https://api.github.com/assets/5678" }
|
||||
],
|
||||
"tarball_url": "https://api.github.com/repos/OWNER/REPO/tarball/v1.2.3",
|
||||
"zipball_url": "https://api.github.com/repos/OWNER/REPO/zipball/v1.2.3"
|
||||
}`)
|
||||
fakeHTTP.Register(httpmock.REST("GET", "assets/1234"), httpmock.StringResponse(`1234`))
|
||||
fakeHTTP.Register(httpmock.REST("GET", "assets/3456"), httpmock.StringResponse(`3456`))
|
||||
fakeHTTP.Register(httpmock.REST("GET", "assets/5678"), httpmock.StringResponse(`5678`))
|
||||
defer fakeHTTP.Verify(t)
|
||||
|
||||
fakeHTTP.Register(
|
||||
httpmock.REST(
|
||||
"GET",
|
||||
"repos/OWNER/REPO/tarball/v1.2.3",
|
||||
),
|
||||
httpmock.WithHeader(
|
||||
httpmock.StringResponse("somedata"), "content-disposition", "attachment; filename=tarball.tgz",
|
||||
),
|
||||
)
|
||||
|
||||
fakeHTTP.Register(
|
||||
httpmock.REST(
|
||||
"GET",
|
||||
"repos/OWNER/REPO/zipball/v1.2.3",
|
||||
),
|
||||
httpmock.WithHeader(
|
||||
httpmock.StringResponse("somedata"), "content-disposition", "attachment; filename=zipball.zip",
|
||||
),
|
||||
)
|
||||
if tt.httpStubs != nil {
|
||||
tt.httpStubs(fakeHTTP)
|
||||
}
|
||||
|
||||
tt.opts.IO = ios
|
||||
tt.opts.HttpClient = func() (*http.Client, error) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue