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 }