all repos

onasty @ e4abd996ae0618efe2596787bd0a30b88cf81573

a one-time notes service

onasty/internal/jwtutil/jwtutil_test.go (view raw)

Smirnov Oleksandr Smirnov Oleksandr
ss2316544@gmail.com
refactor: fix annoyances (#97)..., 1 year ago
1
package jwtutil
2
3
import (
4
	"testing"
5
	"time"
6
7
	"github.com/stretchr/testify/assert"
8
	"github.com/stretchr/testify/require"
9
)
10
11
func TestJWTUtil_AccessToken(t *testing.T) {
12
	jwt := NewJWTUtil("key", time.Hour)
13
	payload := Payload{UserID: "user.123"}
14
15
	token, err := jwt.AccessToken(payload)
16
	require.NoError(t, err)
17
	assert.NotEmpty(t, token)
18
}
19
20
func TestJWTUtil_RefreshToken(t *testing.T) {
21
	jwt := NewJWTUtil("key", time.Hour)
22
23
	tok, err := jwt.RefreshToken()
24
	require.NoError(t, err)
25
	assert.Len(t, tok, 64)
26
27
	secondTok, err := jwt.RefreshToken()
28
	require.NoError(t, err)
29
30
	// tokens should be unique
31
	assert.NotEqual(t, tok, secondTok)
32
}
33
34
func TestJWTUtil_Parse(t *testing.T) {
35
	jwt := NewJWTUtil("key", time.Hour)
36
	payload := Payload{UserID: "qwerty"}
37
38
	token, err := jwt.AccessToken(payload)
39
	require.NoError(t, err)
40
	assert.NotEmpty(t, token)
41
42
	parsedPayload, err := jwt.Parse(token)
43
	require.NoError(t, err)
44
45
	assert.Equal(t, payload, parsedPayload)
46
}
47
48
func TestJWTUtil_Parse_expired(t *testing.T) {
49
	ttl := 100 * time.Millisecond
50
	jwt := NewJWTUtil("key", ttl)
51
	payload := Payload{UserID: "qwerty"}
52
53
	token, err := jwt.AccessToken(payload)
54
	require.NoError(t, err)
55
	assert.NotEmpty(t, token)
56
57
	time.Sleep(ttl)
58
	_, err = jwt.Parse(token)
59
	require.Error(t, err)
60
}