feat: authsession service

This commit is contained in:
Ilia Denisov
2026-04-08 16:23:07 +02:00
committed by GitHub
parent 28f04916af
commit 86a68ed9d0
174 changed files with 31732 additions and 112 deletions
@@ -0,0 +1,65 @@
package contracttest
import (
"context"
"testing"
"galaxy/authsession/internal/ports"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
// ConfigProviderHarnessFactory constructs a fresh semantic ConfigProvider
// harness suitable for one isolated contract subtest.
type ConfigProviderHarnessFactory func(t *testing.T) ConfigProviderHarness
// ConfigProviderHarness bundles one semantic ConfigProvider instance with the
// seed hooks needed by the backend-agnostic contract suite.
type ConfigProviderHarness struct {
// Provider is the semantic ConfigProvider under test.
Provider ports.ConfigProvider
// SeedDisabled prepares storage so LoadSessionLimit observes “limit absent”.
SeedDisabled func(t *testing.T)
// SeedLimit prepares storage so LoadSessionLimit observes a valid positive
// configured limit.
SeedLimit func(t *testing.T, limit int)
}
// RunConfigProviderContractTests executes the backend-agnostic ConfigProvider
// semantic contract suite against newHarness.
func RunConfigProviderContractTests(t *testing.T, newHarness ConfigProviderHarnessFactory) {
t.Helper()
t.Run("limit absent means disabled", func(t *testing.T) {
t.Parallel()
harness := newHarness(t)
require.NotNil(t, harness.Provider)
require.NotNil(t, harness.SeedDisabled)
harness.SeedDisabled(t)
got, err := harness.Provider.LoadSessionLimit(context.Background())
require.NoError(t, err)
assert.Equal(t, ports.SessionLimitConfig{}, got)
})
t.Run("valid positive limit means configured", func(t *testing.T) {
t.Parallel()
harness := newHarness(t)
require.NotNil(t, harness.Provider)
require.NotNil(t, harness.SeedLimit)
want := 5
harness.SeedLimit(t, want)
got, err := harness.Provider.LoadSessionLimit(context.Background())
require.NoError(t, err)
require.NotNil(t, got.ActiveSessionLimit)
assert.Equal(t, want, *got.ActiveSessionLimit)
})
}