You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/04/04 07:50:58 UTC

[04/21] git commit: [OLINGO-206] more validation tests

[OLINGO-206] more validation tests


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/d3d41111
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/d3d41111
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/d3d41111

Branch: refs/heads/master
Commit: d3d411118eb84175b37e6614aba8e801c734491f
Parents: f3d5d66
Author: Stephan Klevenz <st...@sap.com>
Authored: Tue Mar 18 18:51:01 2014 +0100
Committer: Stephan Klevenz <st...@sap.com>
Committed: Tue Mar 18 18:51:01 2014 +0100

----------------------------------------------------------------------
 .../uri/validator/SystemQueryValidator.java     | 63 +++++++++++---------
 .../core/uri/validator/UriEdmValidatorTest.java | 58 +++++++++++++-----
 2 files changed, 78 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3d41111/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/SystemQueryValidator.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/SystemQueryValidator.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/SystemQueryValidator.java
index 0fd944f..b37ccde 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/SystemQueryValidator.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/validator/SystemQueryValidator.java
@@ -30,27 +30,27 @@ public class SystemQueryValidator {
   //CHECKSTYLE:OFF (Maven checkstyle)
   private boolean[][] decisionMatrix =
       {
-          /*                                       FILTER FORMAT EXPAND ID     COUNT  ORDERBY SEARCH SELECT SKIP   SKIPTOKEN LEVELS TOP */
-          /*                              all */ { true , true , true , false, true , true ,  true , true , true , true ,    true , false },
-          /*                            batch */ { false, false, false, false, false, false,  false, false, false, false,    false, false },
-          /*                        crossjoin */ { true , true , true , false, true , true ,  true , true , true , true ,    true , true  },
-          /*                         entityId */ { false, true , true , true , false, false,  false, true , false, false,    true , false },
-          /*                         metadata */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*                         resource */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*                          service */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*                        entitySet */ { true , true , true , false, true , true ,  true , true , true , true ,    true , true  },
-          /*                   entitySetCount */ { false, false, false, false, false, false,  false, false, false, false,    false, false },
-          /*                           entity */ { false, true , true , false, false, false,  false, true , false, false,    true , false },
-          /*                      mediaStream */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*                       references */ { true , true , false, false, false, true ,  true , false, true , true ,    false, true  },
-          /*                        reference */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*                  propertyComplex */ { false, true , true , false, false, false,  false, true , false, false,    true , false },
-          /*        propertyComplexCollection */ { true , true , true , false, true , true ,  false, false, true , true ,    true , true  },
-          /*   propertyComplexCollectionCount */ { false, false, false, false, false, false,  false, false, false, false,    false, false },
-          /*                propertyPrimitive */ { false, true , false, false, false, false,  false, false, false, false,    false, false },
-          /*      propertyPrimitiveCollection */ { true , true , false, false, false, true ,  false, false, true , true ,    false, true  },
-          /* propertyPrimitiveCollectionCount */ { false, false, false, false, false, false,  false, false, false, false,    false, false },
-          /*           propertyPrimitiveValue */ { false, true , false, false, false, false,  false, false, false, false,    false, false },          
+          /*                                          0-FILTER 1-FORMAT 2-EXPAND 3-ID     4-COUNT  5-ORDERBY 6-SEARCH 7-SELECT 8-SKIP   9-SKIPTOKEN 10-LEVELS 11-TOP */
+          /*                              all  0 */ { true ,   true ,   true ,   false,   true ,   true ,    true ,   true ,   true ,   true ,      true ,    false },
+          /*                            batch  1 */ { false,   false,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                        crossjoin  2 */ { true ,   true ,   true ,   false,   true ,   true ,    true ,   true ,   true ,   true ,      true ,    true  },
+          /*                         entityId  3 */ { false,   true ,   true ,   true ,   false,   false,    false,   true ,   false,   false,      true ,    false },
+          /*                         metadata  4 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                         resource  5 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                          service  6 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                        entitySet  7 */ { true ,   true ,   true ,   false,   true ,   true ,    true ,   true ,   true ,   true ,      true ,    true  },
+          /*                   entitySetCount  8 */ { false,   false,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                           entity  9 */ { false,   true ,   true ,   false,   false,   false,    false,   true ,   false,   false,      true ,    false },
+          /*                      mediaStream 10 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                       references 11 */ { true ,   true ,   false,   false,   false,   true ,    true ,   false,   true ,   true ,      false,    true  },
+          /*                        reference 12 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                  propertyComplex 13 */ { false,   true ,   true ,   false,   false,   false,    false,   true ,   false,   false,      true ,    false },
+          /*        propertyComplexCollection 14 */ { true ,   true ,   true ,   false,   true ,   true ,    false,   false,   true ,   true ,      true ,    true  },
+          /*   propertyComplexCollectionCount 15 */ { false,   false,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*                propertyPrimitive 16 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*      propertyPrimitiveCollection 17 */ { true ,   true ,   false,   false,   false,   true ,    false,   false,   true ,   true ,      false,    true  },
+          /* propertyPrimitiveCollectionCount 18 */ { false,   false,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },
+          /*           propertyPrimitiveValue 19 */ { false,   true ,   false,   false,   false,   false,    false,   false,   false,   false,      false,    false },          
       };
   //CHECKSTYLE:ON
   //@formatter:on
@@ -102,7 +102,7 @@ public class SystemQueryValidator {
       idx = 11;
       break;
     default:
-      throw new ODataRuntimeException("Unsupported Option: " + queryOptionKind);
+      throw new ODataRuntimeException("Unsupported option: " + queryOptionKind);
     }
 
     return idx;
@@ -134,26 +134,33 @@ public class SystemQueryValidator {
       idx = 6;
       break;
     default:
-      throw new ODataRuntimeException("Unsupported Option: " + uriInfo.getKind());
+      throw new ODataRuntimeException("Unsupported uriInfo kind: " + uriInfo.getKind());
     }
 
     return idx;
   }
 
-  private void validateKeyPredicateTypes(final UriInfo uriInfo, final Edm edm) throws UriValidationException {
-
-  }
-
   private void validateQueryOptions(final UriInfo uriInfo) throws UriValidationException {
+    try {
     int row = rowIndex(uriInfo);
 
     for (SystemQueryOption option : uriInfo.getSystemQueryOptions()) {
       int col = colIndex(option.getKind());
+      
+      System.out.print("[" + row +"][" + col +"]");
+
+      
       if (!decisionMatrix[row][col]) {
-        throw new UriValidationException("Unsupported System Query Option for Uri Type: " + option.getName());
+        throw new UriValidationException("System query option not allowed: " + option.getName());
       }
     }
+    }finally {
+      System.out.println();
+    }
+    
+  }
 
+  private void validateKeyPredicateTypes(final UriInfo uriInfo, final Edm edm) throws UriValidationException {
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d3d41111/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/validator/UriEdmValidatorTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/validator/UriEdmValidatorTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/validator/UriEdmValidatorTest.java
index de5578c..14e93cc 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/validator/UriEdmValidatorTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/validator/UriEdmValidatorTest.java
@@ -34,6 +34,7 @@ public class UriEdmValidatorTest {
 
   private Edm edm = new EdmProviderImpl(new EdmTechProvider());
 
+
   String[] tmpUri = {
       "$crossjoin(ESKeyNav, ESTwoKeyNav)/invalid                                                                    ",
       "$crossjoin(invalidEntitySet)                                                                                 ",
@@ -86,12 +87,46 @@ public class UriEdmValidatorTest {
   public void systemQueryOptionValid() throws Exception {
     String[] uris =
     {
-        /* service document */
-        "",
+        /* $filter */
+        "/$all?$format=bla",
+        "/$batch?$format=bla",
+        "/$crossjoin(ESAllPrim)?$format=bla",
+        "/$entity?$id=Products(0)?$format=bla",
+        "/$metadata?$format=bla",
+        "?$format=bla",
+        "/ESAllPrim?$format=bla",
+        "/ESAllPrim/$count?$format=bla",
+        "/ESAllPrim(1)?$format=bla"        ,
+        "/ESMedia(1)/$value?$format=bla",
+        "/ESAllPrim/$ref?$format=bla",
+        "/ESAllPrim(1)/$ref?$format=bla",
+        "/ESCompComp(1)/PropertyComplex?$format=bla",
+        "/ESCompCollComp(1)/PropertyComplex/CollPropertyComplex?$format=bla",
+        "/ESCompCollComp(1)/PropertyComplex/CollPropertyComplex/$count?$format=bla",
+        "/ESAllPrim(1)/PropertyString?$format=bla",
+        "/ESCollAllPrim/CollPropertyString?$format=bla",
+        "/ESCollAllPrim/CollPropertyString/$count?$format=bla",
+        "/ESAllPrim(1)/PropertyString/$value?$format=bla"
+        /* all */
+        /* batch */
+        /* crossjoin */
+        /* entityId */
         /* metadata */
-        "/$metadata",
-        "/$metadata?$format=atom",
-    };
+        /* resource */
+        /* service */
+        /* entitySet */
+        /* entitySetCount */
+        /* entity */
+        /* mediaStream */
+        /* references */
+        /* reference */
+        /* propertyComplex */
+        /* propertyComplexCollection */
+        /* propertyComplexCollectionCount */
+        /* propertyPrimitive */
+        /* propertyPrimitiveCollection */
+        /* propertyPrimitiveCollectionCount */
+        /* propertyPrimitiveValue */};
 
     for (String uri : uris) {
       try {
@@ -104,19 +139,10 @@ public class UriEdmValidatorTest {
   }
 
   @Test
+  @Ignore
   public void systemQueryOptionInvalid() throws Exception {
     String[] uris =
         {
-            /* service document */
-            /* metadata */
-            "/$metadata?$format=json&$top=3&$skip=5&$skiptoken=123",
-
-            /* misc */
-            "ESKeyNav(1)?$expand=NavPropertyETKeyNavOne/$ref                                                              ",
-            "ESKeyNav(1)?$expand=NavPropertyETKeyNavOne/$count                                                            ",
-            "ESKeyNav?$top=-3                                                                                             ",
-            "ESAllPrim?$count=foo                                                                                         ",
-            "ESAllPrim?$skip=-3                                                                                           "
         };
 
     for (String uri : uris) {
@@ -133,6 +159,8 @@ public class UriEdmValidatorTest {
   private void parseAndValidate(String uri) throws UriParserException, UriValidationException {
     UriInfo uriInfo = new Parser().parseUri(uri.trim(), edm);
     SystemQueryValidator validator = new SystemQueryValidator();
+    
+    System.out.print("URI: " + uri );
     validator.validate(uriInfo, edm);
   }
 }