loader revisited

This commit is contained in:
Ilia Denisov
2026-03-16 19:52:02 +02:00
committed by GitHub
parent e6c6970947
commit 3f1776aa5f
30 changed files with 1581 additions and 527 deletions
+64 -4
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"galaxy/connector"
gerr "galaxy/error"
"galaxy/model/report"
"io"
"net"
@@ -151,12 +152,12 @@ func TestCheckVersion(t *testing.T) {
t,
context.Background(),
stdhttp.StatusOK,
`[{"os":"darwin","version":"1.2.3","url":"https://example.com/darwin"}]`,
`[{"os":"darwin","arch":"amd64","kind":"executable","version":"1.2.3","url":"https://example.com/darwin"}]`,
"",
)
},
want: []connector.VersionInfo{
{OS: "darwin", Version: "1.2.3", URL: "https://example.com/darwin"},
{OS: "darwin", Arch: "amd64", Kind: connector.ArtifactKindExecutable, Version: "1.2.3", URL: "https://example.com/darwin"},
},
wantPath: "/api/v1/versions",
},
@@ -215,12 +216,12 @@ func TestCheckVersion(t *testing.T) {
t,
context.Background(),
stdhttp.StatusOK,
`[{"os":"linux","version":"2.0.0","url":"https://example.com/linux"}]`,
`[{"os":"linux","arch":"amd64","kind":"executable","version":"2.0.0","url":"https://example.com/linux"}]`,
"/base",
)
},
want: []connector.VersionInfo{
{OS: "linux", Version: "2.0.0", URL: "https://example.com/linux"},
{OS: "linux", Arch: "amd64", Kind: connector.ArtifactKindExecutable, Version: "2.0.0", URL: "https://example.com/linux"},
},
wantPath: "/base/api/v1/versions",
},
@@ -260,6 +261,65 @@ func TestCheckVersion(t *testing.T) {
}
}
// TestCheckVersionClassifiesTransportFailure verifies transport failures are surfaced as connection errors.
func TestCheckVersionClassifiesTransportFailure(t *testing.T) {
t.Parallel()
conn := newUnreachableConnector(t, context.Background())
_, err := conn.CheckVersion()
if err == nil {
t.Fatal("CheckVersion() error = nil, want non-nil")
}
if !gerr.IsConnection(err) {
t.Fatalf("CheckVersion() error = %v, want connection classified error", err)
}
}
// TestCheckVersionClassifiesInvalidJSON verifies malformed backend payloads are surfaced as service errors.
func TestCheckVersionClassifiesInvalidJSON(t *testing.T) {
t.Parallel()
conn, _ := newVersionServerConnector(
t,
context.Background(),
stdhttp.StatusOK,
`{"versions":`,
"",
)
_, err := conn.CheckVersion()
if err == nil {
t.Fatal("CheckVersion() error = nil, want non-nil")
}
if !gerr.IsService(err) {
t.Fatalf("CheckVersion() error = %v, want service classified error", err)
}
}
// TestDownloadVersionClassifiesUnexpectedStatus verifies HTTP protocol failures are surfaced as service errors.
func TestDownloadVersionClassifiesUnexpectedStatus(t *testing.T) {
t.Parallel()
server := httptest.NewServer(stdhttp.HandlerFunc(func(w stdhttp.ResponseWriter, r *stdhttp.Request) {
w.WriteHeader(stdhttp.StatusBadGateway)
}))
t.Cleanup(server.Close)
conn, err := NewHttpConnector(context.Background(), server.URL)
if err != nil {
t.Fatalf("NewHttpConnector() error = %v", err)
}
_, err = conn.DownloadVersion("downloads/client.bin")
if err == nil {
t.Fatal("DownloadVersion() error = nil, want non-nil")
}
if !gerr.IsService(err) {
t.Fatalf("DownloadVersion() error = %v, want service classified error", err)
}
}
// TestFetchReport verifies asynchronous report retrieval behavior.
func TestFetchReport(t *testing.T) {
tests := []fetchReportCase{