forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServiceStackHandlerUrlTests.cs
More file actions
149 lines (121 loc) · 5.98 KB
/
ServiceStackHandlerUrlTests.cs
File metadata and controls
149 lines (121 loc) · 5.98 KB
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Net;
using NUnit.Framework;
using ServiceStack.Text;
namespace ServiceStack.ServiceHost.Tests
{
[TestFixture]
public class ServiceStackHandlerUrlTests
{
public static string ResolvePath(string mode, string path)
{
return WebHost.Endpoints.Extensions.HttpRequestExtensions.
GetPathInfo(path, mode, path.Split('/').First(x => x != ""));
}
public class MockUrlHttpRequest : IHttpRequest
{
public MockUrlHttpRequest() { }
public MockUrlHttpRequest(string mode, string path, string rawUrl)
{
this.PathInfo = ResolvePath(mode, path);
this.RawUrl = rawUrl;
AbsoluteUri = "http://localhost" + rawUrl;
}
public object OriginalRequest
{
get { throw new NotImplementedException(); }
}
public T TryResolve<T>()
{
throw new NotImplementedException();
}
public string OperationName { get; private set; }
public string ContentType { get; private set; }
public string HttpMethod { get; private set; }
public string UserAgent { get; set; }
public IDictionary<string, Cookie> Cookies { get; private set; }
public string ResponseContentType { get; set; }
public Dictionary<string, object> Items { get; private set; }
public NameValueCollection Headers { get; private set; }
public NameValueCollection QueryString { get; private set; }
public NameValueCollection FormData { get; private set; }
public string GetRawBody()
{
throw new NotImplementedException();
}
public string RawUrl { get; private set; }
public string AbsoluteUri { get; set; }
public string UserHostAddress { get; private set; }
public string RemoteIp { get; set; }
public bool IsSecureConnection { get; private set; }
public string[] AcceptTypes { get; private set; }
public string PathInfo { get; private set; }
public Stream InputStream { get; private set; }
public long ContentLength { get; private set; }
public IFile[] Files { get; private set; }
public string ApplicationFilePath { get; private set; }
public bool IsLocal
{
get { throw new NotImplementedException(); }
}
}
readonly List<MockUrlHttpRequest> allResults = new List<MockUrlHttpRequest> {
new MockUrlHttpRequest(null, "/handler.all35/json/metadata", "/handler.all35/json/metadata?op=Hello"),
new MockUrlHttpRequest(null, "/handler.all35/json/metadata/", "/handler.all35/json/metadata/?op=Hello"),
};
readonly List<MockUrlHttpRequest> apiResults = new List<MockUrlHttpRequest> {
new MockUrlHttpRequest(null, "/location.api.wildcard35/api/json/metadata", "/location.api.wildcard35/api/json/metadata?op=Hello"),
new MockUrlHttpRequest(null, "/location.api.wildcard35/api/json/metadata/", "/location.api.wildcard35/api/json/metadata/?op=Hello"),
};
readonly List<MockUrlHttpRequest> serviceStacksResults = new List<MockUrlHttpRequest> {
new MockUrlHttpRequest(null, "/location.servicestack.wildcard35/servicestack/json/metadata", "/location.servicestack.wildcard35/servicestack/json/metadata?op=Hello"),
new MockUrlHttpRequest(null, "/location.servicestack.wildcard35/servicestack/json/metadata/", "/location.servicestack.wildcard35/servicestack/json/metadata/?op=Hello"),
};
[Test]
public void Does_return_expected_absolute_and_path_urls()
{
var absolutePaths = allResults.ConvertAll(x => x.GetAbsolutePath());
var pathUrls = allResults.ConvertAll(x => x.GetPathUrl());
Assert.That(absolutePaths.All(x => x == "/handler.all35/json/metadata"));
Assert.That(pathUrls.All(x => x == "http://localhost/handler.all35/json/metadata"));
absolutePaths = apiResults.ConvertAll(x => x.GetAbsolutePath());
pathUrls = apiResults.ConvertAll(x => x.GetPathUrl());
Assert.That(absolutePaths.All(x => x == "/location.api.wildcard35/api/json/metadata"));
Assert.That(pathUrls.All(x => x == "http://localhost/location.api.wildcard35/api/json/metadata"));
absolutePaths = serviceStacksResults.ConvertAll(x => x.GetAbsolutePath());
pathUrls = serviceStacksResults.ConvertAll(x => x.GetPathUrl());
Assert.That(absolutePaths.All(x => x == "/location.servicestack.wildcard35/servicestack/json/metadata"));
Assert.That(pathUrls.All(x => x == "http://localhost/location.servicestack.wildcard35/servicestack/json/metadata"));
}
[Test]
public void Does_return_expected_parent_absolute_and_path_urls()
{
var absolutePaths = allResults.ConvertAll(x => x.GetParentAbsolutePath());
var pathUrls = allResults.ConvertAll(x => x.GetParentPathUrl());
Assert.That(absolutePaths.All(x => x == "/handler.all35/json"));
Assert.That(pathUrls.All(x => x == "http://localhost/handler.all35/json"));
absolutePaths = apiResults.ConvertAll(x => x.GetParentAbsolutePath());
pathUrls = apiResults.ConvertAll(x => x.GetParentPathUrl());
Assert.That(absolutePaths.All(x => x == "/location.api.wildcard35/api/json"));
Assert.That(pathUrls.All(x => x == "http://localhost/location.api.wildcard35/api/json"));
absolutePaths = serviceStacksResults.ConvertAll(x => x.GetParentAbsolutePath());
pathUrls = serviceStacksResults.ConvertAll(x => x.GetParentPathUrl());
Assert.That(absolutePaths.All(x => x == "/location.servicestack.wildcard35/servicestack/json"));
Assert.That(pathUrls.All(x => x == "http://localhost/location.servicestack.wildcard35/servicestack/json"));
}
[Test]
public void Can_Get_UrlHostName()
{
var urls = new List<string> { "http://localhost/a", "https://localhost/a",
"http://localhost:81", "http://localhost:81/", "http://localhost" };
var httpReqs = urls.ConvertAll(x => new MockUrlHttpRequest { AbsoluteUri = x });
var hostNames = httpReqs.ConvertAll(x => x.GetUrlHostName());
Console.WriteLine(hostNames.Dump());
Assert.That(hostNames.All(x => x == "localhost"));
}
}
}