Skip to content
This repository was archived by the owner on Nov 20, 2018. It is now read-only.

Commit dc055f7

Browse files
committed
#91 Add constructors to Form, Query, and Cookie features for testing.
1 parent de1017e commit dc055f7

File tree

7 files changed

+49
-11
lines changed

7 files changed

+49
-11
lines changed

src/Microsoft.AspNet.Http/HostString.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,7 @@ public static HostString FromUriComponent(Uri uri)
136136
throw new ArgumentNullException("uri");
137137
}
138138
return new HostString(uri.GetComponents(
139-
#if !NET40
140139
UriComponents.NormalizedHost | // Always convert punycode to Unicode.
141-
#endif
142140
UriComponents.HostAndPort, UriFormat.Unescaped));
143141
}
144142

src/Microsoft.AspNet.PipelineCore/FormFeature.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,23 @@ public class FormFeature : IFormFeature
2020
private Stream _bodyStream;
2121
private IReadableStringCollection _form;
2222

23-
public FormFeature(IFeatureCollection features)
23+
public FormFeature([NotNull] IReadableStringCollection form)
24+
{
25+
_form = form;
26+
}
27+
28+
public FormFeature([NotNull] IFeatureCollection features)
2429
{
2530
_features = features;
2631
}
2732

2833
public async Task<IReadableStringCollection> GetFormAsync(CancellationToken cancellationToken)
2934
{
35+
if (_features == null)
36+
{
37+
return _form;
38+
}
39+
3040
var body = _request.Fetch(_features).Body;
3141

3242
if (_bodyStream == null || _bodyStream != body)

src/Microsoft.AspNet.PipelineCore/Infrastructure/ParsingHelpers.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,6 @@ internal static IDictionary<string, string[]> GetQuery(string queryString)
818818
StringComparer.OrdinalIgnoreCase);
819819
}
820820

821-
#if !NET40
822821
internal static IFormCollection GetForm(string text)
823822
{
824823
IDictionary<string, string[]> form = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase);
@@ -830,7 +829,6 @@ internal static IFormCollection GetForm(string text)
830829
}
831830
return new FormCollection(form);
832831
}
833-
#endif
834832

835833
internal static string GetJoinedValue(IDictionary<string, string[]> store, string key)
836834
{

src/Microsoft.AspNet.PipelineCore/Microsoft.AspNet.PipelineCore.kproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<Compile Include="DefaultHttpResponseFeature.cs" />
3232
<Compile Include="FormFeature.cs" />
3333
<Compile Include="ItemsFeature.cs" />
34+
<Compile Include="NotNullAttribute.cs" />
3435
<Compile Include="QueryFeature.cs" />
3536
<Compile Include="RequestCookiesFeature.cs" />
3637
<Compile Include="ResponseCookiesFeature.cs" />
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System;
5+
6+
namespace Microsoft.AspNet.PipelineCore
7+
{
8+
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
9+
internal sealed class NotNullAttribute : Attribute
10+
{
11+
}
12+
}

src/Microsoft.AspNet.PipelineCore/QueryFeature.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4-
using System.Collections.Generic;
5-
using Microsoft.AspNet.Http;
64
using Microsoft.AspNet.FeatureModel;
5+
using Microsoft.AspNet.Http;
76
using Microsoft.AspNet.HttpFeature;
87
using Microsoft.AspNet.PipelineCore.Collections;
98
using Microsoft.AspNet.PipelineCore.Infrastructure;
@@ -17,7 +16,12 @@ public class QueryFeature : IQueryFeature
1716
private string _queryString;
1817
private IReadableStringCollection _query;
1918

20-
public QueryFeature(IFeatureCollection features)
19+
public QueryFeature([NotNull] IReadableStringCollection query)
20+
{
21+
_query = query;
22+
}
23+
24+
public QueryFeature([NotNull] IFeatureCollection features)
2125
{
2226
_features = features;
2327
}
@@ -26,6 +30,11 @@ public IReadableStringCollection Query
2630
{
2731
get
2832
{
33+
if (_features == null)
34+
{
35+
return _query;
36+
}
37+
2938
var queryString = _request.Fetch(_features).QueryString;
3039
if (_query == null || _queryString != queryString)
3140
{

src/Microsoft.AspNet.PipelineCore/RequestCookiesFeature.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,14 @@ public class RequestCookiesFeature : IRequestCookiesFeature
1717
private readonly FeatureReference<IHttpRequestFeature> _request = FeatureReference<IHttpRequestFeature>.Default;
1818
private string _cookiesHeader;
1919
private RequestCookiesCollection _cookiesCollection;
20-
private static readonly string[] ZeroHeaders = new string[0];
20+
private IReadableStringCollection _cookies;
2121

22-
public RequestCookiesFeature(IFeatureCollection features)
22+
public RequestCookiesFeature([NotNull] IReadableStringCollection cookies)
23+
{
24+
_cookies = cookies;
25+
}
26+
27+
public RequestCookiesFeature([NotNull] IFeatureCollection features)
2328
{
2429
_features = features;
2530
}
@@ -28,8 +33,13 @@ public IReadableStringCollection Cookies
2833
{
2934
get
3035
{
36+
if (_features == null)
37+
{
38+
return _cookies;
39+
}
40+
3141
var headers = _request.Fetch(_features).Headers;
32-
string cookiesHeader = ParsingHelpers.GetHeader(headers, Constants.Headers.Cookie) ?? "";
42+
string cookiesHeader = ParsingHelpers.GetHeader(headers, Constants.Headers.Cookie) ?? string.Empty;
3343

3444
if (_cookiesCollection == null)
3545
{

0 commit comments

Comments
 (0)