Skip to content

Commit abb9500

Browse files
authored
chore: add tests for internal/models (#740)
1 parent 23b0ea4 commit abb9500

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

internal/models/id_generators_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package models
2+
3+
import (
4+
"encoding/base64"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func TestULIDGenerator(t *testing.T) {
12+
generator := ULIDGenerator{}
13+
14+
ulid, err := generator.ID()
15+
16+
require.NoError(t, err)
17+
assert.NotEmpty(t, ulid)
18+
}
19+
20+
func TestRandomGenerator(t *testing.T) {
21+
generator := NewRandomGenerator(32)
22+
23+
id, err := generator.ID()
24+
25+
require.NoError(t, err)
26+
assert.NotEmpty(t, id)
27+
28+
decoded, err := base64.RawURLEncoding.DecodeString(id)
29+
require.NoError(t, err)
30+
assert.Len(t, decoded, 32)
31+
}

internal/models/session_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,17 @@ func TestSessionTouchNoExpiry(t *testing.T) {
5555
assert.True(t, session.ExpiresAt.IsZero())
5656
}
5757

58+
func TestSessionTouchNoIdleTTL(t *testing.T) {
59+
session := Session{
60+
CreatedAt: time.Now(),
61+
MaxTTLSeconds: 300,
62+
}
63+
session.Touch()
64+
assert.False(t, session.Expired())
65+
assert.True(t, session.ExpiresAt.After(session.CreatedAt))
66+
assert.True(t, session.ExpiresAt.Equal(session.CreatedAt.Add(session.MaxTTL())))
67+
}
68+
5869
func TestSessionLoginState(t *testing.T) {
5970
session := Session{
6071
CreatedAt: time.Now(),

internal/models/tokens_test.go renamed to internal/models/token_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,64 @@ func TestNoEncryptor(t *testing.T) {
7474
assert.Equal(t, token, encToken)
7575
assert.Equal(t, token, decToken)
7676
}
77+
78+
func TestTokenString(t *testing.T) {
79+
token := AuthToken{
80+
ID: "123456",
81+
Value: "secretValue",
82+
ProviderID: "providerId",
83+
SessionID: "sessionId",
84+
Type: AccessTokenType,
85+
}
86+
tokenString := token.String()
87+
assert.Contains(t, tokenString, "ID: 123456")
88+
assert.Contains(t, tokenString, "Value: redacted")
89+
assert.NotContains(t, tokenString, "secretValue")
90+
assert.Contains(t, tokenString, "ProviderID: providerId")
91+
assert.Contains(t, tokenString, "SessionID: sessionId")
92+
assert.Contains(t, tokenString, AccessTokenType)
93+
}
94+
95+
func TestTokenNotExpired(t *testing.T) {
96+
token := AuthToken{
97+
ExpiresAt: time.Now().Add(time.Duration(5) * time.Minute),
98+
}
99+
assert.False(t, token.Expired())
100+
}
101+
102+
func TestTokenExpired(t *testing.T) {
103+
token := AuthToken{
104+
ExpiresAt: time.Now().Add(-time.Duration(5) * time.Minute),
105+
}
106+
assert.True(t, token.Expired())
107+
}
108+
109+
func TestTokenNoExpiry(t *testing.T) {
110+
token := AuthToken{
111+
ExpiresAt: time.Time{},
112+
}
113+
assert.True(t, token.ExpiresAt.IsZero())
114+
assert.False(t, token.Expired())
115+
}
116+
117+
func TestTokenNotExpiresSoon(t *testing.T) {
118+
token := AuthToken{
119+
ExpiresAt: time.Now().Add(time.Duration(5) * time.Minute),
120+
}
121+
assert.False(t, token.ExpiresSoon(time.Duration(3)*time.Minute))
122+
}
123+
124+
func TestTokenExpiresSoon(t *testing.T) {
125+
token := AuthToken{
126+
ExpiresAt: time.Now().Add(time.Duration(2) * time.Minute),
127+
}
128+
assert.True(t, token.ExpiresSoon(time.Duration(3)*time.Minute))
129+
}
130+
131+
func TestTokenExpiresSoonNoExpiry(t *testing.T) {
132+
token := AuthToken{
133+
ExpiresAt: time.Time{},
134+
}
135+
assert.True(t, token.ExpiresAt.IsZero())
136+
assert.False(t, token.ExpiresSoon(time.Duration(3)*time.Minute))
137+
}

0 commit comments

Comments
 (0)