feat: backend service
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package integration_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"galaxy/integration/testenv"
|
||||
usermodel "galaxy/model/user"
|
||||
"galaxy/transcoder"
|
||||
)
|
||||
|
||||
// TestUserSettingsUpdate verifies `user.settings.update` accepts a
|
||||
// valid BCP 47 / IANA pair and rejects malformed inputs through the
|
||||
// gateway gRPC surface.
|
||||
func TestUserSettingsUpdate(t *testing.T) {
|
||||
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||
defer cancel()
|
||||
|
||||
sess := testenv.RegisterSession(t, plat, "pilot+settings@example.com")
|
||||
gw, err := sess.DialAuthenticated(ctx, plat)
|
||||
if err != nil {
|
||||
t.Fatalf("dial: %v", err)
|
||||
}
|
||||
defer gw.Close()
|
||||
|
||||
good, err := transcoder.UpdateMySettingsRequestToPayload(&usermodel.UpdateMySettingsRequest{
|
||||
PreferredLanguage: "fr-CA",
|
||||
TimeZone: "America/Toronto",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("encode payload: %v", err)
|
||||
}
|
||||
res, err := gw.Execute(ctx, usermodel.MessageTypeUpdateMySettings, good, testenv.ExecuteOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("execute valid update: %v", err)
|
||||
}
|
||||
if res.ResultCode != "ok" {
|
||||
t.Fatalf("valid update result_code = %q, want ok", res.ResultCode)
|
||||
}
|
||||
updated, err := transcoder.PayloadToAccountResponse(res.PayloadBytes)
|
||||
if err != nil {
|
||||
t.Fatalf("decode response: %v", err)
|
||||
}
|
||||
if updated.Account.PreferredLanguage != "fr-CA" || updated.Account.TimeZone != "America/Toronto" {
|
||||
t.Fatalf("settings not applied: lang=%q tz=%q", updated.Account.PreferredLanguage, updated.Account.TimeZone)
|
||||
}
|
||||
|
||||
bad, err := transcoder.UpdateMySettingsRequestToPayload(&usermodel.UpdateMySettingsRequest{
|
||||
PreferredLanguage: "not-a-language",
|
||||
TimeZone: "Mars/Olympus",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("encode bad payload: %v", err)
|
||||
}
|
||||
res, err = gw.Execute(ctx, usermodel.MessageTypeUpdateMySettings, bad, testenv.ExecuteOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("execute invalid update: %v", err)
|
||||
}
|
||||
if res.ResultCode == "ok" {
|
||||
t.Fatalf("invalid update was accepted: %q", res.ResultCode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user