File tree 2 files changed +29
-0
lines changed
src/JsonApiDotNetCore/QueryStrings
test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings
2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -38,6 +38,11 @@ public void ReadAll(DisableQueryStringAttribute? disableQueryStringAttribute)
38
38
39
39
foreach ( ( string parameterName , StringValues parameterValue ) in _queryStringAccessor . Query )
40
40
{
41
+ if ( parameterName . Length == 0 )
42
+ {
43
+ throw new InvalidQueryException ( "Empty query string parameter name." , null ) ;
44
+ }
45
+
41
46
IQueryStringParameterReader ? reader = _parameterReaders . FirstOrDefault ( nextReader => nextReader . CanRead ( parameterName ) ) ;
42
47
43
48
if ( reader != null )
Original file line number Diff line number Diff line change @@ -63,6 +63,30 @@ public async Task Can_use_unknown_query_string_parameter()
63
63
httpResponse . ShouldHaveStatusCode ( HttpStatusCode . OK ) ;
64
64
}
65
65
66
+ [ Fact ]
67
+ public async Task Cannot_use_empty_query_string_parameter_name ( )
68
+ {
69
+ // Arrange
70
+ var options = ( JsonApiOptions ) _testContext . Factory . Services . GetRequiredService < IJsonApiOptions > ( ) ;
71
+ options . AllowUnknownQueryStringParameters = false ;
72
+
73
+ const string route = "calendars?=" ;
74
+
75
+ // Act
76
+ ( HttpResponseMessage httpResponse , Document responseDocument ) = await _testContext . ExecuteGetAsync < Document > ( route ) ;
77
+
78
+ // Assert
79
+ httpResponse . ShouldHaveStatusCode ( HttpStatusCode . BadRequest ) ;
80
+
81
+ responseDocument . Errors . ShouldHaveCount ( 1 ) ;
82
+
83
+ ErrorObject error = responseDocument . Errors [ 0 ] ;
84
+ error . StatusCode . Should ( ) . Be ( HttpStatusCode . BadRequest ) ;
85
+ error . Title . Should ( ) . Be ( "Empty query string parameter name." ) ;
86
+ error . Detail . Should ( ) . BeNull ( ) ;
87
+ error . Source . Should ( ) . BeNull ( ) ;
88
+ }
89
+
66
90
[ Theory ]
67
91
[ InlineData ( "filter" ) ]
68
92
[ InlineData ( "sort" ) ]
You can’t perform that action at this time.
0 commit comments