Esempio n. 1
0
        public void SendHeadersAndBody(int responseBodyLength)
        {
            var buffer   = new ArraySegment <byte>(new byte[_64kb]);
            var response = CreateResponse(responseBodyLength);

            using (var socket = new HttpStreamSocket(response))
                using (var message = new HttpMessage(buffer, _8kb))
                {
                    message.Socket = socket;
                    message.WriteMessageStart("GET / HTTP/1.1");
                    message.WriteHeader("User-Agent", "curl/7.37.0");
                    message.WriteHeader("Host", "localhost");

                    message.Send(_100ms);

                    const string expectedRequest =
                        "GET / HTTP/1.1\r\n" +
                        "User-Agent: curl/7.37.0\r\n" +
                        "Host: localhost\r\n" +
                        "\r\n";

                    var expectedRequestBytes =
                        Encoding.ASCII.GetBytes(expectedRequest);
                    var expectedResponseBytes =
                        Encoding.ASCII.GetBytes(response);

                    CollectionAssert.AreEqual(expectedRequestBytes,
                                              socket.InputBytes);
                    CollectionAssert.AreEqual(expectedResponseBytes,
                                              socket.OutputBytes);
                }
        }
Esempio n. 2
0
        public void ReadResponseBody(int responseBodyLength)
        {
            var buffer   = new ArraySegment <byte>(new byte[_64kb]);
            var response = CreateResponse(responseBodyLength);

            using (var socket = new HttpStreamSocket(response))
                using (var message = new HttpMessage(buffer, _8kb))
                {
                    message.Socket = socket;
                    message.Send(_100ms);

                    using (var reader = new StreamReader(message.GetBodyStream()))
                    {
                        var responseBody = reader.ReadToEnd();
                        Assert.AreEqual(responseBodyLength, responseBody.Length);
                    }
                }
        }
Esempio n. 3
0
        public void SendResponseMessageTooLarge()
        {
            var buffer   = new ArraySegment <byte>(new byte[_64kb]);
            var response = CreateResponse(_64kb);

            using (var socket = new HttpStreamSocket(response))
                using (var message = new HttpMessage(buffer, _8kb))
                {
                    message.Socket = socket;
                    message.WriteMessageStart("GET / HTTP/1.1");
                    message.WriteHeader("User-Agent", "curl/7.37.0");
                    message.WriteHeader("Host", "localhost");

                    var exception = Assert.Throws <HttpParserException>(() =>
                                                                        message.Send(_100ms));
                    Assert.AreEqual("stream ended at an unexpected time",
                                    exception.Message);
                }
        }