Repository: ambari Updated Branches: refs/heads/trunk 9699b63bc -> 5eb205f78
AMBARI-5993 Unit Testing Improvments : Examine TestPassFileGeneration.testPassFileGen (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5eb205f7 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5eb205f7 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5eb205f7 Branch: refs/heads/trunk Commit: 5eb205f7892ae18eceacd4c306bde15c49c9c7d0 Parents: 9699b63 Author: Dmitry Sen <[email protected]> Authored: Tue Jun 3 12:10:02 2014 +0300 Committer: Dmitry Sen <[email protected]> Committed: Tue Jun 3 12:10:02 2014 +0300 ---------------------------------------------------------------------- .../server/security/CertGenerationTest.java | 78 +++++++---- .../server/security/TestPassFileGeneration.java | 137 ------------------- 2 files changed, 55 insertions(+), 160 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/5eb205f7/ambari-server/src/test/java/org/apache/ambari/server/security/CertGenerationTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/CertGenerationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/CertGenerationTest.java index 45ced24..7a65c81 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/security/CertGenerationTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/security/CertGenerationTest.java @@ -22,15 +22,17 @@ import java.io.*; import java.lang.reflect.Constructor; import java.util.Map; import java.util.Properties; +import java.util.Random; import com.google.common.io.Files; import org.apache.ambari.server.configuration.Configuration; +import org.apache.ambari.server.utils.ShellCommandUtil; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.*; import org.junit.rules.TemporaryFolder; import com.google.inject.AbstractModule; @@ -40,14 +42,19 @@ import com.google.inject.Injector; import junit.framework.TestCase; -public class CertGenerationTest extends TestCase { - +public class CertGenerationTest { + + private static final int PASS_FILE_NAME_LEN = 20; + private static final float MAX_PASS_LEN = 100; + private static Log LOG = LogFactory.getLog(CertGenerationTest.class); - public TemporaryFolder temp = new TemporaryFolder(); + public static TemporaryFolder temp = new TemporaryFolder(); - Injector injector; + private static Injector injector; private static CertificateManager certMan; + private static String passFileName; + private static int passLen; @Inject static void init(CertificateManager instance) { @@ -55,7 +62,7 @@ public class CertGenerationTest extends TestCase { } - private class SecurityModule extends AbstractModule { + private static class SecurityModule extends AbstractModule { @Override protected void configure() { bind(Properties.class).toInstance(buildTestProperties()); @@ -64,7 +71,7 @@ public class CertGenerationTest extends TestCase { } } - protected Properties buildTestProperties() { + protected static Properties buildTestProperties() { try { temp.create(); } catch (IOException e) { @@ -73,12 +80,18 @@ public class CertGenerationTest extends TestCase { Properties properties = new Properties(); properties.setProperty(Configuration.SRVR_KSTR_DIR_KEY, temp.getRoot().getAbsolutePath()); - System.out.println(properties.get(Configuration.SRVR_CRT_PASS_KEY)); + passLen = (int) Math.abs((new Random().nextFloat() * MAX_PASS_LEN)); + + properties.setProperty(Configuration.SRVR_CRT_PASS_LEN_KEY, + String.valueOf(passLen)); + + passFileName = RandomStringUtils.randomAlphabetic(PASS_FILE_NAME_LEN); + properties.setProperty(Configuration.SRVR_CRT_PASS_FILE_KEY, passFileName); return properties; } - protected Constructor<Configuration> getConfigurationConstructor() { + protected static Constructor<Configuration> getConfigurationConstructor() { try { return Configuration.class.getConstructor(Properties.class); } catch (NoSuchMethodException e) { @@ -86,8 +99,8 @@ public class CertGenerationTest extends TestCase { } } - @Before - public void setUp() throws IOException { + @BeforeClass + public static void setUpBeforeClass() throws IOException { injector = Guice.createInjector(new SecurityModule()); @@ -108,14 +121,14 @@ public class CertGenerationTest extends TestCase { IOUtils.write(content, new FileOutputStream(caConfigTest)); } catch (IOException e) { e.printStackTrace(); - fail(); + TestCase.fail(); } certMan.initRootCert(); } - - @After - public void tearDown() throws IOException { + + @AfterClass + public static void tearDownAfterClass() throws IOException { temp.delete(); } @@ -124,7 +137,7 @@ public class CertGenerationTest extends TestCase { File serverCrt = new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.SRVR_CRT_NAME_DEFAULT); - assertTrue(serverCrt.exists()); + Assert.assertTrue(serverCrt.exists()); } @Test @@ -132,7 +145,7 @@ public class CertGenerationTest extends TestCase { File serverKey = new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.SRVR_KEY_NAME_DEFAULT); - assertTrue(serverKey.exists()); + Assert.assertTrue(serverKey.exists()); } @Test @@ -140,7 +153,7 @@ public class CertGenerationTest extends TestCase { File serverKeyStrore = new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.KSTR_NAME_DEFAULT); - assertTrue(serverKeyStrore.exists()); + Assert.assertTrue(serverKeyStrore.exists()); } @Test @@ -153,17 +166,36 @@ public class CertGenerationTest extends TestCase { SignCertResponse scr = certMan.signAgentCrt(agentHostname, "incorrect_agentCrtReqContent", "passphrase"); //Revoke command wasn't executed - assertFalse(scr.getMessage().contains("-revoke")); + Assert.assertFalse(scr.getMessage().contains("-revoke")); //Emulate existing agent certificate File fakeAgentCertFile = new File(temp.getRoot().getAbsoluteFile() + File.separator + agentHostname + ".crt"); - assertTrue(fakeAgentCertFile.exists()); + Assert.assertTrue(fakeAgentCertFile.exists()); //Revoke command was executed scr = certMan.signAgentCrt(agentHostname, "incorrect_agentCrtReqContent", "passphrase"); - assertTrue(scr.getMessage().contains("-revoke")); + Assert.assertTrue(scr.getMessage().contains("-revoke")); } + @Test + public void testPassFileGen() throws Exception { + + File passFile = new File(temp.getRoot().getAbsolutePath() + File.separator + + passFileName); + + Assert.assertTrue(passFile.exists()); + + String pass = FileUtils.readFileToString(passFile); + + Assert.assertEquals(pass.length(), passLen); + + if (ShellCommandUtil.LINUX) { + String permissions = ShellCommandUtil. + getUnixFilePermissions(passFile.getAbsolutePath()); + Assert.assertEquals(ShellCommandUtil.MASK_OWNER_ONLY_RW, permissions); + } + + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/5eb205f7/ambari-server/src/test/java/org/apache/ambari/server/security/TestPassFileGeneration.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/TestPassFileGeneration.java b/ambari-server/src/test/java/org/apache/ambari/server/security/TestPassFileGeneration.java deleted file mode 100644 index dc35e5d..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/security/TestPassFileGeneration.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * 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.ambari.server.security; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.util.Properties; -import java.util.Random; - -import org.apache.ambari.server.configuration.Configuration; -import org.apache.ambari.server.utils.ShellCommandUtil; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.RandomStringUtils; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; - -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Inject; -import com.google.inject.Injector; - -import junit.framework.TestCase; - -public class TestPassFileGeneration extends TestCase { - - private static final int PASS_FILE_NAME_LEN = 20; - private static final float MAX_PASS_LEN = 100; - - public TemporaryFolder temp = new TemporaryFolder(); - - Injector injector; - - private static CertificateManager certMan; - private String passFileName; - private int passLen; - - @Inject - static void init(CertificateManager instance) { - certMan = instance; - } - - private class SecurityModule extends AbstractModule { - @Override - protected void configure() { - bind(Properties.class).toInstance(buildTestProperties()); - bind(Configuration.class).toConstructor(getConfigurationConstructor()); - requestStaticInjection(CertGenerationTest.class); - } - } - - protected Properties buildTestProperties() { - try { - temp.create(); - } catch (IOException e) { - e.printStackTrace(); - } - Properties properties = new Properties(); - properties.setProperty(Configuration.SRVR_KSTR_DIR_KEY, temp.getRoot() - .getAbsolutePath()); - - passLen = (int) Math.abs((new Random().nextFloat() * MAX_PASS_LEN)); - - properties.setProperty(Configuration.SRVR_CRT_PASS_LEN_KEY, - String.valueOf(passLen)); - - passFileName = RandomStringUtils.randomAlphabetic(PASS_FILE_NAME_LEN); - properties.setProperty(Configuration.SRVR_CRT_PASS_FILE_KEY, passFileName); - - return properties; - } - - protected Constructor<Configuration> getConfigurationConstructor() { - try { - return Configuration.class.getConstructor(Properties.class); - } catch (NoSuchMethodException e) { - throw new RuntimeException( - "Expected constructor not found in Configuration.java", e); - } - } - - @Before - public void setUp() throws IOException { - - injector = Guice.createInjector(new SecurityModule()); - certMan = injector.getInstance(CertificateManager.class); - - certMan.initRootCert(); - } - - @After - public void tearDown() throws IOException { - temp.delete(); - } - - @Test - public void testPassFileGen() throws Exception { - - File passFile = new File(temp.getRoot().getAbsolutePath() + File.separator - + passFileName); - - assertTrue(passFile.exists()); - - String pass = FileUtils.readFileToString(passFile); - - assertEquals(pass.length(), passLen); - - if (ShellCommandUtil.LINUX) { - String permissions = ShellCommandUtil. - getUnixFilePermissions(passFile.getAbsolutePath()); - assertEquals(ShellCommandUtil.MASK_OWNER_ONLY_RW, permissions); - } else { - //Do nothing - } - // Cleanup - passFile.delete(); - } - -}
