mirror of
https://github.com/pocketbase/pocketbase.git
synced 2024-11-28 10:03:42 +02:00
102 lines
2.7 KiB
Go
102 lines
2.7 KiB
Go
package apis_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
"github.com/pocketbase/pocketbase/apis"
|
|
"github.com/pocketbase/pocketbase/models"
|
|
"github.com/pocketbase/pocketbase/tests"
|
|
)
|
|
|
|
func TestRequestData(t *testing.T) {
|
|
e := echo.New()
|
|
req := httptest.NewRequest(http.MethodPost, "/?test=123", strings.NewReader(`{"test":456}`))
|
|
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)
|
|
rec := httptest.NewRecorder()
|
|
c := e.NewContext(req, rec)
|
|
|
|
dummyRecord := &models.Record{}
|
|
dummyRecord.Id = "id1"
|
|
c.Set(apis.ContextAuthRecordKey, dummyRecord)
|
|
|
|
dummyAdmin := &models.Admin{}
|
|
dummyAdmin.Id = "id2"
|
|
c.Set(apis.ContextAdminKey, dummyAdmin)
|
|
|
|
result := apis.RequestData(c)
|
|
|
|
if result == nil {
|
|
t.Fatal("Expected *models.RequestData instance, got nil")
|
|
}
|
|
|
|
if result.Method != http.MethodPost {
|
|
t.Fatalf("Expected Method %v, got %v", http.MethodPost, result.Method)
|
|
}
|
|
|
|
rawQuery, _ := json.Marshal(result.Query)
|
|
expectedQuery := `{"test":"123"}`
|
|
if v := string(rawQuery); v != expectedQuery {
|
|
t.Fatalf("Expected Query %v, got %v", expectedQuery, v)
|
|
}
|
|
|
|
rawData, _ := json.Marshal(result.Data)
|
|
expectedData := `{"test":456}`
|
|
if v := string(rawData); v != expectedData {
|
|
t.Fatalf("Expected Data %v, got %v", expectedData, v)
|
|
}
|
|
|
|
if result.AuthRecord == nil || result.AuthRecord.Id != dummyRecord.Id {
|
|
t.Fatalf("Expected AuthRecord %v, got %v", dummyRecord, result.AuthRecord)
|
|
}
|
|
|
|
if result.Admin == nil || result.Admin.Id != dummyAdmin.Id {
|
|
t.Fatalf("Expected Admin %v, got %v", dummyAdmin, result.Admin)
|
|
}
|
|
}
|
|
|
|
func TestEnrichRecords(t *testing.T) {
|
|
e := echo.New()
|
|
req := httptest.NewRequest(http.MethodGet, "/?expand=rel_many", nil)
|
|
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)
|
|
rec := httptest.NewRecorder()
|
|
c := e.NewContext(req, rec)
|
|
|
|
dummyAdmin := &models.Admin{}
|
|
dummyAdmin.Id = "test_id"
|
|
c.Set(apis.ContextAdminKey, dummyAdmin)
|
|
|
|
app, _ := tests.NewTestApp()
|
|
defer app.Cleanup()
|
|
|
|
records, err := app.Dao().FindRecordsByIds("demo1", []string{"al1h9ijdeojtsjy", "84nmscqy84lsi1t"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
apis.EnrichRecords(c, app.Dao(), records, "rel_one")
|
|
|
|
for _, record := range records {
|
|
expand := record.Expand()
|
|
if len(expand) == 0 {
|
|
t.Fatalf("Expected non-empty expand, got nil for record %v", record)
|
|
}
|
|
|
|
if len(record.GetStringSlice("rel_one")) != 0 {
|
|
if _, ok := expand["rel_one"]; !ok {
|
|
t.Fatalf("Expected rel_one to be expanded for record %v, got \n%v", record, expand)
|
|
}
|
|
}
|
|
|
|
if len(record.GetStringSlice("rel_many")) != 0 {
|
|
if _, ok := expand["rel_many"]; !ok {
|
|
t.Fatalf("Expected rel_many to be expanded for record %v, got \n%v", record, expand)
|
|
}
|
|
}
|
|
}
|
|
}
|