MCPcopy
hub / github.com/pocketbase/pocketbase / testEventResponseWrite

Function testEventResponseWrite

tools/router/event_test.go:901–959  ·  view source on GitHub ↗
(
	t *testing.T,
	scenario testResponseWriteScenario[T],
	writeFunc func(e *router.Event) error,
)

Source from the content-addressed store, hash-verified

899}
900
901func testEventResponseWrite[T any](
902 t *testing.T,
903 scenario testResponseWriteScenario[T],
904 writeFunc func(e *router.Event) error,
905) {
906 t.Run(scenario.name, func(t *testing.T) {
907 req, err := http.NewRequest(http.MethodGet, "/", nil)
908 if err != nil {
909 t.Fatal(err)
910 }
911
912 rec := httptest.NewRecorder()
913 event := &router.Event{
914 Request: req,
915 Response: &router.ResponseWriter{ResponseWriter: rec},
916 }
917
918 for k, v := range scenario.headers {
919 event.Response.Header().Add(k, v)
920 }
921
922 err = writeFunc(event)
923 if (scenario.expectedError != nil || err != nil) && !errors.Is(err, scenario.expectedError) {
924 t.Fatalf("Expected error %v, got %v", scenario.expectedError, err)
925 }
926
927 result := rec.Result()
928
929 if result.StatusCode != scenario.expectedStatus {
930 t.Fatalf("Expected status code %d, got %d", scenario.expectedStatus, result.StatusCode)
931 }
932
933 resultBody, err := io.ReadAll(result.Body)
934 result.Body.Close()
935 if err != nil {
936 t.Fatalf("Failed to read response body: %v", err)
937 }
938
939 resultBody, err = json.Marshal(string(resultBody))
940 if err != nil {
941 t.Fatal(err)
942 }
943
944 expectedBody, err := json.Marshal(scenario.expectedBody)
945 if err != nil {
946 t.Fatal(err)
947 }
948
949 if !bytes.Equal(resultBody, expectedBody) {
950 t.Fatalf("Expected body\n%s\ngot\n%s", expectedBody, resultBody)
951 }
952
953 for k, ev := range scenario.expectedHeaders {
954 if v := result.Header.Get(k); v != ev {
955 t.Fatalf("Expected %q header to be %q, got %q", k, ev, v)
956 }
957 }
958 })

Callers 8

TestEventStringFunction · 0.85
TestEventHTMLFunction · 0.85
TestEventJSONFunction · 0.85
TestEventXMLFunction · 0.85
TestEventStreamFunction · 0.85
TestEventBlobFunction · 0.85
TestEventNoContentFunction · 0.85
TestEventRedirectFunction · 0.85

Calls 6

IsMethod · 0.80
CloseMethod · 0.65
EqualMethod · 0.65
GetMethod · 0.65
RunMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…