/****************************************************************************** * Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. * Licensed 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 com.vmware.bdd.usermgmt; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.util.FileCopyUtils; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.vmware.bdd.apitypes.UserMgmtServer; /** * Created By xiaoliangl on 12/31/14. */ public class TestSssdConfigurationGenerator { private SssdConfigurationGenerator sssdConfigurationGenerator; @BeforeClass public void setup() throws IOException { setupSssdTemplates(); sssdConfigurationGenerator = new SssdConfigurationGenerator(); } public static void setupSssdTemplates() throws IOException { String tmpDirPath = System.getProperty("java.io.tmpdir"); if(StringUtils.isNotBlank(System.getProperty("serengeti.home.dir"))) { System.setProperty("serengeti.home.dir.bak", System.getProperty("serengeti.home.dir")); } System.setProperty("serengeti.home.dir", tmpDirPath); File usermgmrConfDir = new File(System.getProperty("serengeti.home.dir") + File.separator + "conf" + File.separator + "usermgmt"); usermgmrConfDir.mkdirs(); usermgmrConfDir.deleteOnExit(); File tmpFile = new File(usermgmrConfDir, SssdConfigurationGenerator.SSSD_CONF_TEMPLATES + "LDAP"); tmpFile.createNewFile(); tmpFile.deleteOnExit(); FileCopyUtils.copy(readResource(SssdConfigurationGenerator.SSSD_CONF_TEMPLATES + "LDAP"), new FileWriter(tmpFile)); tmpFile = new File(usermgmrConfDir, SssdConfigurationGenerator.SSSD_CONF_TEMPLATES + "AD_AS_LDAP"); tmpFile.createNewFile(); tmpFile.deleteOnExit(); FileCopyUtils.copy(readResource(SssdConfigurationGenerator.SSSD_CONF_TEMPLATES + "AD_AS_LDAP"), new FileWriter(tmpFile)); } @AfterClass public void teardown() { teardownSssdTemplates(); } public static void teardownSssdTemplates() { if(StringUtils.isNotBlank(System.getProperty("serengeti.home.dir.bak"))) { System.setProperty("serengeti.home.dir", System.getProperty("serengeti.home.dir.bak")); } System.out.println(System.getProperty("serengeti.home.dir")); } public static String readResource(String fileName) throws IOException { InputStream templateResStream = TestSssdConfigurationGenerator.class.getResourceAsStream("/com/vmware/bdd/usermgmt/" + fileName); StringBuilder stringBuilder = new StringBuilder(); try (BufferedReader templateBufReader = new BufferedReader(new InputStreamReader(templateResStream))) { String line = templateBufReader.readLine(); while (line != null) { stringBuilder.append(line).append('\n'); line = templateBufReader.readLine(); } } finally { try { templateResStream.close(); } catch (IOException e) { //nothing to do } } return stringBuilder.toString(); } @Test public void testGenerate() throws IOException { UserMgmtServer userMgmtServer = TestUserMgmtServerValidService_Ldap.loadTestData("ldap-server.json"); String actual = sssdConfigurationGenerator.getConfigurationContent(userMgmtServer, new String[]{"ldap-users"}); System.out.println(actual); Assert.assertEquals(actual, readResource("sssd.conf.ldap137")); Assert.assertTrue(MapUtils.isNotEmpty(sssdConfigurationGenerator.get(UserMgmtServer.Type.LDAP))); Assert.assertTrue(MapUtils.isNotEmpty(sssdConfigurationGenerator.get(UserMgmtServer.Type.AD_AS_LDAP))); } @Test public void testGenerate1() throws IOException { UserMgmtServer userMgmtServer = TestUserMgmtServerValidService_Ldap.loadTestData("ad-server.json"); String actual = sssdConfigurationGenerator.getConfigurationContent(userMgmtServer, new String[]{"Administrators", "Users"}); System.out.println(actual); Assert.assertEquals(actual, readResource("sssd.conf.ldaps181")); } }