Пример #1
0
        public override string ToString()
        {
            var context = new BrowserContext();

            OnContext(context);

            IBrowserContextValues values = context;

            var builder = new StringBuilder()
                          .Append(GetMethod()).Append(" ").Append(Path);

            if (false == String.IsNullOrEmpty(values.QueryString))
            {
                builder.Append('?').Append(values.QueryString);
            }

            if (false == String.IsNullOrEmpty(values.FormValues))
            {
                var body = HttpUtility.ParseQueryString(values.FormValues);
                builder = body.AllKeys.Aggregate(
                    builder.AppendLine(), (sb, key) => builder.Append(key).Append(": ").Append(body[key]).AppendLine());
            }

            return(builder.AppendLine().ToString());
        }
Пример #2
0
        public void Should_add_cookie_to_the_request()
        {
            // Given
            var context = new BrowserContext();

            var cookies =
                new Dictionary <string, string>
            {
                { "CookieName", "CookieValue" },
                { "SomeCookieName", "SomeCookieValue" }
            };

            // When
            foreach (var cookie in cookies)
            {
                context.Cookie(cookie.Key, cookie.Value);
            }

            // Then
            IBrowserContextValues values = context;

            var cookieString = cookies.Aggregate(string.Empty, (current, cookie) => current + string.Format("{0}={1};", HttpUtility.UrlEncode(cookie.Key), HttpUtility.UrlEncode(cookie.Value)));

            Assert.Equal(1, values.Headers["Cookie"].Count());
            Assert.Equal(cookieString, values.Headers["Cookie"].First());
        }
Пример #3
0
        public static void HyperionBody <TModel>(this BrowserContext browserContext, TModel model, ISerializer serializer = null)
        {
            if (serializer == null)
            {
                serializer = new HyperionSerializer();
            }

            IBrowserContextValues browserContextValues = browserContext;

            browserContextValues.Body = new MemoryStream();
            serializer.Serialize("application/x-hyperion", model, browserContextValues.Body);
            browserContext.Header("Content-Type", "application/x-hyperion");
        }
Пример #4
0
        public void Should_add_basic_authentication_credentials_to_the_headers_of_the_request()
        {
            // Given
            var context = new BrowserContext();

            // When
            context.BasicAuth("username", "password");

            // Then
            IBrowserContextValues values = context;

            var credentials        = string.Format("{0}:{1}", "username", "password");
            var encodedCredentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials));

            Assert.Equal(1, values.Headers.Count);
            Assert.Equal("Basic " + encodedCredentials, values.Headers["Authorization"].First());
        }
Пример #5
0
        public async Task Should_add_basic_authentication_credentials_to_the_headers_of_the_request()
        {
            // Given
            var context = new BrowserContext(A.Fake <INancyEnvironment>());

            // When
            context.BasicAuth("username", "password");

            // Then
            IBrowserContextValues values = context;

            var credentials        = string.Format("{0}:{1}", "username", "password");
            var encodedCredentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials));

            values.Headers["Authorization"].ShouldHaveCount(1);
            values.Headers["Authorization"].First().ShouldEqual("Basic " + encodedCredentials);
        }
Пример #6
0
        private static Request CreateRequest(string method, Url url, IBrowserContextValues contextValues)
        {
            BuildRequestBody(contextValues);

            var requestStream =
                RequestStream.FromStream(contextValues.Body, 0, true);

            var certBytes = contextValues.ClientCertificate ?? null;

            var requestUrl = url;

            requestUrl.Scheme   = string.IsNullOrWhiteSpace(contextValues.Protocol) ? requestUrl.Scheme : contextValues.Protocol;
            requestUrl.HostName = string.IsNullOrWhiteSpace(contextValues.HostName) ? requestUrl.HostName : contextValues.HostName;
            requestUrl.Query    = string.IsNullOrWhiteSpace(url.Query) ? (contextValues.QueryString ?? string.Empty) : url.Query;

            return(new Request(method, requestUrl, requestStream, contextValues.Headers, contextValues.UserHostAddress, certBytes));
        }
