public void RecordSessionLookupSkipsRequestBodyWhenFilterIsOn()
        {
            var request = new MockRequest();

            request.Uri.Reset(new Uri("https://mockuri.com"));
            request.Content = RequestContent.Create(Encoding.UTF8.GetBytes("A nice and long body."));
            request.Headers.Add("Content-Type", "text/json");

            HttpMessage message = new HttpMessage(request, null);

            message.Response = new MockResponse(200);

            var session         = new RecordSession();
            var recordTransport = new RecordTransport(session, Mock.Of <HttpPipelineTransport>(), entry => EntryRecordModel.RecordWithoutRequestBody, Mock.Of <Random>());

            recordTransport.Process(message);

            request.Content = RequestContent.Create(Encoding.UTF8.GetBytes("A bad and longer body"));

            var skipRequestBody   = true;
            var playbackTransport = new PlaybackTransport(session, new RecordMatcher(), new RecordedTestSanitizer(), Mock.Of <Random>(), entry => skipRequestBody);

            playbackTransport.Process(message);

            skipRequestBody = false;
            Assert.Throws <InvalidOperationException>(() => playbackTransport.Process(message));
        }
        public void SpecialHeadersNormalizedForMatching(string name)
        {
            // Use HttpClientTransport as it does header normalization
            var originalRequest = new HttpClientTransport().CreateRequest();

            originalRequest.Method = RequestMethod.Get;
            originalRequest.Uri.Reset(new Uri("http://localhost"));
            originalRequest.Headers.Add(name, "application/json;odata=nometadata");
            originalRequest.Headers.Add("Date", "This should be ignored");

            var playbackRequest = new MockTransport().CreateRequest();

            playbackRequest.Method = RequestMethod.Get;
            playbackRequest.Uri.Reset(new Uri("http://localhost"));
            playbackRequest.Headers.Add(name, "application/json;odata=nometadata");
            playbackRequest.Headers.Add("Date", "It doesn't match");

            var matcher      = new RecordMatcher();
            var requestEntry = RecordTransport.CreateEntry(originalRequest, null);
            var entry        = RecordTransport.CreateEntry(originalRequest, new MockResponse(200));

            Assert.NotNull(matcher.FindMatch(requestEntry, new[] { entry }));
        }