Archived
46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package telemetry
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
metricnoop "go.opentelemetry.io/otel/metric/noop"
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
|
"go.opentelemetry.io/otel/sdk/trace/tracetest"
|
|
)
|
|
|
|
func TestWrapHTTPWithoutProvidersReturnsOriginalHandler(t *testing.T) {
|
|
handler := http.HandlerFunc(func(http.ResponseWriter, *http.Request) {})
|
|
if got := WrapHTTP(handler, nil, nil); got == nil {
|
|
t.Fatal("WrapHTTP() returned nil")
|
|
}
|
|
}
|
|
|
|
func TestWrapHTTPDoesNotCaptureCredentialValues(t *testing.T) {
|
|
const canary = "canary-secret-token"
|
|
recorder := tracetest.NewSpanRecorder()
|
|
tracerProvider := sdktrace.NewTracerProvider(sdktrace.WithSpanProcessor(recorder))
|
|
t.Cleanup(func() { _ = tracerProvider.Shutdown(t.Context()) })
|
|
|
|
handler := WrapHTTP(http.HandlerFunc(func(response http.ResponseWriter, _ *http.Request) {
|
|
response.WriteHeader(http.StatusNoContent)
|
|
}), &Providers{Tracer: tracerProvider, Meter: metricnoop.NewMeterProvider()}, nil)
|
|
|
|
request := httptest.NewRequest(http.MethodGet, "/oauth2/jwks?subject_token="+canary, nil)
|
|
request.Header.Set("Authorization", "Bearer "+canary)
|
|
response := httptest.NewRecorder()
|
|
handler.ServeHTTP(response, request)
|
|
|
|
spans := recorder.Ended()
|
|
if len(spans) != 1 {
|
|
t.Fatalf("ended spans = %d, want 1", len(spans))
|
|
}
|
|
for _, attribute := range spans[0].Attributes() {
|
|
if strings.Contains(attribute.Value.Emit(), canary) {
|
|
t.Fatalf("span attribute %q captured credential canary", attribute.Key)
|
|
}
|
|
}
|
|
}
|