Пример #7
0
        private static void BuildRequestBody(IBrowserContextValues contextValues)
        {
            if (contextValues.Body != null)
            {
                return;
            }

            var useFormValues = !String.IsNullOrEmpty(contextValues.FormValues);
            var bodyContents = useFormValues ? contextValues.FormValues : contextValues.BodyString;
            var bodyBytes = bodyContents != null ? Encoding.UTF8.GetBytes(bodyContents) : new byte[] { };

            if (useFormValues && !contextValues.Headers.ContainsKey("Content-Type"))
            {
                contextValues.Headers["Content-Type"] = new[] { "application/x-www-form-urlencoded" };
            }

            contextValues.Body = new MemoryStream(bodyBytes);
        }
Пример #8
0
        private static void BuildRequestBody(IBrowserContextValues contextValues)
        {
            if (contextValues.Body != null)
            {
                return;
            }

            var useFormValues = !string.IsNullOrEmpty(contextValues.FormValues);
            var bodyContents  = useFormValues ? contextValues.FormValues : contextValues.BodyString;
            var bodyBytes     = bodyContents != null?Encoding.UTF8.GetBytes(bodyContents) : ArrayCache.Empty <byte>();

            if (useFormValues && !contextValues.Headers.ContainsKey("Content-Type"))
            {
                contextValues.Headers["Content-Type"] = new[] { "application/x-www-form-urlencoded" };
            }

            contextValues.Body = new MemoryStream(bodyBytes);
        }
Пример #9
0
        public void Should_add_cookies_to_the_request()
        {
            // Given
            var context = new BrowserContext(A.Fake <INancyEnvironment>());

            var cookies =
                new Dictionary <string, string>
            {
                { "CookieName", "CookieValue" },
                { "SomeCookieName", "SomeCookieValue" }
            };

            // When
            context.Cookie(cookies);

            // Then
            IBrowserContextValues values = context;

            var cookieString = cookies.Aggregate(string.Empty, (current, cookie) => current + string.Format("{0}={1};", HttpUtility.UrlEncode(cookie.Key), HttpUtility.UrlEncode(cookie.Value)));

            values.Headers["Cookie"].ShouldHaveCount(1);
            values.Headers["Cookie"].First().ShouldEqual(cookieString);
        }
Пример #10
0
        private static Request CreateRequest(string method, Url url, IBrowserContextValues contextValues)
        {
            BuildRequestBody(contextValues);

            var requestStream =
                RequestStream.FromStream(contextValues.Body, 0, true);

            var certBytes = (contextValues.ClientCertificate == null)
                ? ArrayCache.Empty<byte>()
                : contextValues.ClientCertificate.GetRawCertData();

            var requestUrl = url;
            requestUrl.Scheme = string.IsNullOrWhiteSpace(contextValues.Protocol) ? requestUrl.Scheme : contextValues.Protocol;
            requestUrl.HostName = string.IsNullOrWhiteSpace(contextValues.HostName) ? requestUrl.HostName : contextValues.HostName;
            requestUrl.Query = string.IsNullOrWhiteSpace(url.Query) ? (contextValues.QueryString ?? string.Empty) : url.Query;

            return new Request(method, requestUrl, requestStream, contextValues.Headers, contextValues.UserHostAddress, certBytes);
        }
Пример #11
0
        private static void BuildRequestBody(IBrowserContextValues contextValues)
        {
            if (contextValues.Body != null) {
                return;
            }

            if (string.IsNullOrEmpty(contextValues.BodyString)) {
                contextValues.Body = Stream.Null;
            } else {
                var bodyContents = contextValues.BodyString;
                var bodyBytes = bodyContents != null ? Encoding.UTF8.GetBytes(bodyContents) :
                    new byte[] { };

                contextValues.Body = new MemoryStream(bodyBytes);
            }
        }