Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

112 lines
3.6 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System;
using System.Data.EntityClient;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.Http.Hosting;
using System.Web.Http.Routing;
namespace Microsoft.Web.Http.Data.Test
{
internal static class TestHelpers
{
internal static HttpRequestMessage CreateTestMessage(string url, HttpMethod httpMethod, HttpConfiguration config)
{
HttpRequestMessage requestMessage = new HttpRequestMessage(httpMethod, url);
IHttpRouteData rd = config.Routes[0].GetRouteData("/", requestMessage);
requestMessage.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, rd);
return requestMessage;
}
// Return a non-functional connection string for an EF context. This will
// allow a context to be instantiated, but not used.
internal static string GetTestEFConnectionString()
{
string connectionString = new EntityConnectionStringBuilder
{
Metadata = "res://*",
Provider = "System.Data.SqlClient",
ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder
{
InitialCatalog = "Northwind",
DataSource = "xyz",
IntegratedSecurity = false,
UserID = "xyz",
Password = "xyz",
}.ConnectionString
}.ConnectionString;
return connectionString;
}
}
internal static class TestConstants
{
public static string BaseUrl = "http://testhost/";
public static string CatalogUrl = "http://testhost/Catalog/";
public static string CitiesUrl = "http://testhost/Cities/";
}
internal class HttpContextStub : HttpContextBase
{
private HttpRequestStub request;
public HttpContextStub(Uri baseAddress, HttpRequestMessage request)
{
this.request = new HttpRequestStub(baseAddress, request);
}
public override HttpRequestBase Request
{
get
{
return this.request;
}
}
}
internal class HttpRequestStub : HttpRequestBase
{
private const string AppRelativePrefix = "~/";
private string appRelativeCurrentExecutionFilePath;
public HttpRequestStub(Uri baseAddress, HttpRequestMessage request)
{
this.appRelativeCurrentExecutionFilePath = GetAppRelativeCurrentExecutionFilePath(baseAddress.AbsoluteUri, request.RequestUri.AbsoluteUri);
}
public override string AppRelativeCurrentExecutionFilePath
{
get
{
return this.appRelativeCurrentExecutionFilePath;
}
}
public override string PathInfo
{
get
{
return String.Empty;
}
}
private static string GetAppRelativeCurrentExecutionFilePath(string baseAddress, string requestUri)
{
int queryPos = requestUri.IndexOf('?');
string requestUriNoQuery = queryPos < 0 ? requestUri : requestUri.Substring(0, queryPos);
if (baseAddress.Length >= requestUriNoQuery.Length)
{
return AppRelativePrefix;
}
else
{
return AppRelativePrefix + requestUriNoQuery.Substring(baseAddress.Length);
}
}
}
}