|
25 | 25 | import com.google.gson.JsonDeserializer; |
26 | 26 | import com.google.gson.JsonElement; |
27 | 27 | import com.google.gson.JsonParseException; |
28 | | -import org.apache.commons.collections.MapUtils; |
29 | | -import org.apache.commons.lang.StringUtils; |
30 | 28 | import org.apache.ranger.authorization.hadoop.config.RangerPluginConfig; |
31 | 29 | import org.apache.ranger.plugin.policyengine.RangerAccessRequest.ResourceMatchingScope; |
32 | 30 | import org.apache.ranger.plugin.policyengine.RangerResourceACLs.DataMaskResult; |
|
44 | 42 | import java.util.List; |
45 | 43 | import java.util.Map; |
46 | 44 | import java.util.Objects; |
47 | | -import java.util.Set; |
48 | 45 |
|
49 | 46 | import static org.junit.Assert.assertEquals; |
50 | 47 | import static org.junit.Assert.assertTrue; |
@@ -127,164 +124,11 @@ private void runTests(InputStreamReader reader, String testName) { |
127 | 124 |
|
128 | 125 | RangerResourceACLs acls = policyEngine.getResourceACLs(request); |
129 | 126 |
|
130 | | - boolean userACLsMatched = true; |
131 | | - boolean groupACLsMatched = true; |
132 | | - boolean roleACLsMatched = true; |
133 | | - boolean rowFiltersMatched = true; |
134 | | - boolean dataMaskingMatched = true; |
135 | | - |
136 | | - if (MapUtils.isNotEmpty(acls.getUserACLs()) && MapUtils.isNotEmpty(oneTest.userPermissions)) { |
137 | | - assertEquals("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - userACLsMatched", oneTest.userPermissions.size(), acls.getUserACLs().size()); |
138 | | - |
139 | | - for (Map.Entry<String, Map<String, RangerResourceACLs.AccessResult>> entry : |
140 | | - acls.getUserACLs().entrySet()) { |
141 | | - String userName = entry.getKey(); |
142 | | - Map<String, RangerResourceACLs.AccessResult> expected = oneTest.userPermissions.get(userName); |
143 | | - if (MapUtils.isNotEmpty(entry.getValue()) && MapUtils.isNotEmpty(expected)) { |
144 | | - // Compare |
145 | | - for (Map.Entry<String, RangerResourceACLs.AccessResult> privilege : entry.getValue().entrySet()) { |
146 | | - if (StringUtils.equals(RangerPolicyEngine.ADMIN_ACCESS, privilege.getKey())) { |
147 | | - continue; |
148 | | - } |
149 | | - RangerResourceACLs.AccessResult expectedResult = expected.get(privilege.getKey()); |
150 | | - if (expectedResult == null) { |
151 | | - userACLsMatched = false; |
152 | | - break; |
153 | | - } else if (!expectedResult.equals(privilege.getValue())) { |
154 | | - userACLsMatched = false; |
155 | | - break; |
156 | | - } |
157 | | - } |
158 | | - } else if (!(MapUtils.isEmpty(entry.getValue()) && MapUtils.isEmpty(expected))) { |
159 | | - Set<String> privileges = entry.getValue().keySet(); |
160 | | - |
161 | | - userACLsMatched = privileges.size() == 1 && privileges.contains(RangerPolicyEngine.ADMIN_ACCESS); |
162 | | - |
163 | | - break; |
164 | | - } |
165 | | - |
166 | | - if (!userACLsMatched) { |
167 | | - break; |
168 | | - } |
169 | | - } |
170 | | - } else if (!(MapUtils.isEmpty(acls.getUserACLs()) && MapUtils.isEmpty(oneTest.userPermissions))) { |
171 | | - userACLsMatched = false; |
172 | | - } |
173 | | - |
174 | | - if (acls.getDataMasks().isEmpty()) { |
175 | | - dataMaskingMatched = (oneTest.dataMasks == null || oneTest.dataMasks.isEmpty()); |
176 | | - } else if (acls.getDataMasks().size() != (oneTest.dataMasks == null ? 0 : oneTest.dataMasks.size())) { |
177 | | - dataMaskingMatched = false; |
178 | | - } else { |
179 | | - for (int i = 0; i < acls.getDataMasks().size(); i++) { |
180 | | - DataMaskResult found = acls.getDataMasks().get(i); |
181 | | - DataMaskResult expected = oneTest.dataMasks.get(i); |
182 | | - |
183 | | - dataMaskingMatched = found.equals(expected); |
184 | | - |
185 | | - if (!dataMaskingMatched) { |
186 | | - break; |
187 | | - } |
188 | | - } |
189 | | - } |
190 | | - |
191 | | - if (acls.getRowFilters().isEmpty()) { |
192 | | - rowFiltersMatched = (oneTest.rowFilters == null || oneTest.rowFilters.isEmpty()); |
193 | | - } else if (acls.getRowFilters().size() != (oneTest.rowFilters == null ? 0 : oneTest.rowFilters.size())) { |
194 | | - rowFiltersMatched = false; |
195 | | - } else { |
196 | | - for (int i = 0; i < acls.getRowFilters().size(); i++) { |
197 | | - RowFilterResult found = acls.getRowFilters().get(i); |
198 | | - RowFilterResult expected = oneTest.rowFilters.get(i); |
199 | | - |
200 | | - rowFiltersMatched = found.equals(expected); |
201 | | - |
202 | | - if (!rowFiltersMatched) { |
203 | | - break; |
204 | | - } |
205 | | - } |
206 | | - } |
207 | | - |
208 | | - if (MapUtils.isNotEmpty(acls.getGroupACLs()) && MapUtils.isNotEmpty(oneTest.groupPermissions)) { |
209 | | - assertEquals("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - groupACLsMatched", oneTest.groupPermissions.size(), acls.getGroupACLs().size()); |
210 | | - |
211 | | - for (Map.Entry<String, Map<String, RangerResourceACLs.AccessResult>> entry : |
212 | | - acls.getGroupACLs().entrySet()) { |
213 | | - String groupName = entry.getKey(); |
214 | | - Map<String, RangerResourceACLs.AccessResult> expected = oneTest.groupPermissions.get(groupName); |
215 | | - if (MapUtils.isNotEmpty(entry.getValue()) && MapUtils.isNotEmpty(expected)) { |
216 | | - // Compare |
217 | | - for (Map.Entry<String, RangerResourceACLs.AccessResult> privilege : entry.getValue().entrySet()) { |
218 | | - if (StringUtils.equals(RangerPolicyEngine.ADMIN_ACCESS, privilege.getKey())) { |
219 | | - continue; |
220 | | - } |
221 | | - RangerResourceACLs.AccessResult expectedResult = expected.get(privilege.getKey()); |
222 | | - if (expectedResult == null) { |
223 | | - groupACLsMatched = false; |
224 | | - break; |
225 | | - } else if (!expectedResult.equals(privilege.getValue())) { |
226 | | - groupACLsMatched = false; |
227 | | - break; |
228 | | - } |
229 | | - } |
230 | | - } else if (!(MapUtils.isEmpty(entry.getValue()) && MapUtils.isEmpty(expected))) { |
231 | | - Set<String> privileges = entry.getValue().keySet(); |
232 | | - |
233 | | - groupACLsMatched = privileges.size() == 1 && privileges.contains(RangerPolicyEngine.ADMIN_ACCESS); |
234 | | - |
235 | | - break; |
236 | | - } |
237 | | - |
238 | | - if (!groupACLsMatched) { |
239 | | - break; |
240 | | - } |
241 | | - } |
242 | | - } else if (!(MapUtils.isEmpty(acls.getGroupACLs()) && MapUtils.isEmpty(oneTest.groupPermissions))) { |
243 | | - groupACLsMatched = false; |
244 | | - } |
245 | | - |
246 | | - if (MapUtils.isNotEmpty(acls.getRoleACLs()) && MapUtils.isNotEmpty(oneTest.rolePermissions)) { |
247 | | - assertEquals("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - roleACLsMatched", oneTest.rolePermissions.size(), acls.getRoleACLs().size()); |
248 | | - |
249 | | - for (Map.Entry<String, Map<String, RangerResourceACLs.AccessResult>> entry : |
250 | | - acls.getRoleACLs().entrySet()) { |
251 | | - String roleName = entry.getKey(); |
252 | | - Map<String, RangerResourceACLs.AccessResult> expected = oneTest.rolePermissions.get(roleName); |
253 | | - if (MapUtils.isNotEmpty(entry.getValue()) && MapUtils.isNotEmpty(expected)) { |
254 | | - // Compare |
255 | | - for (Map.Entry<String, RangerResourceACLs.AccessResult> privilege : entry.getValue().entrySet()) { |
256 | | - if (StringUtils.equals(RangerPolicyEngine.ADMIN_ACCESS, privilege.getKey())) { |
257 | | - continue; |
258 | | - } |
259 | | - RangerResourceACLs.AccessResult expectedResult = expected.get(privilege.getKey()); |
260 | | - if (expectedResult == null) { |
261 | | - roleACLsMatched = false; |
262 | | - break; |
263 | | - } else if (!expectedResult.equals(privilege.getValue())) { |
264 | | - roleACLsMatched = false; |
265 | | - break; |
266 | | - } |
267 | | - } |
268 | | - } else if (!(MapUtils.isEmpty(entry.getValue()) && MapUtils.isEmpty(expected))) { |
269 | | - Set<String> privileges = entry.getValue().keySet(); |
270 | | - |
271 | | - roleACLsMatched = privileges.size() == 1 && privileges.contains(RangerPolicyEngine.ADMIN_ACCESS); |
272 | | - |
273 | | - break; |
274 | | - } |
275 | | - if (!roleACLsMatched) { |
276 | | - break; |
277 | | - } |
278 | | - } |
279 | | - } else if (!(MapUtils.isEmpty(acls.getRoleACLs()) && MapUtils.isEmpty(oneTest.rolePermissions))) { |
280 | | - roleACLsMatched = false; |
281 | | - } |
282 | | - |
283 | | - assertTrue("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - userACLsMatched", userACLsMatched); |
284 | | - assertTrue("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - groupACLsMatched", groupACLsMatched); |
285 | | - assertTrue("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - roleACLsMatched", roleACLsMatched); |
286 | | - assertTrue("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - rowFiltersMatched", rowFiltersMatched); |
287 | | - assertTrue("getResourceACLs() failed! " + testCase.name + ":" + oneTest.name + " - dataMaskingMatched", dataMaskingMatched); |
| 127 | + assertEquals(oneTest.name + ": userACLs mismatch", oneTest.userPermissions, acls.getUserACLs()); |
| 128 | + assertEquals(oneTest.name + ": groupACLs mismatch", oneTest.groupPermissions, acls.getGroupACLs()); |
| 129 | + assertEquals(oneTest.name + ": roleACLs mismatch", oneTest.rolePermissions, acls.getRoleACLs()); |
| 130 | + assertEquals(oneTest.name + ": rowFilters mismatch", oneTest.rowFilters, acls.getRowFilters()); |
| 131 | + assertEquals(oneTest.name + ": dataMasks mismatch", oneTest.dataMasks, acls.getDataMasks()); |
288 | 132 | }); |
289 | 133 | } |
290 | 134 | } |
|
0 commit comments