From 0789ec3a6b8a3a56afdb2f844937b0b39729aa3d Mon Sep 17 00:00:00 2001 From: Joe Witt Date: Sat, 18 Jan 2020 14:57:09 -0500 Subject: [PATCH] NIFI-6882 from plain patch file in JIRA contributed by 'Josh' Removed tests which created dirs outside target location and which do not appear unit testable. --- .../nifi/processors/standard/PutFile.java | 2 +- .../nifi/processors/standard/TestPutFile.java | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFile.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFile.java index 73caa693af..cdb7cba4d6 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFile.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFile.java @@ -229,7 +229,7 @@ public class PutFile extends AbstractProcessor { Path tempDotCopyFile = null; try { - final Path rootDirPath = configuredRootDirPath; + final Path rootDirPath = configuredRootDirPath.toAbsolutePath(); String filename = flowFile.getAttribute(CoreAttributes.FILENAME.key()); final Path tempCopyFile = rootDirPath.resolve("." + filename); final Path copyFile = rootDirPath.resolve(filename); diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutFile.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutFile.java index 3440c44003..0c202c1924 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutFile.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutFile.java @@ -84,6 +84,40 @@ public class TestPutFile { assertEquals("Hello world!!", new String(content)); } + @Test + public void testCreateRelativeDirectory() throws IOException { + final TestRunner runner = TestRunners.newTestRunner(new PutFile()); + String newDir = TARGET_DIRECTORY + "/new-folder"; + runner.setProperty(PutFile.DIRECTORY, newDir); + runner.setProperty(PutFile.CONFLICT_RESOLUTION, PutFile.REPLACE_RESOLUTION); + + Map attributes = new HashMap<>(); + attributes.put(CoreAttributes.FILENAME.key(), "targetFile.txt"); + runner.enqueue("Hello world!!".getBytes(), attributes); + runner.run(); + runner.assertAllFlowFilesTransferred(FetchFile.REL_SUCCESS, 1); + Path targetPath = Paths.get(newDir + "/targetFile.txt"); + byte[] content = Files.readAllBytes(targetPath); + assertEquals("Hello world!!", new String(content)); + } + + @Test(expected = AssertionError.class) + public void testCreateEmptyStringDirectory() throws IOException { + final TestRunner runner = TestRunners.newTestRunner(new PutFile()); + String newDir = ""; + runner.setProperty(PutFile.DIRECTORY, newDir); + runner.setProperty(PutFile.CONFLICT_RESOLUTION, PutFile.REPLACE_RESOLUTION); + + Map attributes = new HashMap<>(); + attributes.put(CoreAttributes.FILENAME.key(), "targetFile.txt"); + runner.enqueue("Hello world!!".getBytes(), attributes); + runner.run(); + runner.assertAllFlowFilesTransferred(FetchFile.REL_SUCCESS, 1); + Path targetPath = Paths.get(newDir + "/targetFile.txt"); + byte[] content = Files.readAllBytes(targetPath); + assertEquals("Hello world!!", new String(content)); + } + @Test public void testReplaceConflictResolution() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new PutFile());