9433cef1833ad538aeb212206b12251105d5c364
[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
78                 // Reject non-matching empty keys
79                 assertThat(PermEval.evalInstance(":fred", ":"), is(false));
80
81                 // Accept matches starting with a wildcard
82                 assertThat(PermEval.evalInstance(":!.*ed", ":fred"), is(true));
83
84                 // Reject non-matches starting with a wildcard
85                 assertThat(PermEval.evalInstance(":!.*arney", ":fred"), is(false));
86
87                 // Accept matches ending with a wildcard
88                 assertThat(PermEval.evalInstance(":fr*", ":fred"), is(true));
89
90                 // Reject non-matches ending with a wildcard
91                 assertThat(PermEval.evalInstance(":bar*", ":fred"), is(false));
92
93                 // Accept exact keys
94                 assertThat(PermEval.evalInstance(":fred", ":fred"), is(true));
95
96                 // Reject mismatched keys
97                 assertThat(PermEval.evalInstance(":fred", ":barney"), is(false));
98
99                 // Check using alt-start character
100                 assertThat(PermEval.evalInstance("/fred", "/fred"), is(true));
101                 assertThat(PermEval.evalInstance("/barney", "/fred"), is(false));
102         }
103
104         @Test
105         public void instanceDirectTest() {
106                 assertThat(PermEval.evalInstance("fred","fred"), is(true));
107                 assertThat(PermEval.evalInstance("fred,wilma","fred"), is(true));
108                 assertThat(PermEval.evalInstance("barney,betty,fred,wilma","fred"), is(true));
109                 assertThat(PermEval.evalInstance("barney,betty,wilma","fred"), is(false));
110
111                 assertThat(PermEval.evalInstance("fr*","fred"), is(true));
112                 assertThat(PermEval.evalInstance("freddy*","fred"), is(false));
113                 assertThat(PermEval.evalInstance("ba*","fred"), is(false));
114         }
115
116         @Test
117         public void actionTest() {
118                 // Accept server *
119                 assertThat(PermEval.evalAction("*", ""), is(true));
120                 assertThat(PermEval.evalAction("*", "literally anything"), is(true));
121
122                 // Reject empty actions
123                 assertThat(PermEval.evalAction("literally anything", ""), is(false));
124
125                 // Accept match as regex
126                 assertThat(PermEval.evalAction("action", "!action"), is(true));
127
128                 // Reject non-match as regex
129                 assertThat(PermEval.evalAction("action", "!nonaction"), is(false));
130
131                 // Accept exact match
132                 assertThat(PermEval.evalAction("action", "action"), is(true));
133
134                 // Reject non-match
135                 assertThat(PermEval.evalAction("action", "nonaction"), is(false));
136         }
137
138         @Test
139         public void redundancyTest() {
140                 // TRUE
141                 assertTrue(PermEval.evalInstance(":fred:fred",":fred:fred"));
142                 assertTrue(PermEval.evalInstance(":fred:fred,wilma",":fred:fred"));
143                 assertTrue(PermEval.evalInstance(":fred:barney,betty,fred,wilma",":fred:fred"));
144                 assertTrue(PermEval.evalInstance(":*:fred",":fred:fred"));
145                 assertTrue(PermEval.evalInstance(":fred:*",":fred:fred"));
146                 assertTrue(PermEval.evalInstance(":!f.*:fred",":fred:fred"));
147                 assertTrue(PermEval.evalInstance(":fred:!f.*",":fred:fred"));
148
149                 // FALSE
150                 assertFalse(PermEval.evalInstance("fred","wilma"));
151                 assertFalse(PermEval.evalInstance("fred,barney,betty","wilma"));
152                 assertFalse(PermEval.evalInstance(":fred:fred",":fred:wilma"));
153                 assertFalse(PermEval.evalInstance(":fred:fred",":wilma:fred"));
154                 assertFalse(PermEval.evalInstance(":wilma:!f.*",":fred:fred"));
155                 assertFalse(PermEval.evalInstance(":!f.*:wilma",":fred:fred"));
156                 assertFalse(PermEval.evalInstance(":!w.*:!f.*",":fred:fred"));
157                 assertFalse(PermEval.evalInstance(":!f.*:!w.*",":fred:fred"));
158
159                 assertFalse(PermEval.evalInstance(":fred:!x.*",":fred:fred"));
160
161                 // MSO Tests 12/3/2015
162                 assertFalse(PermEval.evalInstance("/v1/services/features/*","/v1/services/features"));
163                 assertFalse(PermEval.evalInstance(":v1:services:features:*",":v1:services:features"));
164                 assertTrue(PermEval.evalInstance("/v1/services/features/*","/v1/services/features/api1"));
165                 assertTrue(PermEval.evalInstance(":v1:services:features:*",":v1:services:features:api2"));
166                 // MSO - Xue Gao
167                 assertTrue(PermEval.evalInstance(":v1:requests:*",":v1:requests:test0-service"));
168
169
170
171                 // Same tests, with Slashes
172                 assertTrue(PermEval.evalInstance("/fred/fred","/fred/fred"));
173                 assertTrue(PermEval.evalInstance("/fred/fred,wilma","/fred/fred"));
174                 assertTrue(PermEval.evalInstance("/fred/barney,betty,fred,wilma","/fred/fred"));
175                 assertTrue(PermEval.evalInstance("*","fred"));
176                 assertTrue(PermEval.evalInstance("/*/fred","/fred/fred"));
177                 assertTrue(PermEval.evalInstance("/fred/*","/fred/fred"));
178                 assertTrue(PermEval.evalInstance("/!f.*/fred","/fred/fred"));
179                 assertTrue(PermEval.evalInstance("/fred/!f.*","/fred/fred"));
180
181                 // FALSE
182                 assertFalse(PermEval.evalInstance("fred","wilma"));
183                 assertFalse(PermEval.evalInstance("fred,barney,betty","wilma"));
184                 assertFalse(PermEval.evalInstance("/fred/fred","/fred/wilma"));
185                 assertFalse(PermEval.evalInstance("/fred/fred","/wilma/fred"));
186                 assertFalse(PermEval.evalInstance("/wilma/!f.*","/fred/fred"));
187                 assertFalse(PermEval.evalInstance("/!f.*/wilma","/fred/fred"));
188                 assertFalse(PermEval.evalInstance("/!w.*/!f.*","/fred/fred"));
189                 assertFalse(PermEval.evalInstance("/!f.*/!w.*","/fred/fred"));
190
191                 assertFalse(PermEval.evalInstance("/fred/!x.*","/fred/fred"));
192
193                 assertTrue(PermEval.evalInstance(":!com.att.*:role:write",":com.att.temp:role:write"));
194
195                 // CPFSF-431 Group needed help with Wild Card
196                 // They tried
197                 assertTrue(PermEval.evalInstance(
198                                 ":topic.com.att.ecomp_test.crm.pre*",
199                                 ":topic.com.att.ecomp_test.crm.predemo100"
200                                 ));
201
202                 // Also can be
203                 assertTrue(PermEval.evalInstance(
204                                 ":!topic.com.att.ecomp_test.crm.pre.*",
205                                 ":topic.com.att.ecomp_test.crm.predemo100"
206                                 ));
207
208                 // coverage
209                 @SuppressWarnings("unused")
210                 PermEval pe = new PermEval();
211         }
212
213 }