From a793e92dd82d9ad80ef01dfda6d5ecddaa262095 Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Tue, 27 Apr 2021 09:34:20 -0700 Subject: [PATCH] various sanitizer fixes --- sdk/internal/testframework/recording.go | 6 ++-- .../testframework/recording_sanitizer.go | 28 +++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/sdk/internal/testframework/recording.go b/sdk/internal/testframework/recording.go index 0f1462812c59..ba93252af652 100644 --- a/sdk/internal/testframework/recording.go +++ b/sdk/internal/testframework/recording.go @@ -33,7 +33,7 @@ type Recording struct { recorder *recorder.Recorder src rand.Source now *time.Time - sanitizer *RecordingSanitizer + Sanitizer *RecordingSanitizer c TestContext } @@ -104,7 +104,7 @@ func NewRecording(c TestContext, mode RecordMode) (*Recording, error) { rec.SetMatcher(recording.matchRequest) // wire up the sanitizer - DefaultSanitizer(rec) + recording.Sanitizer = DefaultSanitizer(rec) return recording, err } @@ -265,7 +265,7 @@ func getOptionalEnv(name string, defaultValue string) *string { func (r *Recording) matchRequest(req *http.Request, rec cassette.Request) bool { isMatch := compareMethods(req, rec, r.c) && compareURLs(req, rec, r.c) && - compareHeaders(req, rec, r.c) && + // compareHeaders(req, rec, r.c) && compareBodies(req, rec, r.c) return isMatch diff --git a/sdk/internal/testframework/recording_sanitizer.go b/sdk/internal/testframework/recording_sanitizer.go index ac4311ef46a2..8eff867c076b 100644 --- a/sdk/internal/testframework/recording_sanitizer.go +++ b/sdk/internal/testframework/recording_sanitizer.go @@ -16,7 +16,8 @@ type RecordingSanitizer struct { recorder *recorder.Recorder headersToSanitize map[string]*string urlSanitizer StringSanitizer - bodySanitizer StringSanitizer + bodySanitizerReq StringSanitizer + bodySanitizerResp StringSanitizer } type StringSanitizer func(*string) @@ -28,7 +29,7 @@ var sanitizedValueSlice = []string{SanitizedValue} func DefaultSanitizer(recorder *recorder.Recorder) *RecordingSanitizer { // The default sanitizer sanitizes the Authorization header - s := &RecordingSanitizer{headersToSanitize: map[string]*string{"Authorization": nil}, recorder: recorder, urlSanitizer: DefaultStringSanitizer} + s := &RecordingSanitizer{headersToSanitize: map[string]*string{"Authorization": nil}, recorder: recorder, urlSanitizer: DefaultStringSanitizer, bodySanitizerReq: DefaultStringSanitizer, bodySanitizerResp: DefaultStringSanitizer} recorder.AddSaveFilter(s.applySaveFilter) return s @@ -41,9 +42,14 @@ func (s *RecordingSanitizer) AddSanitizedHeaders(headers ...string) { } } -// AddBodysanitizer configures the supplied StringSanitizer to sanitize recording request and response bodies -func (s *RecordingSanitizer) AddBodysanitizer(sanitizer StringSanitizer) { - s.bodySanitizer = sanitizer +// AddBodysanitizerReq configures the supplied StringSanitizer to sanitize recording request body +func (s *RecordingSanitizer) AddBodysanitizerReq(sanitizer StringSanitizer) { + s.bodySanitizerReq = sanitizer +} + +// AddBodysanitizerResp configures the supplied StringSanitizer to sanitize recording response bodies +func (s *RecordingSanitizer) AddBodysanitizerResp(sanitizer StringSanitizer) { + s.bodySanitizerResp = sanitizer } // AddUriSanitizer configures the supplied StringSanitizer to sanitize recording request and response URLs @@ -59,8 +65,12 @@ func (s *RecordingSanitizer) sanitizeHeaders(header http.Header) { } } -func (s *RecordingSanitizer) sanitizeBodies(body *string) { - s.bodySanitizer(body) +func (s *RecordingSanitizer) sanitizeBodiesReq(body *string) { + s.bodySanitizerReq(body) +} + +func (s *RecordingSanitizer) sanitizeBodiesResp(body *string) { + s.bodySanitizerResp(body) } func (s *RecordingSanitizer) sanitizeURL(url *string) { @@ -72,10 +82,10 @@ func (s *RecordingSanitizer) applySaveFilter(i *cassette.Interaction) error { s.sanitizeHeaders(i.Response.Headers) s.sanitizeURL(&i.Request.URL) if len(i.Request.Body) > 0 { - s.sanitizeBodies(&i.Request.Body) + s.sanitizeBodiesReq(&i.Request.Body) } if len(i.Response.Body) > 0 { - s.sanitizeBodies(&i.Response.Body) + s.sanitizeBodiesResp(&i.Response.Body) } return nil }