/// <summary> /// Helper function to validate headers for OData request. /// </summary> public static void ValidateHeadersForODataRequest( HttpMessage.Request expected, HttpMessage.Request actual) { DatabaseTestHelper.ValidateHeadersForServiceRequest(expected, actual); Assert.IsTrue( actual.Headers.Contains("DataServiceVersion"), "DataServiceVersion header does not exist in the request"); Assert.AreEqual( expected.Headers["DataServiceVersion"], actual.Headers["DataServiceVersion"], "DataServiceVersion header does not match"); }
/// <summary> /// Modifies the OData get request to use the real server's Uri. /// </summary> public static void FixODataRequestPayload( HttpMessage.Request request, Uri serviceUri, Uri mockServerUri) { // Fix the $link Uris if (serviceUri != null && request.RequestText != null && request.RequestText.Contains("dataservices")) { request.RequestText = request.RequestText.Replace(mockServerUri.ToString(), serviceUri.ToString()); } }
/// <summary> /// Helper function to validate headers for Service request. /// </summary> public static void ValidateHeadersForServiceRequest( HttpMessage.Request expected, HttpMessage.Request actual) { Assert.IsTrue( actual.Headers.Contains(DataServiceConstants.AccessTokenHeader), "AccessToken header does not exist in the request"); Assert.IsTrue( actual.Headers.Contains("x-ms-client-session-id"), "session-id header does not exist in the request"); Assert.IsTrue( actual.Headers.Contains("x-ms-client-request-id"), "request-id header does not exist in the request"); Assert.IsTrue( actual.Cookies.Contains(DataServiceConstants.AccessCookie), "AccessCookie does not exist in the request"); }
/// <summary> /// Helper function to validate headers for GetAccessToken request. /// </summary> public static void ValidateGetAccessTokenRequest( HttpMessage.Request expected, HttpMessage.Request actual) { Assert.IsTrue( actual.RequestUri.AbsoluteUri.EndsWith("GetAccessToken"), "Incorrect Uri specified for GetAccessToken"); Assert.IsTrue( actual.Headers.Contains("sqlauthorization"), "sqlauthorization header does not exist in the request"); Assert.AreEqual( expected.Headers["sqlauthorization"], actual.Headers["sqlauthorization"], "sqlauthorization header does not match"); Assert.IsNull( actual.RequestText, "There should be no request text for GetAccessToken"); }
/// <summary> /// Create an <see cref="HttpMessage.Request"/> object out of the given /// <paramref name="originalRequest"/>. /// </summary> /// <param name="originalRequest">The original request to mimic.</param> /// <returns>An <see cref="HttpMessage.Request"/> object containing the request.</returns> private static HttpMessage.Request ConstructRequestInfo( HttpListenerRequest originalRequest) { HttpMessage.Request requestInfo = new HttpMessage.Request(); // Copy the request Uri and Method requestInfo.RequestUri = originalRequest.Url; requestInfo.Method = originalRequest.HttpMethod; // Copy all relevant headers to the request requestInfo.Headers = new HttpMessage.HeaderCollection(); foreach (string headerKey in originalRequest.Headers.AllKeys) { if (headerKey.Equals("User-Agent", StringComparison.OrdinalIgnoreCase)) { requestInfo.UserAgent = originalRequest.Headers[headerKey]; } else if (headerKey.Equals("Content-Type", StringComparison.OrdinalIgnoreCase)) { requestInfo.ContentType = originalRequest.Headers[headerKey]; } else if (headerKey.Equals("Accept", StringComparison.OrdinalIgnoreCase)) { requestInfo.Accept = originalRequest.Headers[headerKey]; } else if (!headerKey.Equals("Connection", StringComparison.OrdinalIgnoreCase) && !headerKey.Equals("Host", StringComparison.OrdinalIgnoreCase) && !headerKey.Equals("Content-Length", StringComparison.OrdinalIgnoreCase) && !headerKey.Equals("Expect", StringComparison.OrdinalIgnoreCase)) { requestInfo.Headers.Add(new HttpMessage.Header { Name = headerKey, Value = originalRequest.Headers[headerKey] }); } } // Copy response cookies requestInfo.Cookies = new HttpMessage.CookieCollection(); foreach (Cookie cookie in originalRequest.Cookies) { requestInfo.Cookies.Add(new HttpMessage.Cookie { Name = cookie.Name, Value = cookie.Value, }); } // Copy response stream if (originalRequest.Headers.AllKeys.Contains("Content-Length")) { using (StreamReader reader = new StreamReader(originalRequest.InputStream)) { requestInfo.RequestText = reader.ReadToEnd(); } } // Retrieve the certificate on the request if any. requestInfo.Certificate = originalRequest.GetClientCertificate(); return requestInfo; }
private static string RequestTextToString(HttpMessage.Request request) { return(request.RequestText == null ? String.Empty : request.RequestText); }