Files
gitea-mcp/operation/operation_http_headers_test.go
2026-03-09 13:07:27 +00:00

78 lines
2.0 KiB
Go

package operation
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestWithNoBodyContentTypeAddsContentTypeForAcceptedAndNoContent(t *testing.T) {
tests := []struct {
name string
status int
}{
{
name: "accepted",
status: http.StatusAccepted,
},
{
name: "no_content",
status: http.StatusNoContent,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
handler := withNoBodyContentType(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(tc.status)
}))
req := httptest.NewRequest(http.MethodPost, "/mcp", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
if rr.Code != tc.status {
t.Fatalf("expected status %d, got %d", tc.status, rr.Code)
}
if got := rr.Header().Get("Content-Type"); got != "application/json" {
t.Fatalf("expected Content-Type application/json, got %q", got)
}
})
}
}
func TestWithNoBodyContentTypePreservesExistingContentType(t *testing.T) {
handler := withNoBodyContentType(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain")
w.WriteHeader(http.StatusAccepted)
}))
req := httptest.NewRequest(http.MethodPost, "/mcp", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
if rr.Code != http.StatusAccepted {
t.Fatalf("expected status %d, got %d", http.StatusAccepted, rr.Code)
}
if got := rr.Header().Get("Content-Type"); got != "text/plain" {
t.Fatalf("expected Content-Type text/plain, got %q", got)
}
}
func TestWithNoBodyContentTypeDoesNotModifyOtherStatusCodes(t *testing.T) {
handler := withNoBodyContentType(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
}))
req := httptest.NewRequest(http.MethodPost, "/mcp", nil)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
if rr.Code != http.StatusOK {
t.Fatalf("expected status %d, got %d", http.StatusOK, rr.Code)
}
if got := rr.Header().Get("Content-Type"); got != "" {
t.Fatalf("expected empty Content-Type, got %q", got)
}
}