コード例 #1
0
        public async Task SendAsync_WithCookieContainerWithCookieInResponse_CookiesAddedToContainer()
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Get.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var cookieContainer             = new CookieContainer();
            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette, cookieContainer);

            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = null,
            };
            await replayingHttpMessageHandler.SendAsync(request, CancellationToken.None);

            Assert.That(cookieContainer.GetCookies(request.RequestUri)["value"]?.Value, Is.EqualTo("123"));
        }
コード例 #2
0
        public async Task SendAsync_PostRequest_Success(Type cassetteBodyType)
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Post.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette);
            var contentFactory = new Dictionary <Type, Func <HttpContent> >
            {
                { typeof(StringCassetteBody), () => new StringContent("{}") },
                { typeof(BytesCassetteBody), () => new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("{}"))) },
            };
            var content = contentFactory[cassetteBodyType]();

            var request = new HttpRequestMessage
            {
                Method  = HttpMethod.Post,
                Headers =
                {
                    { "Cookie", "value=1" },
                },
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = content,
            };
            var response = await replayingHttpMessageHandler.SendAsync(request, CancellationToken.None);

            Assert.That(response, Is.Not.Null);
            Assert.That(response.Version, Is.EqualTo(record.Response.Version));
            Assert.That(response.StatusCode, Is.EqualTo((HttpStatusCode)record.Response.StatusCode));
            Assert.That(response.ReasonPhrase, Is.EqualTo(record.Response.StatusMessage));
            Assert.That(response.RequestMessage, Is.Not.Null);
            Assert.That(response.Headers.GetValues("Server"), Is.EqualTo(new[] { record.Response.Headers["Server"] }));
        }
コード例 #3
0
        public async Task SendAsync_GetRequest_Success()
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Get.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette);

            var request = new HttpRequestMessage
            {
                Method  = HttpMethod.Get,
                Headers =
                {
                    { "Cookie", "value=1" },
                },
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = null,
            };
            var response = await replayingHttpMessageHandler.SendAsync(request, CancellationToken.None);

            Assert.That(response, Is.Not.Null);
            Assert.That(response.Version, Is.EqualTo(record.Response.Version));
            Assert.That(response.StatusCode, Is.EqualTo((HttpStatusCode)record.Response.StatusCode));
            Assert.That(response.ReasonPhrase, Is.EqualTo(record.Response.StatusMessage));
            Assert.That(response.RequestMessage, Is.Not.Null);
            Assert.That(response.Headers.GetValues("Server"), Is.EqualTo(new[] { record.Response.Headers["Server"] }));
        }
コード例 #4
0
        public void SendAsync_WrongResponseHeader_ThrowsArgumentException()
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Get.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette);

            var request = new HttpRequestMessage
            {
                Method  = HttpMethod.Get,
                Headers =
                {
                    { "Cookie", "value=1" },
                },
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = null,
            };
            var argumentException = Assert.ThrowsAsync <ArgumentException>(() => replayingHttpMessageHandler.SendAsync(request, CancellationToken.None));

            Assert.That(argumentException.ParamName, Is.Null);
        }