コード例 #1
0
 /// <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");
 }
コード例 #2
0
 /// <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());
     }
 }
コード例 #3
0
 /// <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");
 }
コード例 #4
0
 /// <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");
 }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
 private static string RequestTextToString(HttpMessage.Request request)
 {
     return(request.RequestText == null ? String.Empty : request.RequestText);
 }