Ctrl K
ComunidadGuías…

pkg/prom/header_patch_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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")
	}
}