pkg/prom/header_patch_test.go
Rama main · réplica de lectura del repositorio original.
package prom
import "testing"
func TestHeaderOperationsKeepSecretsForTenantFork(t *testing.T) {
original := Connection{URL: "https://mimir", Headers: map[string]string{"Authorization": "private-token", "X-Scope-OrgID": "a"}}
got, err := ApplyHeaderOperations(original, original.URL, []HeaderOperation{{Key: "x-scope-orgid", Action: "set", Value: "b"}})
if err != nil {
t.Fatal(err)
}
if got.Headers["Authorization"] != "private-token" || got.Headers["X-Scope-Orgid"] != "b" || original.Headers["X-Scope-OrgID"] != "a" {
t.Fatal("fork failed to preserve independent secret values")
}
if _, err := ApplyHeaderOperations(original, "https://other", []HeaderOperation{{Key: "X-Scope-OrgID", Action: "set", Value: "b"}}); err == nil {
t.Fatal("implicit keep crossed origins")
}
_, err = ApplyHeaderOperations(original, "https://other", []HeaderOperation{{Key: "Authorization", Action: "clear"}, {Key: "X-Scope-OrgID", Action: "set", Value: "b"}})
if err != nil {
t.Fatal(err)
}
}
func TestHeaderOperationsRejectAmbiguousAndEnvironmentChanges(t *testing.T) {
original := Connection{URL: "https://mimir", Headers: map[string]string{"Authorization": "secret"}, HeadersFromEnv: map[string]string{"X-Scope-OrgID": "TENANT"}}
for _, ops := range [][]HeaderOperation{
{{Key: "Authorization", Action: "set", Value: "x"}, {Key: "authorization", Action: "clear"}},
{{Key: "Authorization", Action: "keep", Value: "placeholder"}},
{{Key: "Missing", Action: "keep"}},
{{Key: "X-Scope-OrgID", Action: "clear"}},
{{Key: "X-Scope-OrgID", Action: "set", Value: "literal"}},
{{Key: "Authorization", Action: "set", Value: "bad\r\nheader"}},
} {
if _, err := ApplyHeaderOperations(original, original.URL, ops); err == nil {
t.Errorf("accepted invalid operations: %+v", ops)
}
}
got, err := ApplyHeaderOperations(original, original.URL, []HeaderOperation{{Key: "Authorization", Action: "set", Value: "new"}})
if err != nil || got.HeadersFromEnv["X-Scope-OrgID"] != "TENANT" {
t.Fatal("environment reference not preserved", err)
}
if _, err := ApplyHeaderOperations(original, "http://mimir", nil); err == nil {
t.Fatal("scheme change preserved credentials")
}
}