/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.ranger.unixusersync.process; import static org.junit.Assert.*; import org.apache.ranger.unixusersync.config.UserGroupSyncConfig; import org.apache.ranger.usergroupsync.PolicyMgrUserGroupBuilderTest; import org.junit.Test; public class TestFileSourceUserGroupBuilder { private UserGroupSyncConfig config = UserGroupSyncConfig.getInstance(); @Test public void testUpdateSinkFromCsvFile() throws Throwable { config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_PROC, "src/test/resources/usergroups.csv"); FileSourceUserGroupBuilder fileBuilder = new FileSourceUserGroupBuilder(); fileBuilder.init(); PolicyMgrUserGroupBuilderTest sink = new PolicyMgrUserGroupBuilderTest(); sink.init(); fileBuilder.updateSink(sink); assertEquals(4, sink.getTotalUsers()); assertEquals(2, sink.getTotalGroups()); assertTrue(sink.getAllUsers().contains("user1")); assertTrue(sink.getAllUsers().contains("user2")); assertTrue(sink.getAllUsers().contains("user3")); assertTrue(sink.getAllUsers().contains("user4")); assertTrue(sink.getAllGroups().contains("group1")); assertTrue(sink.getAllGroups().contains("group2")); } @Test public void testUpdateSinkFromCsvFileWithCustomDelimiter() throws Throwable { config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_PROC, "src/test/resources/usergroups-other-delim.csv"); config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_DELIMITER, "|"); FileSourceUserGroupBuilder fileBuilder = new FileSourceUserGroupBuilder(); fileBuilder.init(); PolicyMgrUserGroupBuilderTest sink = new PolicyMgrUserGroupBuilderTest(); sink.init(); fileBuilder.updateSink(sink); assertEquals(4, sink.getTotalUsers()); assertEquals(2, sink.getTotalGroups()); assertTrue(sink.getAllUsers().contains("user1")); assertTrue(sink.getAllUsers().contains("user2")); assertTrue(sink.getAllUsers().contains("user3")); assertTrue(sink.getAllUsers().contains("user4")); assertTrue(sink.getAllGroups().contains("group1")); assertTrue(sink.getAllGroups().contains("group2")); } @Test public void testUpdateSinkFromCsvFileMisSpelledDelimiterProperty() throws Throwable { config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_PROC, "src/test/resources/usergroups-other-delim.csv"); config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_DELIMITERER, "|"); FileSourceUserGroupBuilder fileBuilder = new FileSourceUserGroupBuilder(); fileBuilder.init(); PolicyMgrUserGroupBuilderTest sink = new PolicyMgrUserGroupBuilderTest(); sink.init(); fileBuilder.updateSink(sink); assertEquals(4, sink.getTotalUsers()); assertEquals(2, sink.getTotalGroups()); assertTrue(sink.getAllUsers().contains("user1")); assertTrue(sink.getAllUsers().contains("user2")); assertTrue(sink.getAllUsers().contains("user3")); assertTrue(sink.getAllUsers().contains("user4")); assertTrue(sink.getAllGroups().contains("group1")); assertTrue(sink.getAllGroups().contains("group2")); } @Test public void testUpdateSinkFromJsonFile() throws Throwable { config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_PROC, "src/test/resources/usergroups.json"); FileSourceUserGroupBuilder fileBuilder = new FileSourceUserGroupBuilder(); fileBuilder.init(); PolicyMgrUserGroupBuilderTest sink = new PolicyMgrUserGroupBuilderTest(); sink.init(); fileBuilder.updateSink(sink); assertEquals(4, sink.getTotalUsers()); assertEquals(7, sink.getTotalGroups()); assertTrue(sink.getAllUsers().contains("user1")); assertTrue(sink.getAllUsers().contains("user2")); assertTrue(sink.getAllUsers().contains("user3")); assertTrue(sink.getAllUsers().contains("user4")); assertTrue(sink.getAllGroups().contains("group1")); assertTrue(sink.getAllGroups().contains("group2")); assertTrue(sink.getAllGroups().contains("group3")); assertTrue(sink.getAllGroups().contains("group4")); assertTrue(sink.getAllGroups().contains("group5")); assertTrue(sink.getAllGroups().contains("group6")); assertTrue(sink.getAllGroups().contains("group7")); } @Test public void testUpdateSinkWithUserAndGroupMapping() throws Throwable { config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_PROC, "src/test/resources/usergroups-dns.csv"); config.setProperty(UserGroupSyncConfig.UGSYNC_SOURCE_FILE_DELIMITERER, "|"); config.setProperty(UserGroupSyncConfig.SYNC_MAPPING_USERNAME, "s/[=]/_/g"); config.setProperty(UserGroupSyncConfig.SYNC_MAPPING_USERNAME + ".1", "s/[,]//g"); config.setProperty(UserGroupSyncConfig.SYNC_MAPPING_GROUPNAME, "s/[=]//g"); FileSourceUserGroupBuilder fileBuilder = new FileSourceUserGroupBuilder(); fileBuilder.init(); PolicyMgrUserGroupBuilderTest sink = new PolicyMgrUserGroupBuilderTest(); sink.init(); fileBuilder.updateSink(sink); assertEquals(4, sink.getTotalUsers()); assertEquals(2, sink.getTotalGroups()); assertTrue(sink.getAllUsers().contains("CN_User1 OU_Org1 O_Apache L_Santa Monica ST_CA C_US")); assertTrue(sink.getAllUsers().contains("CN_User2 OU_Org1 O_Apache L_Santa Monica ST_CA C_US")); assertTrue(sink.getAllUsers().contains("CN_User3 OU_Org1 O_Apache L_Santa Monica ST_CA C_US")); assertTrue(sink.getAllUsers().contains("CN_User4 OU_Org1 O_Apache L_Santa Monica ST_CA C_US")); assertTrue(sink.getAllGroups().contains("group1")); assertTrue(sink.getAllGroups().contains("group2")); } }