Skip to content

Commit 6bb377f

Browse files
committed
Fixed: fail on non-leading whitespace in field chains
1 parent c7e396d commit 6bb377f

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

src/JsonApiDotNetCore/Queries/Internal/Parsing/QueryTokenizer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public IEnumerable<Token> EnumerateTokens()
8787
}
8888
else
8989
{
90-
if (_textBuffer.Length == 0 && ch == ' ' && !_isInQuotedSection)
90+
if (ch == ' ' && !_isInQuotedSection)
9191
{
9292
throw new QueryParseException("Unexpected whitespace.");
9393
}

test/JsonApiDotNetCoreTests/UnitTests/QueryStringParameters/FilterParseTests.cs

+3
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,16 @@ public void Reader_Is_Enabled(JsonApiQueryStringParameters parametersDisabled, b
6666
[InlineData("filter[posts]", "equals(author,'some')", "Attribute 'author' does not exist on resource type 'blogPosts'.")]
6767
[InlineData("filter[posts]", "lessThan(author,null)", "Attribute 'author' does not exist on resource type 'blogPosts'.")]
6868
[InlineData("filter", " ", "Unexpected whitespace.")]
69+
[InlineData("filter", "contains(owner.displayName ,)", "Unexpected whitespace.")]
6970
[InlineData("filter", "contains(owner.displayName, )", "Unexpected whitespace.")]
7071
[InlineData("filter", "some", "Filter function expected.")]
7172
[InlineData("filter", "equals", "( expected.")]
7273
[InlineData("filter", "equals'", "Unexpected ' outside text.")]
7374
[InlineData("filter", "equals(", "Count function or field name expected.")]
7475
[InlineData("filter", "equals('1'", "Count function or field name expected.")]
7576
[InlineData("filter", "equals(count(posts),", "Count function, value between quotes, null or field name expected.")]
77+
[InlineData("filter", "equals(owner..displayName,'')", "Count function or field name expected.")]
78+
[InlineData("filter", "equals(owner.displayName.,'')", "Count function or field name expected.")]
7679
[InlineData("filter", "equals(title,')", "' expected.")]
7780
[InlineData("filter", "equals(title,null", ") expected.")]
7881
[InlineData("filter", "equals(null", "Field 'null' does not exist on resource type 'blogs'.")]

0 commit comments

Comments
 (0)