First release of open core

This commit is contained in:
t
2026-04-02 10:57:36 -04:00
parent 1c94f12d1c
commit 084c1321fc
101 changed files with 8812 additions and 17 deletions

View File

@@ -0,0 +1,111 @@
package auth
import (
"bytes"
"database/sql"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"epigas.gitea.cloud/RiskRancher/core/pkg/datastore"
)
func setupTestAuth(t *testing.T) (*Handler, *sql.DB) {
db := datastore.InitDB(":memory:")
store := datastore.NewSQLiteStore(db)
h := NewHandler(store)
return h, db
}
func TestAuthHandlers(t *testing.T) {
a, db := setupTestAuth(t)
defer db.Close()
t.Run("Successful Registration", func(t *testing.T) {
payload := map[string]string{
"email": "admin@RiskRancher.com",
"full_name": "Doc Holliday",
"password": "SuperSecretPassword123!",
"global_role": "Sheriff", // Use a valid role!
}
body, _ := json.Marshal(payload)
req := httptest.NewRequest(http.MethodPost, "/api/auth/register", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
rr := httptest.NewRecorder()
a.HandleRegister(rr, req)
if rr.Code != http.StatusCreated {
t.Fatalf("Expected 201 Created for registration, got %d", rr.Code)
}
})
t.Run("Successful Login Issues Cookie", func(t *testing.T) {
payload := map[string]string{
"email": "admin@RiskRancher.com",
"password": "SuperSecretPassword123!",
}
body, _ := json.Marshal(payload)
req := httptest.NewRequest(http.MethodPost, "/api/auth/login", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
rr := httptest.NewRecorder()
a.HandleLogin(rr, req)
if rr.Code != http.StatusOK {
t.Fatalf("Expected 200 OK for successful login, got %d", rr.Code)
}
cookies := rr.Result().Cookies()
if len(cookies) == 0 {
t.Fatalf("Expected a session cookie to be set, but none was found")
}
if cookies[0].Name != "session_token" {
t.Errorf("Expected cookie named 'session_token', got '%s'", cookies[0].Name)
}
})
t.Run("Failed Login Rejects Access", func(t *testing.T) {
payload := map[string]string{
"email": "admin@RiskRancher.com",
"password": "WrongPassword!",
}
body, _ := json.Marshal(payload)
req := httptest.NewRequest(http.MethodPost, "/api/auth/login", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
rr := httptest.NewRecorder()
a.HandleLogin(rr, req)
if rr.Code != http.StatusUnauthorized {
t.Fatalf("Expected 401 Unauthorized for wrong password, got %d", rr.Code)
}
})
}
func TestHandleLogout(t *testing.T) {
a, db := setupTestAuth(t)
defer db.Close()
req := httptest.NewRequest(http.MethodPost, "/api/auth/logout", nil)
cookie := &http.Cookie{
Name: SessionCookieName,
Value: "fake-session-token-123",
}
req.AddCookie(cookie)
rr := httptest.NewRecorder()
a.HandleLogout(rr, req)
if rr.Code != http.StatusOK {
t.Fatalf("Expected 200 OK, got %d. Body: %s", rr.Code, rr.Body.String())
}
}