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) }