68 lines
1.5 KiB
Go
68 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
|
||
|
}
|