-
Notifications
You must be signed in to change notification settings - Fork 46
/
RouteEvaluator.cs
47 lines (39 loc) · 1.46 KB
/
RouteEvaluator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Moq;
namespace UnitTests
{
public class RouteEvaluator
{
RouteCollection routes;
public RouteEvaluator(RouteCollection routes)
{
this.routes = routes;
}
public IList<RouteData> GetMatches(string virtualPath)
{
return GetMatches(virtualPath, "GET");
}
public IList<RouteData> GetMatches(string virtualPath, string httpMethod)
{
List<RouteData> matchingRouteData = new List<RouteData>();
foreach (var route in this.routes)
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context.Setup(ctx => ctx.Request).Returns(request.Object);
request.Setup(req => req.PathInfo).Returns(string.Empty);
request.Setup(req => req.AppRelativeCurrentExecutionFilePath).Returns(virtualPath);
if (!string.IsNullOrEmpty(httpMethod))
{
request.Setup(req => req.HttpMethod).Returns(httpMethod);
}
RouteData routeData = this.routes.GetRouteData(context.Object);
if (routeData != null)
matchingRouteData.Add(routeData);
}
return matchingRouteData;
}
}
}