Files
knowledge-governance/internal/httpapi/qa_org_proxy_test.go
T

34 lines
1.1 KiB
Go

package httpapi
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestQAOrganizationSameOriginThroughReverseProxy(t *testing.T) {
auth := newFakeAuthStore()
auth.sessions["org-proxy-admin"] = "usr-boss"
spy := &orgSpy{}
handler, err := NewHandler(Config{Store: &fakeJobStore{}, QAOrg: spy, Auth: &AuthConfig{Store: auth}})
if err != nil {
t.Fatal(err)
}
for _, tc := range []struct {
site string
status int
}{{"same-origin", 200}, {"cross-site", 403}, {"same-site", 403}} {
req := httptest.NewRequest("PUT", "http://internal-api:8080/api/v1/qa-ops/organization/regions", strings.NewReader(`{"directory_id":"d","base_revision":"","rules":[]}`))
req.AddCookie(&http.Cookie{Name: sessionCookieName, Value: "org-proxy-admin"})
req.Header.Set("X-Governance-Action", "qa-organization")
req.Header.Set("Origin", "http://frontend:8088")
req.Header.Set("Sec-Fetch-Site", tc.site)
res := httptest.NewRecorder()
handler.ServeHTTP(res, req)
if res.Code != tc.status {
t.Fatalf("proxy fetch site %s got %d want %d", tc.site, res.Code, tc.status)
}
}
}