feat: authsession service
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user