106 lines
2.2 KiB
Go
106 lines
2.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
c "desq.com.ru/testjwtauth/config"
|
|
"desq.com.ru/testjwtauth/models"
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"github.com/google/uuid"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestCreateToken(t *testing.T) {
|
|
DB, err := gorm.Open(postgres.Open(c.DSN), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatalf("Failed to connect to database: %v", err)
|
|
}
|
|
DB.AutoMigrate(&models.RefreshToken{})
|
|
userID := uuid.New()
|
|
IP := "127.0.0.1"
|
|
expires := time.Now().Add(time.Hour * 24).Unix()
|
|
type args struct {
|
|
DB *gorm.DB
|
|
userID uuid.UUID
|
|
IP string
|
|
expires int64
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "CreateToken",
|
|
args: args{
|
|
DB: DB,
|
|
userID: userID,
|
|
IP: IP,
|
|
expires: expires,
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
_, _, err := CreateToken(tt.args.DB, tt.args.userID, tt.args.IP, tt.args.expires)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("CreateToken() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRefreshToken(t *testing.T) {
|
|
DB, err := gorm.Open(postgres.Open(c.DSN), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatalf("Failed to connect to database: %v", err)
|
|
}
|
|
DB.AutoMigrate(&models.RefreshToken{})
|
|
userID := uuid.New()
|
|
IP := "127.0.0.1"
|
|
expires := time.Now().Add(time.Hour * 24)
|
|
_, RT, err := CreateToken(DB, userID, IP, expires.Unix())
|
|
if err != nil {
|
|
t.Fatalf("Failed to generate token pair: %v", err)
|
|
}
|
|
claims := jwt.MapClaims{
|
|
"userId": userID,
|
|
"ip": IP,
|
|
"sub": RT,
|
|
"exp": expires,
|
|
}
|
|
type args struct {
|
|
DB *gorm.DB
|
|
userID uuid.UUID
|
|
claims jwt.MapClaims
|
|
RT string
|
|
IP string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "RefreshToken",
|
|
args: args{
|
|
DB: DB,
|
|
userID: userID,
|
|
claims: claims,
|
|
RT: RT,
|
|
IP: IP,
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if err := RefreshToken(tt.args.DB, tt.args.userID, tt.args.claims, tt.args.RT, tt.args.IP); (err != nil) != tt.wantErr {
|
|
t.Errorf("RefreshToken() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|