Ejemplo n.º 1
0
        public void CanRecordPostWithFormUrlEncoding()
        {
            // ARRANGE
            var url     = new Uri("https://www.github.com");
            var payload = "thing1=1&thing2=2";

            var request = new HttpWebRequestWrapperRecorder(url)
            {
                Method      = "POST",
                ContentType = "application/x-www-form-urlencoded"
            };

            using (var sw = new StreamWriter(request.GetRequestStream()))
                sw.Write(payload);

            // ACT
            var response = request.GetResponse();

            // ASSERT
            response.ShouldNotBeNull();

            request.RecordedRequests.Count.ShouldEqual(1);
            request.RecordedRequests[0].RequestPayload.IsEncoded.ShouldBeFalse();
            request.RecordedRequests[0].RequestPayload.SerializedStream.ShouldEqual(payload);
        }
Ejemplo n.º 2
0
            /// <summary>
            /// Since these tests rely on live web requests - run as few
            /// as possible.  This makes the test a little harder to read
            /// but should improve build speed / consistency.
            /// </summary>
            public GitHubHomePageRequestFixture()
            {
                // necessary for requests to github to work
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                RequestBody = "Hello World";

                var requestUri    = new Uri("http://www.github.com");
                var requestCookie = new Cookie("test", "test")
                {
                    Domain = requestUri.Host
                };

                // first make a request using the real HttpWebRequest
                var realHttRequestCreator =
                    (IWebRequestCreate)
                    // use reflection in case HttpWebRequestWrapperSession has changed
                    // the PrefixList
                    Activator.CreateInstance(
                        typeof(HttpWebRequest).Assembly.GetType("System.Net.HttpRequestCreator"));

                RealRequest = (HttpWebRequest)realHttRequestCreator.Create(requestUri);
                RealRequest.CookieContainer = new CookieContainer();
                RealRequest.CookieContainer.Add(requestCookie);
                RealRequest.Method = "POST";
                using (var sw = new StreamWriter(RealRequest.GetRequestStream()))
                    sw.Write(RequestBody);

                RealResponse = (HttpWebResponse)RealRequest.GetResponse();

                using (var sr = new StreamReader(RealResponse.GetResponseStream()))
                    RealResponseBody = sr.ReadToEnd();


                // then make the same request using the recorder
                RecorderRequest = new HttpWebRequestWrapperRecorder(requestUri)
                {
                    CookieContainer = new CookieContainer()
                };
                RecorderRequest.CookieContainer.Add(requestCookie);
                RecorderRequest.Method = "POST";
                using (var sw = new StreamWriter(RecorderRequest.GetRequestStream()))
                    sw.Write(RequestBody);

                RecorderResponse = (HttpWebResponse)RecorderRequest.GetResponse();

                using (var sr = new StreamReader(RecorderResponse.GetResponseStream()))
                    RecorderResponseBody = sr.ReadToEnd();

                RecorderRecording = RecorderRequest.RecordedRequests.First();
            }
Ejemplo n.º 3
0
        public void CanRecordImageFileInRequest()
        {
            var requestUrl = new Uri("http://www.github.com");

            var request = new HttpWebRequestWrapperRecorder(requestUrl);

            var memoryStream = new MemoryStream();

            var image   = new Bitmap(60, 60);
            var graphic = Graphics.FromImage(image);

            graphic.DrawEllipse(new Pen(Color.Blue), new Rectangle(20, 20, 10, 10));
            graphic.Save();
            image.Save(memoryStream, ImageFormat.Bmp);
            memoryStream.Seek(0, SeekOrigin.Begin);

            // ACT
            request.Method      = "POST";
            request.ContentType = "images/png";
            memoryStream.CopyTo(request.GetRequestStream());

            var response = request.GetResponse();

            // ASSERT
            response.ShouldNotBeNull();

            request.RecordedRequests[0].RequestPayload.ShouldNotBeNull();
            request.RecordedRequests[0].RequestPayload.IsEncoded.ShouldBeTrue();
            request.RecordedRequests[0].RequestPayload.SerializedStream.ShouldNotBeNull();
            request.RecordedRequests[0].RequestPayload.SerializedStream.ShouldStartWith("Qk12");

            // make sure we can reload the request payload as an image
            var requestImage = Image.FromStream(request.RecordedRequests[0].RequestPayload.ToStream());

            requestImage.Height.ShouldEqual(image.Height);
        }