From 566179e8b2a829f4ff50314da5f04baf0cca50f3 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Mon, 12 Sep 2016 11:17:04 +0000 Subject: [PATCH] REPO-1059: REST API: Invalid orderBy field direction is ignored (hence defaults to ascending rather than returning an error) - implement fix & update test - note: InvalidArgumentException maps to HTTP 400 - note: we already have tests for case-insensitive (ie. we allow ASC, Asc, AsC, DESC, Desc, DeSC, or similar) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@130555 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../tools/RecognizedParamsExtractor.java | 1 + .../tools/RecognizedParamsExtractorTest.java | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/source/java/org/alfresco/rest/framework/tools/RecognizedParamsExtractor.java b/source/java/org/alfresco/rest/framework/tools/RecognizedParamsExtractor.java index 360151e527..1527b32d22 100644 --- a/source/java/org/alfresco/rest/framework/tools/RecognizedParamsExtractor.java +++ b/source/java/org/alfresco/rest/framework/tools/RecognizedParamsExtractor.java @@ -315,6 +315,7 @@ public interface RecognizedParamsExtractor { rpeLogger().debug("Invalid sort order definition (" + sortDef + "). Valid values are " + SortColumn.ASCENDING + " or " + SortColumn.DESCENDING + "."); + throw new InvalidArgumentException("Unknown sort order direction: "+sortDef+" expected: asc or desc"); } } sortedColumns.add(new SortColumn(columnName, SortColumn.ASCENDING.equals(sortOrder))); diff --git a/source/test-java/org/alfresco/rest/framework/tools/RecognizedParamsExtractorTest.java b/source/test-java/org/alfresco/rest/framework/tools/RecognizedParamsExtractorTest.java index ae2ae155a2..d52139cb18 100644 --- a/source/test-java/org/alfresco/rest/framework/tools/RecognizedParamsExtractorTest.java +++ b/source/test-java/org/alfresco/rest/framework/tools/RecognizedParamsExtractorTest.java @@ -139,7 +139,7 @@ public class RecognizedParamsExtractorTest implements RecognizedParamsExtractor assertEquals("age", theSort.get(1).column); assertTrue(!theSort.get(1).asc); //desc - theSort = getSort("age Desc, name Asc"); + theSort = getSort("age DeSc, name AsC"); assertNotNull(theSort); assertTrue("Must have a value for column: NAME", !theSort.isEmpty()); assertTrue(theSort.size() == 2); @@ -147,15 +147,18 @@ public class RecognizedParamsExtractorTest implements RecognizedParamsExtractor assertTrue(!theSort.get(0).asc); //desc assertEquals("name", theSort.get(1).column); assertTrue(theSort.get(1).asc); + + try + { + getSort("age asc, name des"); // nvalid, should be desc + fail("Should throw an InvalidSelectException"); + } + catch (InvalidArgumentException error) + { + // this is correct + } - theSort = getSort("name des"); //invalid, should be desc - assertNotNull(theSort); - assertTrue("Must have a value for column: NAME", !theSort.isEmpty()); - assertTrue(theSort.size() == 1); - assertEquals("name", theSort.get(0).column); - assertTrue(theSort.get(0).asc); //Defaults to ascending because the sort order was invalid - - theSort = getSort("name asc,"); //invalid, should be desc + theSort = getSort("name asc,"); // trailing comma is ignored assertNotNull(theSort); assertTrue("Must have a value for column: NAME", !theSort.isEmpty()); assertTrue(theSort.size() == 1);