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,60 @@
package local
import (
"regexp"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestClockNowReturnsUTC(t *testing.T) {
t.Parallel()
now := Clock{}.Now()
assert.Equal(t, time.UTC, now.Location())
}
func TestIDGeneratorProducesValidOpaqueIDs(t *testing.T) {
t.Parallel()
generator := IDGenerator{}
challengeID, err := generator.NewChallengeID()
require.NoError(t, err)
require.NoError(t, challengeID.Validate())
assert.Regexp(t, regexp.MustCompile(`^challenge-[A-Za-z0-9_-]+$`), challengeID.String())
deviceSessionID, err := generator.NewDeviceSessionID()
require.NoError(t, err)
require.NoError(t, deviceSessionID.Validate())
assert.Regexp(t, regexp.MustCompile(`^device-session-[A-Za-z0-9_-]+$`), deviceSessionID.String())
}
func TestCodeGeneratorProducesSixDigitNumericCodes(t *testing.T) {
t.Parallel()
code, err := CodeGenerator{}.Generate()
require.NoError(t, err)
assert.Regexp(t, regexp.MustCompile(`^\d{6}$`), code)
}
func TestCodeHasherHashesAndComparesCodes(t *testing.T) {
t.Parallel()
hasher := CodeHasher{}
hash, err := hasher.Hash("123456")
require.NoError(t, err)
require.NotEmpty(t, hash)
match, err := hasher.Compare(hash, "123456")
require.NoError(t, err)
assert.True(t, match)
match, err = hasher.Compare(hash, "000000")
require.NoError(t, err)
assert.False(t, match)
}