5d2420054b0f233a5b7988dfe51c00881612d919
[aaf/authz.git] / cadi / aaf / src / test / java / org / onap / aaf / cadi / aaf / test / JU_PermEval.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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====================================================
19  *
20  */
21
22 package org.onap.aaf.cadi.aaf.test;
23
24 import static org.junit.Assert.*;
25 import static org.hamcrest.CoreMatchers.*;
26 import org.junit.*;
27
28 import org.onap.aaf.cadi.aaf.PermEval;
29
30 public class JU_PermEval {
31
32     @Test
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));
37     }
38
39     @Test
40     public void instanceEmptyTest() {
41         assertThat(PermEval.evalInstance("", ""), is(false));
42         assertThat(PermEval.evalInstance("", "test"), is(false));
43         assertThat(PermEval.evalInstance("test", ""), is(false));
44     }
45
46     @Test
47     public void instanceAsterixTest() {
48         assertThat(PermEval.evalInstance("*", "*"), is(true));
49         assertTrue(PermEval.evalInstance("*","fred"));
50     }
51
52     @Test
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));
57
58         assertThat(PermEval.evalInstance("test", "!"), is(false));
59         assertThat(PermEval.evalInstance("test", "!mismatch"), is(false));
60         assertThat(PermEval.evalInstance("test,mismatch", "!mismatch"), is(false));
61     }
62
63     @Test
64     public void instanceKeyTest() {
65         // Reject non-keys
66         assertThat(PermEval.evalInstance("fred", ":fred"), is(false));
67
68         // Reject differing number of keys
69         assertThat(PermEval.evalInstance(":fred:barney", ":fred"), is(false));
70         assertThat(PermEval.evalInstance(":fred", ":fred:barney"), is(false));
71
72         // Accept all wildcard keys
73         assertThat(PermEval.evalInstance(":*", ":fred"), is(true));
74
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));
79
80         // Reject non-matching empty keys
81         assertThat(PermEval.evalInstance(":fred", ":"), is(false));
82
83         // Accept matches starting with a wildcard
84         assertThat(PermEval.evalInstance(":!.*ed", ":fred"), is(true));
85
86         // Reject non-matches starting with a wildcard
87         assertThat(PermEval.evalInstance(":!.*arney", ":fred"), is(false));
88
89         // Accept matches ending with a wildcard
90         assertThat(PermEval.evalInstance(":fr*", ":fred"), is(true));
91
92         // Reject non-matches ending with a wildcard
93         assertThat(PermEval.evalInstance(":bar*", ":fred"), is(false));
94
95         // Accept exact keys
96         assertThat(PermEval.evalInstance(":fred", ":fred"), is(true));
97
98         // Reject mismatched keys
99         assertThat(PermEval.evalInstance(":fred", ":barney"), is(false));
100
101         // Check using alt-start character
102         assertThat(PermEval.evalInstance("/fred", "/fred"), is(true));
103         assertThat(PermEval.evalInstance("/barney", "/fred"), is(false));
104     }
105
106     @Test
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));
112
113         assertThat(PermEval.evalInstance("fr*","fred"), is(true));
114         assertThat(PermEval.evalInstance("freddy*","fred"), is(false));
115         assertThat(PermEval.evalInstance("ba*","fred"), is(false));
116     }
117
118     @Test
119     public void actionTest() {
120         // Accept server *
121         assertThat(PermEval.evalAction("*", ""), is(true));
122         assertThat(PermEval.evalAction("*", "literally anything"), is(true));
123
124         // Reject empty actions
125         assertThat(PermEval.evalAction("literally anything", ""), is(false));
126
127         // Accept match as regex
128         assertThat(PermEval.evalAction("action", "!action"), is(true));
129
130         // Reject non-match as regex
131         assertThat(PermEval.evalAction("action", "!nonaction"), is(false));
132
133         // Accept exact match
134         assertThat(PermEval.evalAction("action", "action"), is(true));
135
136         // Reject non-match
137         assertThat(PermEval.evalAction("action", "nonaction"), is(false));
138     }
139
140     @Test
141     public void redundancyTest() {
142         // TRUE
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"));
150
151         // FALSE
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"));
160
161         assertFalse(PermEval.evalInstance(":fred:!x.*",":fred:fred"));
162
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"));
168         // MSO - Xue Gao
169         assertTrue(PermEval.evalInstance(":v1:requests:*",":v1:requests:test0-service"));
170
171
172
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"));
182
183         // FALSE
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"));
192
193         assertFalse(PermEval.evalInstance("/fred/!x.*","/fred/fred"));
194
195         assertTrue(PermEval.evalInstance(":!com.att.*:role:write",":com.att.temp:role:write"));
196
197         // CPFSF-431 Group needed help with Wild Card
198         // They tried
199         assertTrue(PermEval.evalInstance(
200                 ":topic.org.onap.sample_test.crm.pre*",
201                 ":topic.org.onap.sample_test.crm.predemo100"
202                 ));
203
204         // Also can be
205         assertTrue(PermEval.evalInstance(
206                 ":!topic.org.onap.sample_test.crm.pre.*",
207                 ":topic.org.onap.sample_test.crm.predemo100"
208                 ));
209
210         // coverage
211         @SuppressWarnings("unused")
212         PermEval pe = new PermEval();
213     }
214     
215     @Test
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/"));
230     }
231
232
233
234 }