Repository: ranger Updated Branches: refs/heads/master 47c8da66f -> bae15a962
RANGER-1603: Code improvement as recommended by good coding practices Project: http://git-wip-us.apache.org/repos/asf/ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/bae15a96 Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/bae15a96 Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/bae15a96 Branch: refs/heads/master Commit: bae15a962ac87f02c4d982edb2d5bd566dec5b7f Parents: 47c8da6 Author: Abhay Kulkarni <akulka...@hortonworks.com> Authored: Mon May 22 16:56:39 2017 -0700 Committer: Abhay Kulkarni <akulka...@hortonworks.com> Committed: Mon May 22 16:56:39 2017 -0700 ---------------------------------------------------------------------- .../RangerAbstractResourceMatcher.java | 10 +- .../test_resourcematcher_path.json | 302 ++++++++++++++++++- 2 files changed, 293 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ranger/blob/bae15a96/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java b/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java index 8c47df2..a53c8dc 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java @@ -335,14 +335,16 @@ public abstract class RangerAbstractResourceMatcher implements RangerResourceMat } } - if (needWildcardMatch) { + if (needWildcardMatch) { // test?, test*a*, test*a*b, *test*a ret = optIgnoreCase ? new CaseInsensitiveWildcardMatcher(policyValue) : new CaseSensitiveWildcardMatcher(policyValue); - } else if (wildcardStartIdx == -1) { + } else if (wildcardStartIdx == -1) { // test, testa, testab ret = optIgnoreCase ? new CaseInsensitiveStringMatcher(policyValue) : new CaseSensitiveStringMatcher(policyValue); - } else if (wildcardStartIdx == 0) { + } else if (wildcardStartIdx == 0) { // *test, **test, *testa, *testab String matchStr = policyValue.substring(wildcardEndIdx + 1); ret = optIgnoreCase ? new CaseInsensitiveEndsWithMatcher(matchStr) : new CaseSensitiveEndsWithMatcher(matchStr); - } else { + } else if (wildcardEndIdx != (len - 1)) { // test*a, test*ab + ret = optIgnoreCase ? new CaseInsensitiveWildcardMatcher(policyValue) : new CaseSensitiveWildcardMatcher(policyValue); + } else { // test*, test**, testa*, testab* String matchStr = policyValue.substring(0, wildcardStartIdx); ret = optIgnoreCase ? new CaseInsensitiveStartsWithMatcher(matchStr) : new CaseSensitiveStartsWithMatcher(matchStr); } http://git-wip-us.apache.org/repos/asf/ranger/blob/bae15a96/agents-common/src/test/resources/resourcematcher/test_resourcematcher_path.json ---------------------------------------------------------------------- diff --git a/agents-common/src/test/resources/resourcematcher/test_resourcematcher_path.json b/agents-common/src/test/resources/resourcematcher/test_resourcematcher_path.json index 86da28c..97765f9 100644 --- a/agents-common/src/test/resources/resourcematcher/test_resourcematcher_path.json +++ b/agents-common/src/test/resources/resourcematcher/test_resourcematcher_path.json @@ -1,6 +1,277 @@ { "testCases":[ { + "name": "1a:value=/test?; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test?"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testa", "result": true}, + {"name": "incomplete-path", "input": "/test", "result": false}, + {"name": "extra-path", "input": "/testab", "result": false} + ] + }, + { + "name": "1b:value=/test*a*; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test*a*"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testa", "result": true}, + {"name": "expanded-path-1", "input": "/test1a", "result": true}, + {"name": "expanded-path-2", "input": "/test1a2", "result": true}, + {"name": "incorrect-path", "input": "/tes1a2", "result": false} + ] + }, + { + "name": "1c:value=/test*a*b; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test*a*b"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testab", "result": true}, + {"name": "expanded-path-1", "input": "/test1ab", "result": true}, + {"name": "expanded-path-2", "input": "/test1a2b", "result": true}, + {"name": "incorrect-path", "input": "/tesa12b", "result": false} + ] + }, + { + "name": "1d:value=/*test*a; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/*test*a"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testa", "result": true}, + {"name": "expanded-path-1", "input": "/1test2a", "result": true}, + {"name": "expanded-path-2", "input": "/01test23a", "result": true}, + {"name": "incorrect-path", "input": "/tesa", "result": false} + ] + }, + { + "name": "2:value=/test; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/test", "result": true}, + {"name": "incorrect-path-1", "input": "/testa", "result": false}, + {"name": "incorrect-path-2", "input": "/1test", "result": false} + ] + }, + { + "name": "3:value=/*test; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/*test", "**test"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/test", "result": true}, + {"name": "expanded-path-1", "input": "/1test", "result": true}, + {"name": "expanded-path-2", "input": "/12test", "result": true}, + {"name": "incorrect-path", "input": "/12testa", "result": false} + ] + }, + { + "name": "4a:value=/test*a; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test*a"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testa", "result": true}, + {"name": "expanded-path-1", "input": "/test1a", "result": true}, + {"name": "expanded-path-2", "input": "/test12a", "result": true}, + {"name": "incorrect-path", "input": "/testb", "result": false} + ] + }, + { + "name": "4b:value=/*test*a; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/*test*a"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/testa", "result": true}, + {"name": "expanded-path-1", "input": "/test1a", "result": true}, + {"name": "expanded-path-2", "input": "/test12a", "result": true}, + {"name": "expanded-path-3", "input": "/0test12a", "result": true}, + {"name": "incorrect-path", "input": "/0testb", "result": false} + ] + }, + { + "name": "5:value=/test*; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/test*", "/test**"], + "isRecursive": false + }, + "tests": [ + {"name": "correct-path", "input": "/test", "result": true}, + {"name": "expanded-path-1", "input": "/test1", "result": true}, + {"name": "expanded-path-2", "input": "/test12", "result": true}, + {"name": "incorrect-path-1", "input": "/0test", "result": false}, + {"name": "incorrect-path-2", "input": "/tes", "result": false} + ] + }, + { + "name": "Case 0:value=/home/; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/", "/home"], + "isRecursive": false + }, + "tests": [ + {"name": "seemingly-correct-path", "input": "/home/", "result": true}, + {"name": "without-slash-path", "input": "/home", "result": true}, + {"name": "incorrect-path", "input": "/home/a.txt", "result": false} + ] + }, + { + "name": "Case 0:value=/home/; isRecursive=true; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/"], + "isRecursive": true + }, + "tests": [ + {"name": "seemingly-correct-path", "input": "/home/", "result": false}, + {"name": "correct-path", "input": "/home/a.txt", "result": true} + ] + }, + { + "name": "Case 4:value=/home/*/a.txt; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/*/a.txt"], + "isRecursive": false + }, + "tests": [ + {"name": "incorrect-path", "input": "/home/1/b.txt", "result": false}, + {"name": "missing-level-path", "input": "/home/a.txt", "result": false}, + {"name": "one-level-path", "input": "/home/1/a.txt", "result": true}, + {"name": "multi-level-path", "input": "/home/1/2/a.txt", "result": true}, + {"name": "multi-level-path", "input": "/home/1/2/ba.txt", "result": false} + ] + } + , + { + "name": "Case 7:value=/home/*a.txt; isRecursive=false; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/*a.txt"], + "isRecursive": false + }, + "tests": [ + {"name": "multi-level-path", "input": "/home/1/2/3a.txt", "result": true}, + {"name": "incorrect-path", "input": "/homea.txt", "result": false}, + {"name": "exact-path", "input": "/home/a.txt", "result": true} + ] + } + , + { + "name": "Case 4:value=/home/*/a.txt; isRecursive=true; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/*/a.txt"], + "isRecursive": true + }, + "tests": [ + {"name": "missing-level-path", "input": "/home/a.txt", "result": false}, + {"name": "correct-path", "input": "/home/1/a.txt", "result": true}, + {"name": "incorrect-path", "input": "/home/1/b.txt", "result": false}, + {"name": "multi-level-path", "input": "/home/1/2/a.txt", "result": true}, + {"name": "multi-level-path", "input": "/home/1/2/ba.txt", "result": false} + ] + } + , + { + "name": "Case 4:value=/home/*/*/a.txt; isRecursive=true; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": { + "values": ["/home/*/*/a.txt"], + "isRecursive": true + }, + "tests": [ + {"name": "missing-levels-path", "input": "/home/a.txt", "result": false}, + {"name": "missing-level-path", "input": "/home/1/a.txt", "result": false}, + {"name": "incorrect-path", "input": "/home/1/b.txt", "result": false}, + {"name": "correct-path", "input": "/home/1/2/a.txt", "result": true} + ] + } + , + { + "name": "Case 3: value=/home/; isRecursive=true; wildCard=true; ignoreCase=true", + "resourceDef": { + "matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", + "matcherOptions": {"wildCard": true, "ignoreCase": true} + }, + "policyResource": {"values": ["/home/"], "isRecursive": true}, + "tests": [ + {"name": "slash-at-end-path", "input": "/home/", "result": false}, + {"name": "correct-path", "input": "/home/a.txt", "result": true}, + {"name": "incomplete-path", "input": "/home", "result": false} + ] + } + , + { "name":"value=/a/b*y.txt; isRecursive=true; wildCard=true; ignoreCase=true", "resourceDef":{ "matcher":"org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher", @@ -15,7 +286,7 @@ { "name":"child-path","input":"/a/b/y.txt", "result":true}, { "name":"grand-child-path","input":"/a/b1/b2/y.txt", "result":true}, { "name":"descendant-child-path","input":"/a/b1/c1/d1/any.txt", "result":true}, - { "name":"mismatche-path","input":"/a/any.txt", "result":false}, + { "name":"mismatche-path","input":"/a/any.txt", "result":false} ] } @@ -35,7 +306,7 @@ { "name":"child-path","input":"/a/b/y.txt", "result":true}, { "name":"grand-child-path","input":"/a/b1/b2/y.txt", "result":true}, { "name":"descendant-child-path","input":"/a/b1/c1/d1/any.txt", "result":true}, - { "name":"mismatche-path","input":"/a/any.txt", "result":false}, + { "name":"mismatche-path","input":"/a/any.txt", "result":false} ] } , @@ -89,7 +360,7 @@ { "name":"exact-path","input":"/", "result":true}, { "name":"child-path","input":"/path1", "result":false}, { "name":"grand-child-path","input":"/path1/path2", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -108,7 +379,7 @@ { "name":"exact-path","input":"/path1", "result":true}, { "name":"child-path","input":"/path1/path2", "result":false}, { "name":"grand-child-path","input":"/path1/path2/path3", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -128,7 +399,7 @@ { "name":"child-path","input":"/path1/path2", "result":true}, { "name":"grand-child-path","input":"/path1/path2/path3", "result":true}, { "name":"sibling-path","input":"/path2/path3/path4", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -146,7 +417,7 @@ { "name":"exact-path","input":"/", "result":true}, { "name":"child-path","input":"/path1", "result":true}, { "name":"grand-child-path","input":"/path1/path2", "result":true}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -217,7 +488,7 @@ { "name":"grand-child-path-camel-case","input":"/Path-To-Success/Is-Slow/And-Fun", "result":true}, { "name":"unmatched-path","input":"/pat1ha", "result":false}, { "name":"unmatched-child-path","input":"/pat1ha/path2b", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -242,7 +513,7 @@ { "name":"grand-child-path-camel-case","input":"/Path1/Path2/Path3", "result":true}, { "name":"unmatched-path","input":"/path1a", "result":false}, { "name":"unmatched-child-path","input":"/path1a/path2b", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -266,7 +537,7 @@ { "name":"grand-child-path","input":"/public/archive/2008/first-test", "result":true}, { "name":"unmatched-path","input":"/pat1ha", "result":false}, { "name":"unmatched-child-path","input":"/pat1ha/path2b", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -297,7 +568,7 @@ { "name":"grand-child-path","input":"/public/last-test/best-result/details", "result":true}, { "name":"unmatched-path","input":"/pat1ha", "result":false}, { "name":"unmatched-child-path","input":"/pat1ha/path2b", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -328,7 +599,7 @@ { "name":"grand-child-path","input":"/public/last-test/best-result/details", "result":true}, # TODO: should this be false since isRecursive=false? { "name":"unmatched-path","input":"/pat1ha", "result":false}, { "name":"unmatched-child-path","input":"/pat1ha/path2b", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -346,7 +617,7 @@ { "name":"exact-path","input":"root", "result":true}, { "name":"child-path","input":"root.default", "result":false}, { "name":"grand-child-path","input":"root.default.mycompany", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -368,7 +639,7 @@ { "name":"child-path","input":"root.default.mycompany1.test", "result":true}, # TODO: should this be false since isRecursive=false { "name":"child-path","input":"root.default.mycompany1.dev", "result":true}, # TODO: should this be false since isRecursive=false { "name":"sibling-path","input":"root.default.othercompany1.dev", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -386,7 +657,7 @@ { "name":"exact-path","input":"root", "result":true}, { "name":"child-path","input":"root.default", "result":true}, { "name":"grand-child-path","input":"root.default.mycompany", "result":true}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } , @@ -408,8 +679,9 @@ { "name":"child-path","input":"root.default.mycompany1.test", "result":true}, { "name":"child-path","input":"root.default.mycompany1.dev", "result":true}, { "name":"sibling-path","input":"root.default.othercompany1.dev", "result":false}, - { "name":"invalid-path","input":"path1", "result":false}, + { "name":"invalid-path","input":"path1", "result":false} ] } + ] }