2 * ============LICENSE_START====================================================
4 * ===========================================================================
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6 * ===========================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END====================================================
22 package org.onap.aaf.cadi.aaf.test;
24 import static org.junit.Assert.*;
25 import static org.hamcrest.CoreMatchers.*;
28 import org.onap.aaf.cadi.aaf.PermEval;
30 public class JU_PermEval {
33 public void instanceNullTest() {
34 assertThat(PermEval.evalInstance(null, null), is(false));
35 assertThat(PermEval.evalInstance(null, "test"), is(false));
36 assertThat(PermEval.evalInstance("test", null), is(false));
40 public void instanceEmptyTest() {
41 assertThat(PermEval.evalInstance("", ""), is(false));
42 assertThat(PermEval.evalInstance("", "test"), is(false));
43 assertThat(PermEval.evalInstance("test", ""), is(false));
47 public void instanceAsterixTest() {
48 assertThat(PermEval.evalInstance("*", "*"), is(true));
49 assertTrue(PermEval.evalInstance("*","fred"));
53 public void instanceRegexTest() {
54 assertThat(PermEval.evalInstance("test", "!test"), is(true));
55 assertThat(PermEval.evalInstance(",", "!"), is(true));
56 assertThat(PermEval.evalInstance("test,test", "!test"), is(true));
58 assertThat(PermEval.evalInstance("test", "!"), is(false));
59 assertThat(PermEval.evalInstance("test", "!mismatch"), is(false));
60 assertThat(PermEval.evalInstance("test,mismatch", "!mismatch"), is(false));
64 public void instanceKeyTest() {
66 assertThat(PermEval.evalInstance("fred", ":fred"), is(false));
68 // Reject differing number of keys
69 assertThat(PermEval.evalInstance(":fred:barney", ":fred"), is(false));
70 assertThat(PermEval.evalInstance(":fred", ":fred:barney"), is(false));
72 // Accept all wildcard keys
73 assertThat(PermEval.evalInstance(":*", ":fred"), is(true));
75 // Accept matching empty keys
76 assertThat(PermEval.evalInstance(":", ":"), is(true));
77 assertThat(PermEval.evalInstance("/", "/"), is(true));
78 assertThat(PermEval.evalInstance("/something/", "/something/"), is(true));
80 // Reject non-matching empty keys
81 assertThat(PermEval.evalInstance(":fred", ":"), is(false));
83 // Accept matches starting with a wildcard
84 assertThat(PermEval.evalInstance(":!.*ed", ":fred"), is(true));
86 // Reject non-matches starting with a wildcard
87 assertThat(PermEval.evalInstance(":!.*arney", ":fred"), is(false));
89 // Accept matches ending with a wildcard
90 assertThat(PermEval.evalInstance(":fr*", ":fred"), is(true));
92 // Reject non-matches ending with a wildcard
93 assertThat(PermEval.evalInstance(":bar*", ":fred"), is(false));
96 assertThat(PermEval.evalInstance(":fred", ":fred"), is(true));
98 // Reject mismatched keys
99 assertThat(PermEval.evalInstance(":fred", ":barney"), is(false));
101 // Check using alt-start character
102 assertThat(PermEval.evalInstance("/fred", "/fred"), is(true));
103 assertThat(PermEval.evalInstance("/barney", "/fred"), is(false));
107 public void instanceDirectTest() {
108 assertThat(PermEval.evalInstance("fred","fred"), is(true));
109 assertThat(PermEval.evalInstance("fred,wilma","fred"), is(true));
110 assertThat(PermEval.evalInstance("barney,betty,fred,wilma","fred"), is(true));
111 assertThat(PermEval.evalInstance("barney,betty,wilma","fred"), is(false));
113 assertThat(PermEval.evalInstance("fr*","fred"), is(true));
114 assertThat(PermEval.evalInstance("freddy*","fred"), is(false));
115 assertThat(PermEval.evalInstance("ba*","fred"), is(false));
119 public void actionTest() {
121 assertThat(PermEval.evalAction("*", ""), is(true));
122 assertThat(PermEval.evalAction("*", "literally anything"), is(true));
124 // Reject empty actions
125 assertThat(PermEval.evalAction("literally anything", ""), is(false));
127 // Accept match as regex
128 assertThat(PermEval.evalAction("action", "!action"), is(true));
130 // Reject non-match as regex
131 assertThat(PermEval.evalAction("action", "!nonaction"), is(false));
133 // Accept exact match
134 assertThat(PermEval.evalAction("action", "action"), is(true));
137 assertThat(PermEval.evalAction("action", "nonaction"), is(false));
141 public void redundancyTest() {
143 assertTrue(PermEval.evalInstance(":fred:fred",":fred:fred"));
144 assertTrue(PermEval.evalInstance(":fred:fred,wilma",":fred:fred"));
145 assertTrue(PermEval.evalInstance(":fred:barney,betty,fred,wilma",":fred:fred"));
146 assertTrue(PermEval.evalInstance(":*:fred",":fred:fred"));
147 assertTrue(PermEval.evalInstance(":fred:*",":fred:fred"));
148 assertTrue(PermEval.evalInstance(":!f.*:fred",":fred:fred"));
149 assertTrue(PermEval.evalInstance(":fred:!f.*",":fred:fred"));
152 assertFalse(PermEval.evalInstance("fred","wilma"));
153 assertFalse(PermEval.evalInstance("fred,barney,betty","wilma"));
154 assertFalse(PermEval.evalInstance(":fred:fred",":fred:wilma"));
155 assertFalse(PermEval.evalInstance(":fred:fred",":wilma:fred"));
156 assertFalse(PermEval.evalInstance(":wilma:!f.*",":fred:fred"));
157 assertFalse(PermEval.evalInstance(":!f.*:wilma",":fred:fred"));
158 assertFalse(PermEval.evalInstance(":!w.*:!f.*",":fred:fred"));
159 assertFalse(PermEval.evalInstance(":!f.*:!w.*",":fred:fred"));
161 assertFalse(PermEval.evalInstance(":fred:!x.*",":fred:fred"));
163 // MSO Tests 12/3/2015
164 assertFalse(PermEval.evalInstance("/v1/services/features/*","/v1/services/features"));
165 assertFalse(PermEval.evalInstance(":v1:services:features:*",":v1:services:features"));
166 assertTrue(PermEval.evalInstance("/v1/services/features/*","/v1/services/features/api1"));
167 assertTrue(PermEval.evalInstance(":v1:services:features:*",":v1:services:features:api2"));
169 assertTrue(PermEval.evalInstance(":v1:requests:*",":v1:requests:test0-service"));
173 // Same tests, with Slashes
174 assertTrue(PermEval.evalInstance("/fred/fred","/fred/fred"));
175 assertTrue(PermEval.evalInstance("/fred/fred,wilma","/fred/fred"));
176 assertTrue(PermEval.evalInstance("/fred/barney,betty,fred,wilma","/fred/fred"));
177 assertTrue(PermEval.evalInstance("*","fred"));
178 assertTrue(PermEval.evalInstance("/*/fred","/fred/fred"));
179 assertTrue(PermEval.evalInstance("/fred/*","/fred/fred"));
180 assertTrue(PermEval.evalInstance("/!f.*/fred","/fred/fred"));
181 assertTrue(PermEval.evalInstance("/fred/!f.*","/fred/fred"));
184 assertFalse(PermEval.evalInstance("fred","wilma"));
185 assertFalse(PermEval.evalInstance("fred,barney,betty","wilma"));
186 assertFalse(PermEval.evalInstance("/fred/fred","/fred/wilma"));
187 assertFalse(PermEval.evalInstance("/fred/fred","/wilma/fred"));
188 assertFalse(PermEval.evalInstance("/wilma/!f.*","/fred/fred"));
189 assertFalse(PermEval.evalInstance("/!f.*/wilma","/fred/fred"));
190 assertFalse(PermEval.evalInstance("/!w.*/!f.*","/fred/fred"));
191 assertFalse(PermEval.evalInstance("/!f.*/!w.*","/fred/fred"));
193 assertFalse(PermEval.evalInstance("/fred/!x.*","/fred/fred"));
195 assertTrue(PermEval.evalInstance(":!com.att.*:role:write",":com.att.temp:role:write"));
197 // CPFSF-431 Group needed help with Wild Card
199 assertTrue(PermEval.evalInstance(
200 ":topic.org.onap.sample_test.crm.pre*",
201 ":topic.org.onap.sample_test.crm.predemo100"
205 assertTrue(PermEval.evalInstance(
206 ":!topic.org.onap.sample_test.crm.pre.*",
207 ":topic.org.onap.sample_test.crm.predemo100"
211 @SuppressWarnings("unused")
212 PermEval pe = new PermEval();
216 public void pathTest() {
217 assertTrue(PermEval.evalInstance("/","/"));
218 assertFalse(PermEval.evalInstance("/","/hello"));
219 assertTrue(PermEval.evalInstance("/","/"));
220 assertTrue(PermEval.evalInstance("/onap/so/infra/*/*/*","/onap/so/infra/a/b/c"));
221 assertFalse(PermEval.evalInstance("/onap/so/infra/*","/onap/so/infra"));
222 assertTrue(PermEval.evalInstance("/onap/so/infra/*","/onap/so/infra/a/b/c"));
223 assertTrue(PermEval.evalInstance("/onap/so/infra*","/onap/so/infra"));
224 assertFalse(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra"));
225 assertFalse(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra23"));
226 assertTrue(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra23/hello"));
227 assertFalse(PermEval.evalInstance("/onap/so/*/hello","/onap/so/infra23"));
228 assertFalse(PermEval.evalInstance("/onap/so/*/","/onap/so/infra23"));
229 assertTrue(PermEval.evalInstance("/onap/so/*/","/onap/so/infra23/"));