From 6bb377fb71108f0931961c7ff670cd2cbf4f2c16 Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Thu, 15 Dec 2022 10:55:23 +0100 Subject: [PATCH] Fixed: fail on non-leading whitespace in field chains --- .../Queries/Internal/Parsing/QueryTokenizer.cs | 2 +- .../UnitTests/QueryStringParameters/FilterParseTests.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/JsonApiDotNetCore/Queries/Internal/Parsing/QueryTokenizer.cs b/src/JsonApiDotNetCore/Queries/Internal/Parsing/QueryTokenizer.cs index cd920554c9..37f29da58d 100644 --- a/src/JsonApiDotNetCore/Queries/Internal/Parsing/QueryTokenizer.cs +++ b/src/JsonApiDotNetCore/Queries/Internal/Parsing/QueryTokenizer.cs @@ -87,7 +87,7 @@ public IEnumerable EnumerateTokens() } else { - if (_textBuffer.Length == 0 && ch == ' ' && !_isInQuotedSection) + if (ch == ' ' && !_isInQuotedSection) { throw new QueryParseException("Unexpected whitespace."); } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/QueryStringParameters/FilterParseTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/QueryStringParameters/FilterParseTests.cs index 562270a358..140ce94c94 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/QueryStringParameters/FilterParseTests.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/QueryStringParameters/FilterParseTests.cs @@ -66,6 +66,7 @@ public void Reader_Is_Enabled(JsonApiQueryStringParameters parametersDisabled, b [InlineData("filter[posts]", "equals(author,'some')", "Attribute 'author' does not exist on resource type 'blogPosts'.")] [InlineData("filter[posts]", "lessThan(author,null)", "Attribute 'author' does not exist on resource type 'blogPosts'.")] [InlineData("filter", " ", "Unexpected whitespace.")] + [InlineData("filter", "contains(owner.displayName ,)", "Unexpected whitespace.")] [InlineData("filter", "contains(owner.displayName, )", "Unexpected whitespace.")] [InlineData("filter", "some", "Filter function expected.")] [InlineData("filter", "equals", "( expected.")] @@ -73,6 +74,8 @@ public void Reader_Is_Enabled(JsonApiQueryStringParameters parametersDisabled, b [InlineData("filter", "equals(", "Count function or field name expected.")] [InlineData("filter", "equals('1'", "Count function or field name expected.")] [InlineData("filter", "equals(count(posts),", "Count function, value between quotes, null or field name expected.")] + [InlineData("filter", "equals(owner..displayName,'')", "Count function or field name expected.")] + [InlineData("filter", "equals(owner.displayName.,'')", "Count function or field name expected.")] [InlineData("filter", "equals(title,')", "' expected.")] [InlineData("filter", "equals(title,null", ") expected.")] [InlineData("filter", "equals(null", "Field 'null' does not exist on resource type 'blogs'.")]