This is an automated email from the ASF dual-hosted git repository. mattyb149 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/master by this push: new a9d1dd7 NIFI-6337 Resolved groovy unit test execution problems in nifi-properties-loader and fixed failing unit tests. a9d1dd7 is described below commit a9d1dd7b08f7d7a9ab7056393e042dc984e817ba Author: Andy LoPresto <alopre...@apache.org> AuthorDate: Thu May 30 17:46:12 2019 -0700 NIFI-6337 Resolved groovy unit test execution problems in nifi-properties-loader and fixed failing unit tests. Signed-off-by: Matthew Burgess <mattyb...@apache.org> This closes #3508 --- .../nifi-framework/nifi-properties-loader/pom.xml | 27 ++++++++++++- .../AESSensitivePropertyProviderTest.groovy | 10 ++--- .../NiFiPropertiesLoaderGroovyTest.groovy | 44 +++++++++++----------- .../unreadable_bootstrap/bootstrap.conf | 0 ...nsitive_properties_protected_aes_128.properties | 2 +- 5 files changed, 54 insertions(+), 29 deletions(-) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/pom.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/pom.xml index 8b4b970..6b10e61 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/pom.xml +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/pom.xml @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -47,4 +48,28 @@ <artifactId>commons-lang3</artifactId> </dependency> </dependencies> + <build> + <!-- Required to run Groovy tests without any Java tests --> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>add-test-source</id> + <phase>generate-test-sources</phase> + <goals> + <goal>add-test-source</goal> + </goals> + <configuration> + <sources> + <source>src/test/groovy</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> \ No newline at end of file diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/AESSensitivePropertyProviderTest.groovy b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/AESSensitivePropertyProviderTest.groovy index 73ae55a..56a702a 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/AESSensitivePropertyProviderTest.groovy +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/AESSensitivePropertyProviderTest.groovy @@ -17,7 +17,6 @@ package org.apache.nifi.properties import org.bouncycastle.jce.provider.BouncyCastleProvider -import org.bouncycastle.util.encoders.DecoderException import org.bouncycastle.util.encoders.Hex import org.junit.After import org.junit.Assume @@ -302,9 +301,10 @@ class AESSensitivePropertyProviderTest extends GroovyTestCase { SensitivePropertyProvider spp = new AESSensitivePropertyProvider(Hex.decode(getKeyOfSize(keySize))) logger.info("Initialized ${spp.name} with key size ${keySize}") String cipherText = spp.protect(PLAINTEXT) + // Remove the IV from the "complete" cipher text final String MISSING_IV_CIPHER_TEXT = cipherText[18..-1] - logger.info("Manipulated ${cipherText} to\n${MISSING_IV_CIPHER_TEXT.padLeft(163)}") + logger.info("Manipulated ${cipherText} to\n${MISSING_IV_CIPHER_TEXT.padLeft(172)}") def msg = shouldFail(IllegalArgumentException) { spp.unprotect(MISSING_IV_CIPHER_TEXT) @@ -313,9 +313,9 @@ class AESSensitivePropertyProviderTest extends GroovyTestCase { // Remove the IV from the "complete" cipher text but keep the delimiter final String MISSING_IV_CIPHER_TEXT_WITH_DELIMITER = cipherText[16..-1] - logger.info("Manipulated ${cipherText} to\n${MISSING_IV_CIPHER_TEXT_WITH_DELIMITER.padLeft(163)}") + logger.info("Manipulated ${cipherText} to\n${MISSING_IV_CIPHER_TEXT_WITH_DELIMITER.padLeft(172)}") - def msgWithDelimiter = shouldFail(DecoderException) { + def msgWithDelimiter = shouldFail(IllegalArgumentException) { spp.unprotect(MISSING_IV_CIPHER_TEXT_WITH_DELIMITER) } logger.expected("${msgWithDelimiter} for keySize ${keySize} and cipher text [${MISSING_IV_CIPHER_TEXT_WITH_DELIMITER}]") @@ -324,7 +324,7 @@ class AESSensitivePropertyProviderTest extends GroovyTestCase { assert msg == "The cipher text does not contain the delimiter || -- it should be of the form Base64(IV) || Base64(cipherText)" // Assert - assert msgWithDelimiter =~ "unable to decode base64 string" + assert msgWithDelimiter == "The IV (0 bytes) must be at least 12 bytes" } } diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/NiFiPropertiesLoaderGroovyTest.groovy b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/NiFiPropertiesLoaderGroovyTest.groovy index 980f86f..53f4070 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/NiFiPropertiesLoaderGroovyTest.groovy +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/groovy/org/apache/nifi/properties/NiFiPropertiesLoaderGroovyTest.groovy @@ -67,7 +67,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @BeforeClass - public static void setUpOnce() throws Exception { + static void setUpOnce() throws Exception { Security.addProvider(new BouncyCastleProvider()) logger.metaClass.methodMissing = { String name, args -> @@ -76,11 +76,11 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Before - public void setUp() throws Exception { + void setUp() throws Exception { } @After - public void tearDown() throws Exception { + void tearDown() throws Exception { // Clear the sensitive property providers between runs // if (ProtectedNiFiProperties.@localProviderCache) { // ProtectedNiFiProperties.@localProviderCache = [:] @@ -89,14 +89,14 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @AfterClass - public static void tearDownOnce() { + static void tearDownOnce() { if (originalPropertiesPath) { System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, originalPropertiesPath) } } @Test - public void testConstructorShouldCreateNewInstance() throws Exception { + void testConstructorShouldCreateNewInstance() throws Exception { // Arrange // Act @@ -108,7 +108,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldCreateInstanceWithKey() throws Exception { + void testShouldCreateInstanceWithKey() throws Exception { // Arrange // Act @@ -120,7 +120,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldGetDefaultProviderKey() throws Exception { + void testShouldGetDefaultProviderKey() throws Exception { // Arrange final String EXPECTED_PROVIDER_KEY = "aes/gcm/${Cipher.getMaxAllowedKeyLength("AES") > 128 ? 256 : 128}" logger.info("Expected provider key: ${EXPECTED_PROVIDER_KEY}") @@ -133,7 +133,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldInitializeSensitivePropertyProviderFactory() throws Exception { + void testShouldInitializeSensitivePropertyProviderFactory() throws Exception { // Arrange NiFiPropertiesLoader niFiPropertiesLoader = new NiFiPropertiesLoader() @@ -145,7 +145,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldLoadUnprotectedPropertiesFromFile() throws Exception { + void testShouldLoadUnprotectedPropertiesFromFile() throws Exception { // Arrange File unprotectedFile = new File("src/test/resources/conf/nifi.properties") NiFiPropertiesLoader niFiPropertiesLoader = new NiFiPropertiesLoader() @@ -161,7 +161,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotLoadUnprotectedPropertiesFromNullFile() throws Exception { + void testShouldNotLoadUnprotectedPropertiesFromNullFile() throws Exception { // Arrange NiFiPropertiesLoader niFiPropertiesLoader = new NiFiPropertiesLoader() @@ -176,7 +176,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotLoadUnprotectedPropertiesFromMissingFile() throws Exception { + void testShouldNotLoadUnprotectedPropertiesFromMissingFile() throws Exception { // Arrange File missingFile = new File("src/test/resources/conf/nifi_missing.properties") assert !missingFile.exists() @@ -194,7 +194,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotLoadUnprotectedPropertiesFromUnreadableFile() throws Exception { + void testShouldNotLoadUnprotectedPropertiesFromUnreadableFile() throws Exception { // Arrange File unreadableFile = new File("src/test/resources/conf/nifi_no_permissions.properties") Files.setPosixFilePermissions(unreadableFile.toPath(), [] as Set) @@ -216,7 +216,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldLoadUnprotectedPropertiesFromPath() throws Exception { + void testShouldLoadUnprotectedPropertiesFromPath() throws Exception { // Arrange File unprotectedFile = new File("src/test/resources/conf/nifi.properties") NiFiPropertiesLoader niFiPropertiesLoader = new NiFiPropertiesLoader() @@ -232,7 +232,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldLoadUnprotectedPropertiesFromProtectedFile() throws Exception { + void testShouldLoadUnprotectedPropertiesFromProtectedFile() throws Exception { // Arrange File protectedFile = new File("src/test/resources/conf/nifi_with_sensitive_properties_protected_aes.properties") NiFiPropertiesLoader niFiPropertiesLoader = NiFiPropertiesLoader.withKey(KEY_HEX) @@ -272,7 +272,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldExtractKeyFromBootstrapFile() throws Exception { + void testShouldExtractKeyFromBootstrapFile() throws Exception { // Arrange def defaultNiFiPropertiesFilePath = "src/test/resources/bootstrap_tests/conf/nifi.properties" System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, defaultNiFiPropertiesFilePath) @@ -285,7 +285,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotExtractKeyFromBootstrapFileWithoutKeyLine() throws Exception { + void testShouldNotExtractKeyFromBootstrapFileWithoutKeyLine() throws Exception { // Arrange def defaultNiFiPropertiesFilePath = "src/test/resources/bootstrap_tests/missing_key_line/nifi.properties" System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, defaultNiFiPropertiesFilePath) @@ -298,7 +298,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotExtractKeyFromBootstrapFileWithoutKey() throws Exception { + void testShouldNotExtractKeyFromBootstrapFileWithoutKey() throws Exception { // Arrange def defaultNiFiPropertiesFilePath = "src/test/resources/bootstrap_tests/missing_key_line/nifi.properties" System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, defaultNiFiPropertiesFilePath) @@ -311,7 +311,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotExtractKeyFromMissingBootstrapFile() throws Exception { + void testShouldNotExtractKeyFromMissingBootstrapFile() throws Exception { // Arrange def defaultNiFiPropertiesFilePath = "src/test/resources/bootstrap_tests/missing_bootstrap/nifi.properties" System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, defaultNiFiPropertiesFilePath) @@ -327,7 +327,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldNotExtractKeyFromUnreadableBootstrapFile() throws Exception { + void testShouldNotExtractKeyFromUnreadableBootstrapFile() throws Exception { // Arrange File unreadableFile = new File("src/test/resources/bootstrap_tests/unreadable_bootstrap/bootstrap.conf") Set<PosixFilePermission> originalPermissions = Files.getPosixFilePermissions(unreadableFile.toPath()) @@ -352,7 +352,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { @Ignore("Unreadable conf directory breaks build") @Test - public void testShouldNotExtractKeyFromUnreadableConfDir() throws Exception { + void testShouldNotExtractKeyFromUnreadableConfDir() throws Exception { // Arrange File unreadableDir = new File("src/test/resources/bootstrap_tests/unreadable_conf") Set<PosixFilePermission> originalPermissions = Files.getPosixFilePermissions(unreadableDir.toPath()) @@ -376,7 +376,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldLoadUnprotectedPropertiesFromProtectedDefaultFileAndUseBootstrapKey() throws Exception { + void testShouldLoadUnprotectedPropertiesFromProtectedDefaultFileAndUseBootstrapKey() throws Exception { // Arrange File protectedFile = new File("src/test/resources/bootstrap_tests/conf/nifi_with_sensitive_properties_protected_aes.properties") System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, protectedFile.path) @@ -402,7 +402,7 @@ class NiFiPropertiesLoaderGroovyTest extends GroovyTestCase { } @Test - public void testShouldUpdateKeyInFactory() throws Exception { + void testShouldUpdateKeyInFactory() throws Exception { // Arrange File originalKeyFile = new File("src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128.properties") File passwordKeyFile = new File("src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128_password.properties") diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/bootstrap_tests/unreadable_bootstrap/bootstrap.conf b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/bootstrap_tests/unreadable_bootstrap/bootstrap.conf old mode 100755 new mode 100644 diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128.properties b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128.properties index 25e8ce2..6d1e541 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128.properties +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-properties-loader/src/test/resources/conf/nifi_with_sensitive_properties_protected_aes_128.properties @@ -74,7 +74,7 @@ nifi.sensitive.props.key=6WUpex+VZiN05LXu||joWJMuoSzYniEC7IAoingTimlG7+RGk8I2irl nifi.sensitive.props.key.protected=aes/gcm/128 nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL nifi.sensitive.props.provider=BC -nifi.sensitive.props.additional.keys=nifi.ui.banner.text +nifi.sensitive.props.additional.keys=nifi.ui.banner.text, nifi.version nifi.security.keystore=/path/to/keystore.jks nifi.security.keystoreType=JKS