fix(ui): reflect update availability and config changes; expand mobile player metadata
ci / api / api (push) Successful in 50s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m0s
ci / db / db (push) Successful in 58s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m39s
ci / ts / ts (packages + web) (push) Successful in 2m40s

This commit is contained in:
mrleo1nid committed 2026-10-23 00:20:59 +03:00
1 parent bc55528afd
commit a6c9fd8a00
30 files changed
+833 -395

No files matched your search

@@ -13,17 +13,46 @@ import (
"github.com/stretchr/testify/require"
"pipu/api/internal/auth"
"pipu/api/internal/buildinfo"
"pipu/api/internal/management"
"pipu/api/internal/server"
)
type bridge struct{ calls int }
type bridge struct {
calls int
body any
}
func (b *bridge) Call(_ context.Context, _, _ string, _, out any) error {
func (b *bridge) Call(_ context.Context, _, _ string, body, out any) error {
b.calls++
b.body = body
return json.Unmarshal([]byte(`{"sources":[],"versions":[],"current_version":"test","job":null,"source_error":"","entries":[],"revision":"r","restart_required":false}`), out)
}
func TestUpdatesUseRunningBuildIdentity(t *testing.T) {
b := &bridge{}
router := server.NewRouter(server.Deps{Management: management.NewHandler(b)})
for _, method := range []string{"GET", "POST"} {
body := `{"source_id":"origin","channel":"main","_running_commit":"forged","_running_version":"forged"}`
request := httptest.NewRequest(method, "/api/v1/admin/server/updates?channel=main&fresh=true", strings.NewReader(body))
request.Header.Set("Content-Type", "application/json")
request = request.WithContext(auth.WithPrincipal(request.Context(), auth.Principal{Role: auth.RoleAdmin}))
rec := httptest.NewRecorder()
router.ServeHTTP(rec, request)
require.Less(t, rec.Code, 300, rec.Body.String())
payload, err := json.Marshal(b.body)
require.NoError(t, err)
var values map[string]any
require.NoError(t, json.Unmarshal(payload, &values))
require.Equal(t, buildinfo.Version, values["_running_version"])
require.Equal(t, buildinfo.Revision, values["_running_commit"])
require.Equal(t, "main", values["channel"])
if method == "GET" {
require.Equal(t, true, values["fresh"])
}
}
}
func TestServerManagementAuthorization(t *testing.T) {
for _, tc := range []struct {
name string