package getsession import ( "context" "github.com/stretchr/testify/require" "testing" "time" "galaxy/authsession/internal/domain/common" "galaxy/authsession/internal/domain/devicesession" "galaxy/authsession/internal/service/shared" "galaxy/authsession/internal/testkit" ) func TestExecuteReturnsMappedSession(t *testing.T) { t.Parallel() store := &testkit.InMemorySessionStore{} record := activeSessionFixture("device-session-1", "user-1", time.Unix(10, 0).UTC()) if err := store.Create(context.Background(), record); err != nil { require.Failf(t, "test failed", "Create() returned error: %v", err) } service, err := New(store) if err != nil { require.Failf(t, "test failed", "New() returned error: %v", err) } result, err := service.Execute(context.Background(), Input{DeviceSessionID: " device-session-1 "}) if err != nil { require.Failf(t, "test failed", "Execute() returned error: %v", err) } if result.Session.DeviceSessionID != "device-session-1" { require.Failf(t, "test failed", "Execute().Session.DeviceSessionID = %q, want %q", result.Session.DeviceSessionID, "device-session-1") } if result.Session.CreatedAt != time.Unix(10, 0).UTC().Format(time.RFC3339) { require.Failf(t, "test failed", "Execute().Session.CreatedAt = %q", result.Session.CreatedAt) } } func TestExecuteReturnsSessionNotFound(t *testing.T) { t.Parallel() service, err := New(&testkit.InMemorySessionStore{}) if err != nil { require.Failf(t, "test failed", "New() returned error: %v", err) } _, err = service.Execute(context.Background(), Input{DeviceSessionID: "missing"}) if shared.CodeOf(err) != shared.ErrorCodeSessionNotFound { require.Failf(t, "test failed", "Execute() error code = %q, want %q", shared.CodeOf(err), shared.ErrorCodeSessionNotFound) } } func activeSessionFixture(deviceSessionID string, userID string, createdAt time.Time) devicesession.Session { key, err := common.NewClientPublicKey(make([]byte, 32)) if err != nil { panic(err) } return devicesession.Session{ ID: common.DeviceSessionID(deviceSessionID), UserID: common.UserID(userID), ClientPublicKey: key, Status: devicesession.StatusActive, CreatedAt: createdAt, } }