chore: establish local platform baseline
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"data-terminal-cloud/internal/audit"
|
||||
"data-terminal-cloud/internal/identity"
|
||||
"data-terminal-cloud/internal/pagination"
|
||||
"data-terminal-cloud/internal/saas"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
func TestSaaSReadHandlersWithAuthenticatedSeedData(t *testing.T) {
|
||||
databaseURL := os.Getenv("TEST_DATABASE_URL")
|
||||
if databaseURL == "" {
|
||||
t.Skip("TEST_DATABASE_URL is not set")
|
||||
}
|
||||
pool, err := pgxpool.New(context.Background(), databaseURL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer pool.Close()
|
||||
cursorCodec, err := pagination.NewCodec([]byte("http-saas-read-cursor-signing-key-32-bytes"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
service := saas.NewService(pool, audit.NewRepository(), nil, cursorCodec)
|
||||
principal := identity.Principal{Issuer: "http://localhost:58180/realms/voice-local", Subject: "00000000-0000-0000-0000-000000000101"}
|
||||
tests := []struct {
|
||||
name string
|
||||
handler http.Handler
|
||||
pathValue string
|
||||
header string
|
||||
}{
|
||||
{"households", ListHouseholdsHandler(service), "", "10000000-0000-0000-0000-000000000010"},
|
||||
{"household", GetHouseholdHandler(service), "10000000-0000-0000-0000-000000000211", ""},
|
||||
{"household members", ListHouseholdMembersHandler(service), "10000000-0000-0000-0000-000000000211", ""},
|
||||
{"member invitations", ListMemberInvitationsHandler(service), "10000000-0000-0000-0000-000000000211", ""},
|
||||
{"subjects", ListSubjectsHandler(service), "10000000-0000-0000-0000-000000000211", ""},
|
||||
{"subject", GetSubjectHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"conversation readiness", GetConversationReadinessHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"consents", ListConsentsHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"facts", ListSubjectFactsHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"conversations", ListSubjectConversationsHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"stories", ListSubjectStoriesHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"memories", ListSubjectMemoriesHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"privacy requests", ListPrivacyRequestsHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"exports", ListExportTasksHandler(service), "10000000-0000-0000-0000-000000000411", ""},
|
||||
{"devices", ListManagedDevicesHandler(service), "", ""},
|
||||
{"device", GetManagedDeviceHandler(service), "10000000-0000-0000-0000-000000000511", ""},
|
||||
{"device commands", ListDeviceCommandsHandler(service), "10000000-0000-0000-0000-000000000511", ""},
|
||||
{"presence", GetDevicePresenceHandler(service), "10000000-0000-0000-0000-000000000511", ""},
|
||||
{"twin", GetDeviceTwinHandler(service), "10000000-0000-0000-0000-000000000511", ""},
|
||||
}
|
||||
for _, item := range tests {
|
||||
t.Run(item.name, func(t *testing.T) {
|
||||
request := httptest.NewRequest(http.MethodGet, "/api/test", nil)
|
||||
request = request.WithContext(identity.WithPrincipal(request.Context(), principal))
|
||||
if item.pathValue != "" {
|
||||
request.SetPathValue("id", item.pathValue)
|
||||
}
|
||||
if item.header != "" {
|
||||
request.Header.Set("X-Tenant-Id", item.header)
|
||||
}
|
||||
recorder := httptest.NewRecorder()
|
||||
item.handler.ServeHTTP(recorder, request)
|
||||
if recorder.Code != http.StatusOK {
|
||||
t.Fatalf("status=%d body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
if contentType := recorder.Header().Get("Content-Type"); contentType != "application/json; charset=utf-8" {
|
||||
t.Fatalf("content type=%q", contentType)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user