55 lines
2.0 KiB
Go
55 lines
2.0 KiB
Go
package integration_test
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
"galaxy/integration/testenv"
|
|
)
|
|
|
|
// TestAdminEngineVersionsCRUD covers the engine-version registry: a
|
|
// single admin creates, updates, disables a version. A user attempting
|
|
// the same endpoint with X-User-ID is rejected (Basic Auth required).
|
|
func TestAdminEngineVersionsCRUD(t *testing.T) {
|
|
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
|
defer cancel()
|
|
|
|
admin := testenv.NewBackendAdminClient(plat.Backend.HTTPURL, plat.Backend.AdminUser, plat.Backend.AdminPassword)
|
|
raw, resp, err := admin.Do(ctx, http.MethodPost, "/api/v1/admin/engine-versions", map[string]any{
|
|
"version": "v1.0.0",
|
|
"image_ref": "galaxy/game:integration",
|
|
"enabled": true,
|
|
})
|
|
if err != nil || resp.StatusCode/100 != 2 {
|
|
t.Fatalf("create version: err=%v status=%d body=%s", err, resp.StatusCode, string(raw))
|
|
}
|
|
|
|
// Update image_ref + enabled flag.
|
|
raw, resp, err = admin.Do(ctx, http.MethodPatch, "/api/v1/admin/engine-versions/v1.0.0", map[string]any{
|
|
"image_ref": "galaxy/game:integration",
|
|
"enabled": false,
|
|
})
|
|
if err != nil || resp.StatusCode != http.StatusOK {
|
|
t.Fatalf("update version: err=%v status=%d body=%s", err, resp.StatusCode, string(raw))
|
|
}
|
|
|
|
// Disable explicitly through the dedicated endpoint.
|
|
raw, resp, err = admin.Do(ctx, http.MethodPost, "/api/v1/admin/engine-versions/v1.0.0/disable", nil)
|
|
if err != nil || resp.StatusCode != http.StatusOK {
|
|
t.Fatalf("disable version: err=%v status=%d body=%s", err, resp.StatusCode, string(raw))
|
|
}
|
|
|
|
// A regular user surface must not have access to this admin endpoint.
|
|
noAuth := testenv.NewBackendAdminClient(plat.Backend.HTTPURL, "wrong", "wrong")
|
|
raw, resp, err = noAuth.Do(ctx, http.MethodGet, "/api/v1/admin/engine-versions", nil)
|
|
if err != nil {
|
|
t.Fatalf("unauth call: %v", err)
|
|
}
|
|
if resp.StatusCode != http.StatusUnauthorized {
|
|
t.Fatalf("unauth status = %d body=%s, want 401", resp.StatusCode, string(raw))
|
|
}
|
|
}
|