clortho/apis/auth_endpoints_test.go
Maxime Duchene-Savard 0a5fc21b69 travaux
2025-04-03 09:09:23 -04:00

69 lines
1.5 KiB
Go

package apis
import (
"clortho/db"
"clortho/users"
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"os"
"strings"
"testing"
)
func TestMain(m *testing.M) {
// Set up test database file
os.Setenv("CLORTHO_DB_FILE", "clortho_test.db")
// Global setup
fmt.Println("Setting up resources...")
db.InitDb()
defer db.ResetDb()
exitCode := m.Run() // Run all tests
// Global teardown
fmt.Println("Cleaning up resources...")
os.Exit(exitCode)
}
func TestInitAuthEndpoints_authLogin(t *testing.T) {
adminPass, err := users.InitAdminUser()
if err != nil {
t.Fatal(err)
}
r := gin.Default()
SetupRouter(r, nil)
reqBody := loginRequest{Username: "admin", Password: *adminPass}
strReqBody, _ := json.Marshal(reqBody)
w := httptest.NewRecorder()
req, _ := http.NewRequest("POST", "/private/auth/login", strings.NewReader(string(strReqBody)))
r.ServeHTTP(w, req)
assert.Equal(t, 200, w.Code)
assert.JSONEq(t, `{"valid": true}`, w.Body.String())
}
func TestInitAuthEndpoints_getMe(t *testing.T) {
user, err := InitUser("admin", "password")
if err != nil {
t.Fatal(err)
}
r := gin.Default()
SetupRouter(r, MockAuthMiddleware(*user))
w := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/private/auth/me", nil)
r.ServeHTTP(w, req)
strUser, _ := json.Marshal(user)
assert.Equal(t, 200, w.Code)
assert.JSONEq(t, fmt.Sprintf(`{"loggedIn": true, "user": %s}`, strUser), w.Body.String())
}