Skip to content

Commit 323f0c9

Browse files
committed
2 parents df66a4c + bab5397 commit 323f0c9

2 files changed

Lines changed: 52 additions & 4 deletions

File tree

Source/HttpMultipartParser.UnitTests/ParserScenarios/TinyData.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.IO;
34
using System.Text;
@@ -231,6 +232,50 @@ public async Task GetParameterValueReturnsNullIfNoParameterFoundAsync()
231232
}
232233
}
233234

235+
[Fact]
236+
public void GetParameterValueReturnsCorrectlyWithoutComparisonType()
237+
{
238+
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
239+
{
240+
var parser = MultipartFormDataParser.Parse(stream, "boundry", Encoding.UTF8);
241+
Assert.NotNull(parser.GetParameterValue("text"));
242+
Assert.Null(parser.GetParameterValue("Text"));
243+
}
244+
}
245+
246+
[Fact]
247+
public async Task GetParameterValueReturnsCorrectlyWithoutComparisonTypeAsync()
248+
{
249+
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
250+
{
251+
var parser = await MultipartFormDataParser.ParseAsync(stream, "boundry", Encoding.UTF8);
252+
Assert.NotNull(parser.GetParameterValue("text"));
253+
Assert.Null(parser.GetParameterValue("Text"));
254+
}
255+
}
256+
257+
[Fact]
258+
public void GetParameterValueReturnsCorrectlyWithComparisonType()
259+
{
260+
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
261+
{
262+
var parser = MultipartFormDataParser.Parse(stream, "boundry", Encoding.UTF8);
263+
Assert.NotNull(parser.GetParameterValue("text",StringComparison.OrdinalIgnoreCase));
264+
Assert.NotNull(parser.GetParameterValue("Text",StringComparison.OrdinalIgnoreCase));
265+
}
266+
}
267+
268+
[Fact]
269+
public async Task GetParameterValueReturnsCorrectlyWithComparisonTypeAsync()
270+
{
271+
using (Stream stream = TestUtil.StringToStream(_testCase.Request, Encoding.UTF8))
272+
{
273+
var parser = await MultipartFormDataParser.ParseAsync(stream, "boundry", Encoding.UTF8);
274+
Assert.NotNull(parser.GetParameterValue("text",StringComparison.OrdinalIgnoreCase));
275+
Assert.NotNull(parser.GetParameterValue("Text",StringComparison.OrdinalIgnoreCase));
276+
}
277+
}
278+
234279
[Fact]
235280
public void CanDetectBoundriesWithNewLineInNextBuffer()
236281
{

Source/HttpMultipartParser/Extensions.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Linq;
34

@@ -28,22 +29,24 @@ public static bool HasParameter(this IMultipartFormDataParser parser, string nam
2829
/// </summary>
2930
/// <param name="parser">The multipart form parser.</param>
3031
/// <param name="name">The name of the parameter.</param>
32+
/// <param name="comparisonType">One of the enumeration values that specifies how the strings will be compared.</param>
3133
/// <returns>The value of the parameter.</returns>
32-
public static string GetParameterValue(this IMultipartFormDataParser parser, string name)
34+
public static string GetParameterValue(this IMultipartFormDataParser parser, string name, StringComparison comparisonType = StringComparison.Ordinal)
3335
{
34-
return parser.GetParameterValues(name).FirstOrDefault();
36+
return parser.GetParameterValues(name, comparisonType).FirstOrDefault();
3537
}
3638

3739
/// <summary>
3840
/// Returns the values of a parameter or an empty enumerable if the parameter doesn't exist.
3941
/// </summary>
4042
/// <param name="parser">The multipart form parser.</param>
4143
/// <param name="name">The name of the parameter.</param>
44+
/// <param name="comparisonType">One of the enumeration values that specifies how the strings will be compared.</param>
4245
/// <returns>The values of the parameter.</returns>
43-
public static IEnumerable<string> GetParameterValues(this IMultipartFormDataParser parser, string name)
46+
public static IEnumerable<string> GetParameterValues(this IMultipartFormDataParser parser, string name, StringComparison comparisonType = StringComparison.Ordinal)
4447
{
4548
return parser.Parameters
46-
.Where(p => p.Name == name)
49+
.Where(p => p.Name.Equals(name, comparisonType))
4750
.Select(p => p.Data);
4851
}
4952
}

0 commit comments

Comments
 (0)