84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
package tests
|
|
|
|
import (
|
|
"acc-server-manager/local/model"
|
|
"acc-server-manager/local/utl/jwt"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func GenerateTestToken() (string, error) {
|
|
user := &model.User{
|
|
ID: uuid.New(),
|
|
Username: "test_user",
|
|
RoleID: uuid.New(),
|
|
}
|
|
|
|
testSecret := os.Getenv("JWT_SECRET")
|
|
if testSecret == "" {
|
|
testSecret = "test-secret-that-is-at-least-32-bytes-long-for-security"
|
|
}
|
|
jwtHandler := jwt.NewJWTHandler(testSecret)
|
|
|
|
token, err := jwtHandler.GenerateToken(user.ID.String())
|
|
if err != nil {
|
|
return "", fmt.Errorf("failed to generate test token: %w", err)
|
|
}
|
|
|
|
return token, nil
|
|
}
|
|
|
|
func MustGenerateTestToken() string {
|
|
token, err := GenerateTestToken()
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Failed to generate test token: %v", err))
|
|
}
|
|
return token
|
|
}
|
|
|
|
func GenerateTestTokenWithExpiry(expiryTime time.Time) (string, error) {
|
|
testSecret := os.Getenv("JWT_SECRET")
|
|
if testSecret == "" {
|
|
testSecret = "test-secret-that-is-at-least-32-bytes-long-for-security"
|
|
}
|
|
jwtHandler := jwt.NewJWTHandler(testSecret)
|
|
|
|
user := &model.User{
|
|
ID: uuid.New(),
|
|
Username: "test_user",
|
|
RoleID: uuid.New(),
|
|
}
|
|
|
|
token, err := jwtHandler.GenerateTokenWithExpiry(user, expiryTime)
|
|
if err != nil {
|
|
return "", fmt.Errorf("failed to generate test token with expiry: %w", err)
|
|
}
|
|
|
|
return token, nil
|
|
}
|
|
|
|
func AddAuthHeader(headers map[string]string) (map[string]string, error) {
|
|
token, err := GenerateTestToken()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if headers == nil {
|
|
headers = make(map[string]string)
|
|
}
|
|
headers["Authorization"] = "Bearer " + token
|
|
|
|
return headers, nil
|
|
}
|
|
|
|
func MustAddAuthHeader(headers map[string]string) map[string]string {
|
|
result, err := AddAuthHeader(headers)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Failed to add auth header: %v", err))
|
|
}
|
|
return result
|
|
}
|