cpularp-manager-api/test/lib/testsetup/testsetup.go

67 lines
1.5 KiB
Go

package testsetup
import (
"crypto/x509"
"encoding/pem"
"fmt"
"log"
"os"
api "example.com/api"
database "example.com/database"
user "example.com/database/user"
"github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt/v5"
)
const SERVERWAIT = 5
const SERVERDOMAIN = "http://localhost:31337"
const SERVERCONFIG = "./config.toml"
func SetupTestSuite() (string, *gin.Engine) {
file, err := os.Create("./logs/test.log")
if err != nil {
log.Fatal(err)
}
gin.DefaultWriter = file
gin.DefaultErrorWriter = file
log.SetOutput(file)
api.GlobalConfig.ParseConfig(SERVERCONFIG)
api.GlobalDatabase = database.InitializeDatabase(api.GlobalConfig.Database.Path)
api.SetFilteredModels()
err = user.Create(
api.GlobalDatabase,
"12345",
"test",
"test",
"",
"",
"{}",
true)
if err != nil {
log.Fatal(err)
}
testusers := *user.Get(api.GlobalDatabase, []string{"12345"})
err = testusers[0].GenerateAPIKey(api.GlobalDatabase, "test")
if err != nil {
log.Fatal(err)
}
secret := testusers[0].GetAPIKeySecret(api.GlobalDatabase, "test")
block, _ := pem.Decode([]byte(secret))
privateKey, err := x509.ParseECPrivateKey(block.Bytes)
if err != nil {
log.Fatal(err)
}
token := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{
"iss": "12345",
"sub": "test",
})
signedToken, err := token.SignedString(privateKey)
if err != nil {
log.Fatal(err)
}
globalAuthHeader := fmt.Sprintf("Bearer %s", signedToken)
// Initialize Router
router := api.InitializeRouter()
return globalAuthHeader, router
}