From e8baee6e4fbefbfe399658f22f6ca0a874ff8d6f Mon Sep 17 00:00:00 2001 From: Andy LoPresto Date: Tue, 23 Aug 2016 21:13:07 -0700 Subject: [PATCH 1/5] NIFI-2640 Fixed Windows encrypt-config.bat script to correctly invoke ConfigEncryptionTool. --- .../src/main/resources/bin/encrypt-config.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/encrypt-config.bat b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/encrypt-config.bat index de3fbf70f789..ca1ef07040a9 100644 --- a/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/encrypt-config.bat +++ b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/encrypt-config.bat @@ -33,7 +33,7 @@ goto startConfig :startConfig set LIB_DIR=%~dp0..\classpath;%~dp0..\lib -SET JAVA_PARAMS=-cp %LIB_DIR%\* -Xms12m -Xmx24m %JAVA_ARGS% org.apache.nifi.util.config.ConfigEncryptionTool +SET JAVA_PARAMS=-cp %LIB_DIR%\* -Xms128m -Xmx256m org.apache.nifi.properties.ConfigEncryptionTool cmd.exe /C "%JAVA_EXE%" %JAVA_PARAMS% %* From fb910f4c4cf33307186a273a3ee7e749f017c05a Mon Sep 17 00:00:00 2001 From: Andy LoPresto Date: Wed, 24 Aug 2016 10:03:15 -0700 Subject: [PATCH 2/5] NIFI-2640 Resolved failing Windows tests by adding OS-agnostic file permission read/write methods and new regex for different date formats. --- .../ConfigEncryptionToolTest.groovy | 65 ++++++++++++++----- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy index b4ca22dcccd7..03ca60a37eef 100644 --- a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy +++ b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy @@ -19,6 +19,7 @@ package org.apache.nifi.properties import ch.qos.logback.classic.spi.LoggingEvent import ch.qos.logback.core.AppenderBase import org.apache.commons.codec.binary.Hex +import org.apache.commons.lang3.SystemUtils import org.apache.nifi.toolkit.tls.commandLine.CommandLineParseException import org.apache.nifi.util.NiFiProperties import org.apache.nifi.util.console.TextDevice @@ -92,6 +93,38 @@ class ConfigEncryptionToolTest extends GroovyTestCase { } } + /** + * OS-agnostic method for setting file permissions. On POSIX-compliant systems, accurately sets the provided permissions. On Windows, sets the corresponding permissions for the file owner only. + * + * @param file the file to modify + * @param permissions the desired permissions + */ + private static void setFilePermissions(File file, List permissions = []) { + if (SystemUtils.IS_OS_WINDOWS) { + file?.setReadable(permissions.contains(PosixFilePermission.OWNER_READ)) + file?.setWritable(permissions.contains(PosixFilePermission.OWNER_WRITE)) + file?.setExecutable(permissions.contains(PosixFilePermission.OWNER_EXECUTE)) + } else { + Files.setPosixFilePermissions(file?.toPath(), permissions as Set) + } + } + + /** + * OS-agnostic method for getting file permissions. On POSIX-compliant systems, accurately gets the existing permissions. On Windows, gets the corresponding permissions for the file owner only. + * + * @param file the file to check + * @return a Set of (String, PosixFilePermissions) containing the permissions + */ + private static Set getFilePermissions(File file) { + if (SystemUtils.IS_OS_WINDOWS) { + return [file.canRead() ? "OWNER_READ" : "", + file.canWrite() ? "OWNER_WRITE" : "", + file.canExecute() ? "OWNER_EXECUTE" : ""] as Set + } else { + return Files.getPosixFilePermissions(file?.toPath()) + } + } + @Test void testShouldPrintHelpMessage() { // Arrange @@ -609,8 +642,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { Files.copy(inputPropertiesFile.toPath(), workingFile.toPath()) // Empty set of permissions - Files.setPosixFilePermissions(workingFile.toPath(), [] as Set) - logger.info("Set POSIX permissions to ${Files.getPosixFilePermissions(workingFile.toPath())}") + setFilePermissions(workingFile, []) + logger.info("Set POSIX permissions to ${getFilePermissions(workingFile)}") ConfigEncryptionTool tool = new ConfigEncryptionTool() String[] args = ["-n", workingFile.path, "-k", KEY_HEX] @@ -793,8 +826,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { Files.copy(emptyKeyFile.toPath(), workingFile.toPath()) // Empty set of permissions - Files.setPosixFilePermissions(workingFile.toPath(), [] as Set) - logger.info("Set POSIX permissions to ${Files.getPosixFilePermissions(workingFile.toPath())}") + setFilePermissions(workingFile, []) + logger.info("Set POSIX permissions to ${getFilePermissions(workingFile)}") ConfigEncryptionTool tool = new ConfigEncryptionTool() String[] args = ["-b", workingFile.path, "-k", KEY_HEX] @@ -822,8 +855,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { Files.copy(emptyKeyFile.toPath(), workingFile.toPath()) // Read-only set of permissions - Files.setPosixFilePermissions(workingFile.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ] as Set) - logger.info("Set POSIX permissions to ${Files.getPosixFilePermissions(workingFile.toPath())}") + setFilePermissions(workingFile, [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ]) + logger.info("Set POSIX permissions to ${getFilePermissions(workingFile)}") ConfigEncryptionTool tool = new ConfigEncryptionTool() String[] args = ["-b", workingFile.path, "-k", KEY_HEX] @@ -899,7 +932,9 @@ class ConfigEncryptionToolTest extends GroovyTestCase { // The serialization could have occurred > 1 second ago, causing a rolling date/time mismatch, so use regex // Format -- #Fri Aug 19 16:51:16 PDT 2016 - String datePattern = /#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3} \d{4}/ + // Alternate format -- #Fri Aug 19 16:51:16 GMT-0500 2016 + // \u0024 == '$' to avoid escaping + String datePattern = /^#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3}(\-\d{4})? \d{4}\u0024/ // One extra line for the date assert lines.size() == properties.size() + 1 @@ -1127,8 +1162,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { Files.copy(inputPropertiesFile.toPath(), workingFile.toPath()) // Read-only set of permissions - Files.setPosixFilePermissions(workingFile.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ] as Set) - logger.info("Set POSIX permissions to ${Files.getPosixFilePermissions(workingFile.toPath())}") + setFilePermissions(workingFile, [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ]) + logger.info("Set POSIX permissions to ${getFilePermissions(workingFile)}") ConfigEncryptionTool tool = new ConfigEncryptionTool() String[] args = ["-n", inputPropertiesFile.path, "-o", workingFile.path, "-k", KEY_HEX] @@ -1160,8 +1195,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { workingFile.delete() // Read-only set of permissions - Files.setPosixFilePermissions(tmpDir.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ] as Set) - logger.info("Set POSIX permissions on parent directory to ${Files.getPosixFilePermissions(tmpDir.toPath())}") + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.GROUP_READ, PosixFilePermission.OTHERS_READ]) + logger.info("Set POSIX permissions to ${getFilePermissions(tmpDir)}") ConfigEncryptionTool tool = new ConfigEncryptionTool() String[] args = ["-n", inputPropertiesFile.path, "-o", workingFile.path, "-k", KEY_HEX] @@ -1181,7 +1216,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { assert msg == "The nifi.properties file at ${workingFile.path} must be writable by the user running this tool".toString() workingFile.deleteOnExit() - Files.setPosixFilePermissions(tmpDir.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE] as Set) + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE]) tmpDir.deleteOnExit() } @@ -1192,7 +1227,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { File tmpDir = new File("target/tmp/") tmpDir.mkdirs() - Files.setPosixFilePermissions(tmpDir.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE] as Set) + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE]) File emptyKeyFile = new File("src/test/resources/bootstrap_with_empty_master_key.conf") File bootstrapFile = new File("target/tmp/tmp_bootstrap.conf") @@ -1271,7 +1306,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { File tmpDir = new File("target/tmp/") tmpDir.mkdirs() - Files.setPosixFilePermissions(tmpDir.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE] as Set) + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE]) File emptyKeyFile = new File("src/test/resources/bootstrap_with_empty_master_key.conf") File bootstrapFile = new File("target/tmp/tmp_bootstrap.conf") @@ -1353,7 +1388,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { File tmpDir = new File("target/tmp/") tmpDir.mkdirs() - Files.setPosixFilePermissions(tmpDir.toPath(), [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE] as Set) + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE, PosixFilePermission.OWNER_EXECUTE, PosixFilePermission.GROUP_READ, PosixFilePermission.GROUP_WRITE, PosixFilePermission.GROUP_EXECUTE, PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_WRITE, PosixFilePermission.OTHERS_EXECUTE]) File emptyKeyFile = new File("src/test/resources/bootstrap_with_empty_master_key.conf") File bootstrapFile = new File("target/tmp/tmp_bootstrap.conf") From edbdc71c1583e3283091a10047e01b38337d32f5 Mon Sep 17 00:00:00 2001 From: Andy LoPresto Date: Wed, 24 Aug 2016 11:08:47 -0700 Subject: [PATCH 3/5] NIFI-2640 Removed unnecessary System environment modification in CET. Added assumptions to failing Windows tests to only run on *nix and added Windows-specific tests. --- .../properties/ConfigEncryptionTool.groovy | 14 ---- .../ConfigEncryptionToolTest.groovy | 77 ++++++++++++++++++- 2 files changed, 74 insertions(+), 17 deletions(-) diff --git a/nifi-toolkit/nifi-toolkit-encrypt-config/src/main/groovy/org/apache/nifi/properties/ConfigEncryptionTool.groovy b/nifi-toolkit/nifi-toolkit-encrypt-config/src/main/groovy/org/apache/nifi/properties/ConfigEncryptionTool.groovy index 8a275bef200f..ace1d50f50e3 100644 --- a/nifi-toolkit/nifi-toolkit-encrypt-config/src/main/groovy/org/apache/nifi/properties/ConfigEncryptionTool.groovy +++ b/nifi-toolkit/nifi-toolkit-encrypt-config/src/main/groovy/org/apache/nifi/properties/ConfigEncryptionTool.groovy @@ -242,12 +242,6 @@ class ConfigEncryptionTool { private NiFiProperties loadNiFiProperties() throws IOException { File niFiPropertiesFile if (niFiPropertiesPath && (niFiPropertiesFile = new File(niFiPropertiesPath)).exists()) { - String oldNiFiPropertiesPath = System.getProperty(NiFiProperties.PROPERTIES_FILE_PATH) - logger.debug("Saving existing NiFiProperties file path ${oldNiFiPropertiesPath}") - - System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, niFiPropertiesFile.absolutePath) - logger.debug("Temporarily set NiFiProperties file path to ${niFiPropertiesFile.absolutePath}") - NiFiProperties properties try { properties = NiFiPropertiesLoader.withKey(keyHex).load(niFiPropertiesFile) @@ -258,14 +252,6 @@ class ConfigEncryptionTool { logger.error("Encountered an error", e) } throw new IOException("Cannot load NiFiProperties from [${niFiPropertiesPath}]", e) - } finally { - // Can't set a system property to null - if (oldNiFiPropertiesPath) { - System.setProperty(NiFiProperties.PROPERTIES_FILE_PATH, oldNiFiPropertiesPath) - } else { - System.clearProperty(NiFiProperties.PROPERTIES_FILE_PATH) - } - logger.debug("Restored system variable ${NiFiProperties.PROPERTIES_FILE_PATH} to ${oldNiFiPropertiesPath}") } } else { printUsageAndThrow("Cannot load NiFiProperties from [${niFiPropertiesPath}]", ExitCode.ERROR_READING_NIFI_PROPERTIES) diff --git a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy index 03ca60a37eef..7cb2b30596b5 100644 --- a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy +++ b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy @@ -27,6 +27,7 @@ import org.apache.nifi.util.console.TextDevices import org.bouncycastle.crypto.generators.SCrypt import org.bouncycastle.jce.provider.BouncyCastleProvider import org.junit.After +import org.junit.Assume import org.junit.Before import org.junit.BeforeClass import org.junit.Rule @@ -119,7 +120,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { if (SystemUtils.IS_OS_WINDOWS) { return [file.canRead() ? "OWNER_READ" : "", file.canWrite() ? "OWNER_WRITE" : "", - file.canExecute() ? "OWNER_EXECUTE" : ""] as Set + file.canExecute() ? "OWNER_EXECUTE" : ""].findAll { it } as Set } else { return Files.getPosixFilePermissions(file?.toPath()) } @@ -636,6 +637,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { @Test void testLoadNiFiPropertiesShouldHandleReadFailure() { // Arrange + Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS) + File inputPropertiesFile = new File("src/test/resources/nifi_with_sensitive_properties_unprotected.properties") File workingFile = new File("tmp_nifi.properties") workingFile.delete() @@ -662,6 +665,36 @@ class ConfigEncryptionToolTest extends GroovyTestCase { workingFile.deleteOnExit() } + @Test + void testLoadNiFiPropertiesShouldHandleReadFailureOnWindows() { + // Arrange + Assume.assumeTrue("Test only runs on Windows", SystemUtils.IS_OS_WINDOWS) + + File inputPropertiesFile = new File("src/test/resources/nifi_with_sensitive_properties_unprotected.properties") + File workingFile = new File("tmp_nifi.properties") + workingFile.delete() + + Files.copy(inputPropertiesFile.toPath(), workingFile.toPath()) + // Empty set of permissions + workingFile.setReadable(false) + + ConfigEncryptionTool tool = new ConfigEncryptionTool() + String[] args = ["-n", workingFile.path, "-k", KEY_HEX] + tool.parse(args) + + // Act + def msg = shouldFail(IOException) { + tool.loadNiFiProperties() + logger.info("Read nifi.properties") + } + logger.expected(msg) + + // Assert + assert msg == "Cannot load NiFiProperties from [${workingFile.path}]".toString() + + workingFile.deleteOnExit() + } + @Test void testShouldEncryptSensitiveProperties() { // Arrange @@ -932,9 +965,9 @@ class ConfigEncryptionToolTest extends GroovyTestCase { // The serialization could have occurred > 1 second ago, causing a rolling date/time mismatch, so use regex // Format -- #Fri Aug 19 16:51:16 PDT 2016 - // Alternate format -- #Fri Aug 19 16:51:16 GMT-0500 2016 + // Alternate format -- #Fri Aug 19 16:51:16 GMT-05:00 2016 // \u0024 == '$' to avoid escaping - String datePattern = /^#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3}(\-\d{4})? \d{4}\u0024/ + String datePattern = /^#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3}(\-\d{2}:\d{2})? \d{4}\u0024/ // One extra line for the date assert lines.size() == properties.size() + 1 @@ -1188,6 +1221,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { @Test void testWriteNiFiPropertiesShouldHandleWriteFailureWhenFileDoesNotExist() { // Arrange + Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS) + File inputPropertiesFile = new File("src/test/resources/nifi_with_sensitive_properties_unprotected.properties") File tmpDir = new File("target/tmp/") tmpDir.mkdirs() @@ -1220,6 +1255,42 @@ class ConfigEncryptionToolTest extends GroovyTestCase { tmpDir.deleteOnExit() } + @Test + void testWriteNiFiPropertiesShouldHandleWriteFailureWhenFileDoesNotExistOnWindows() { + // Arrange + Assume.assumeTrue("Test only runs on Windows", SystemUtils.IS_OS_WINDOWS) + + File inputPropertiesFile = new File("src/test/resources/nifi_with_sensitive_properties_unprotected.properties") + File tmpDir = new File("target/tmp/") + tmpDir.mkdirs() + File workingFile = new File("target/tmp/tmp_nifi.properties") + workingFile.delete() + + // Read-only set of permissions + tmpDir.setWritable(false) + + ConfigEncryptionTool tool = new ConfigEncryptionTool() + String[] args = ["-n", inputPropertiesFile.path, "-o", workingFile.path, "-k", KEY_HEX] + tool.parse(args) + NiFiProperties niFiProperties = tool.loadNiFiProperties() + tool.@niFiProperties = niFiProperties + logger.info("Loaded ${niFiProperties.size()} properties from ${inputPropertiesFile.path}") + + // Act + def msg = shouldFail(IOException) { + tool.writeNiFiProperties() + logger.info("Wrote to ${workingFile.path}") + } + logger.expected(msg) + + // Assert + assert msg == "The nifi.properties file at ${workingFile.path} must be writable by the user running this tool".toString() + + workingFile.deleteOnExit() + setFilePermissions(tmpDir, [PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE]) + tmpDir.deleteOnExit() + } + @Test void testShouldPerformFullOperation() { // Arrange From 7e3507eb73355fc2dfb9377a5d3236f90e2c8b9e Mon Sep 17 00:00:00 2001 From: Andy LoPresto Date: Wed, 24 Aug 2016 11:13:17 -0700 Subject: [PATCH 4/5] NIFI-2640 Regex fix for timezones ahead of GMT. --- .../org/apache/nifi/properties/ConfigEncryptionToolTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy index 7cb2b30596b5..f9f54613ed02 100644 --- a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy +++ b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy @@ -967,7 +967,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { // Format -- #Fri Aug 19 16:51:16 PDT 2016 // Alternate format -- #Fri Aug 19 16:51:16 GMT-05:00 2016 // \u0024 == '$' to avoid escaping - String datePattern = /^#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3}(\-\d{2}:\d{2})? \d{4}\u0024/ + String datePattern = /^#\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \w{3}([\-+]\d{2}:\d{2})? \d{4}\u0024/ // One extra line for the date assert lines.size() == properties.size() + 1 From 6789647a3b4b2b1f658e769d5c39078223fd875b Mon Sep 17 00:00:00 2001 From: Andy LoPresto Date: Wed, 24 Aug 2016 11:48:59 -0700 Subject: [PATCH 5/5] NIFI-2640 Ignored tests that fail on Windows due to file permission and line ending issues. These are captured in NIFI-2644. --- .../apache/nifi/properties/ConfigEncryptionToolTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy index f9f54613ed02..345870354771 100644 --- a/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy +++ b/nifi-toolkit/nifi-toolkit-encrypt-config/src/test/groovy/org/apache/nifi/properties/ConfigEncryptionToolTest.groovy @@ -30,6 +30,7 @@ import org.junit.After import org.junit.Assume import org.junit.Before import org.junit.BeforeClass +import org.junit.Ignore import org.junit.Rule import org.junit.Test import org.junit.contrib.java.lang.system.Assertion @@ -665,6 +666,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { workingFile.deleteOnExit() } + @Ignore("Setting the Windows file permissions fails in the test harness, so the test does not throw the expected exception") @Test void testLoadNiFiPropertiesShouldHandleReadFailureOnWindows() { // Arrange @@ -952,6 +954,8 @@ class ConfigEncryptionToolTest extends GroovyTestCase { @Test void testShouldSerializeNiFiProperties() { // Arrange + Assume.assumeTrue("Test only runs on *nix because Windows line endings are different", !SystemUtils.IS_OS_WINDOWS) + Properties rawProperties = [key: "value", key2: "value2"] as Properties NiFiProperties properties = new StandardNiFiProperties(rawProperties) logger.info("Loaded ${properties.size()} properties") @@ -1255,6 +1259,7 @@ class ConfigEncryptionToolTest extends GroovyTestCase { tmpDir.deleteOnExit() } + @Ignore("Setting the Windows file permissions fails in the test harness, so the test does not throw the expected exception") @Test void testWriteNiFiPropertiesShouldHandleWriteFailureWhenFileDoesNotExistOnWindows() { // Arrange