- PCHIP для предпросмотра и серверного рендера - пресеты всех каналов в профиле, импорт и экспорт - мерж настроек auth без потери разделов - сохранение вкладки и правок текущего фото при переключении
57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package e2e
|
|
|
|
import (
|
|
"context"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
// Curve presets live in the user profile: they survive a round trip through
|
|
// the metadata layer and are never visible to another user.
|
|
func TestCurvePresetsPersistAndArePrivate(t *testing.T) {
|
|
ctx := context.Background()
|
|
st, closeDB := openStack(t, filepath.Join(t.TempDir(), "galo.db"), t.TempDir())
|
|
defer closeDB()
|
|
|
|
owner, _, err := st.auth.Register(ctx, "presets@test.local", "", "password123", "Owner")
|
|
if err != nil {
|
|
t.Fatalf("register owner: %v", err)
|
|
}
|
|
other, _, err := st.auth.Register(ctx, "otherpresets@test.local", "", "password123", "Other")
|
|
if err != nil {
|
|
t.Fatalf("register other: %v", err)
|
|
}
|
|
|
|
raw := []byte(`{"curve_presets":[{"name":"Мой контраст","channels":{"rgb":[{"x":0,"y":0},{"x":1,"y":0.9}],"red":[{"x":0,"y":0},{"x":1,"y":1}],"green":[{"x":0,"y":0},{"x":1,"y":1}],"blue":[{"x":0,"y":0},{"x":1,"y":1}]}}]}`)
|
|
if err := st.repos.Auth.UpdatePreferences(ctx, owner.ID, raw); err != nil {
|
|
t.Fatalf("update preferences: %v", err)
|
|
}
|
|
|
|
got, err := st.repos.Auth.GetUserByID(ctx, owner.ID)
|
|
if err != nil {
|
|
t.Fatalf("get owner: %v", err)
|
|
}
|
|
presets, ok := got.Preferences["curve_presets"].([]any)
|
|
if !ok || len(presets) != 1 {
|
|
t.Fatalf("presets not stored: %+v", got.Preferences)
|
|
}
|
|
preset, _ := presets[0].(map[string]any)
|
|
if preset["name"] != "Мой контраст" {
|
|
t.Fatalf("preset = %+v", preset)
|
|
}
|
|
channels, _ := preset["channels"].(map[string]any)
|
|
for _, channel := range []string{"rgb", "red", "green", "blue"} {
|
|
if points, ok := channels[channel].([]any); !ok || len(points) != 2 {
|
|
t.Fatalf("channel %s = %#v", channel, channels[channel])
|
|
}
|
|
}
|
|
|
|
otherUser, err := st.repos.Auth.GetUserByID(ctx, other.ID)
|
|
if err != nil {
|
|
t.Fatalf("get other: %v", err)
|
|
}
|
|
if _, ok := otherUser.Preferences["curve_presets"]; ok {
|
|
t.Fatalf("other user sees presets: %+v", otherUser.Preferences)
|
|
}
|
|
}
|