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()); }
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()); }
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"); }
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()); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); } }