imported jwt module
This commit is contained in:
80
jwt/revoke_test.go
Normal file
80
jwt/revoke_test.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package jwt
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func newGeneratorWithNoDB(t *testing.T) *TokenGenerator {
|
||||
gen, err := CreateGenerator(
|
||||
15,
|
||||
60,
|
||||
5,
|
||||
"example.com",
|
||||
"supersecret",
|
||||
nil,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
return gen
|
||||
}
|
||||
|
||||
func TestNoDBFail(t *testing.T) {
|
||||
jti := uuid.New()
|
||||
exp := time.Now().Add(time.Hour).Unix()
|
||||
|
||||
token := AccessToken{
|
||||
JTI: jti,
|
||||
EXP: exp,
|
||||
}
|
||||
|
||||
// Revoke should fail due to no DB
|
||||
err := token.Revoke(context.Background())
|
||||
require.Error(t, err)
|
||||
|
||||
// CheckNotRevoked should fail
|
||||
_, err = token.CheckNotRevoked(context.Background())
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestRevokeAndCheckNotRevoked(t *testing.T) {
|
||||
gen, mock, cleanup := newGeneratorWithMockDB(t)
|
||||
defer cleanup()
|
||||
|
||||
jti := uuid.New()
|
||||
exp := time.Now().Add(time.Hour).Unix()
|
||||
|
||||
token := AccessToken{
|
||||
JTI: jti,
|
||||
EXP: exp,
|
||||
db: gen.dbConn,
|
||||
}
|
||||
|
||||
// Revoke expectations
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectExec(`INSERT INTO jwtblacklist`).
|
||||
WithArgs(jti, exp).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectCommit()
|
||||
|
||||
err := token.Revoke(context.Background())
|
||||
require.NoError(t, err)
|
||||
|
||||
// CheckNotRevoked expectations (now revoked)
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectQuery(`SELECT 1 FROM jwtblacklist`).
|
||||
WithArgs(jti).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"1"}).AddRow(1))
|
||||
mock.ExpectCommit()
|
||||
|
||||
valid, err := token.CheckNotRevoked(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.False(t, valid)
|
||||
|
||||
require.NoError(t, mock.ExpectationsWereMet())
|
||||
}
|
||||
Reference in New Issue
Block a user