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