Repository: nifi Updated Branches: refs/heads/master 8e10f0bd5 -> 63d4bba5a
NIFI-5047 Fixed a bug in PutMongo that prevented it from working if the mode is insert and the query/query key are not set. Signed-off-by: Pierre Villard <pierre.villard...@gmail.com> This closes #2609. Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/63d4bba5 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/63d4bba5 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/63d4bba5 Branch: refs/heads/master Commit: 63d4bba5a41d4eed40fb3324f124ba02e196d28c Parents: 8e10f0b Author: Mike Thomsen <mikerthom...@gmail.com> Authored: Fri Apr 6 08:34:08 2018 -0400 Committer: Pierre Villard <pierre.villard...@gmail.com> Committed: Fri Apr 6 21:36:30 2018 +0200 ---------------------------------------------------------------------- .../nifi/processors/mongodb/PutMongo.java | 4 ++ .../nifi/processors/mongodb/PutMongoIT.java | 2 + .../nifi/processors/mongodb/PutMongoTest.java | 73 ++++++++++++++++++++ 3 files changed, 79 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java index 60eb0d5..e52fd36 100644 --- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java +++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java @@ -155,6 +155,10 @@ public class PutMongo extends AbstractMongoProcessor { protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) { List<ValidationResult> problems = new ArrayList<>(); + if (validationContext.getProperty(MODE).getValue().equals(MODE_INSERT)) { + return problems; + } + final boolean queryKey = validationContext.getProperty(UPDATE_QUERY_KEY).isSet(); final boolean query = validationContext.getProperty(UPDATE_QUERY).isSet(); http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java index 6c14c06..6ceff7b 100644 --- a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java +++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java @@ -104,6 +104,7 @@ public class PutMongoIT extends MongoWriteTestBase { @Test public void testQueryAndUpdateKey() { TestRunner runner = init(PutMongo.class); + runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE); runner.setProperty(PutMongo.UPDATE_QUERY_KEY, "_id"); runner.setProperty(PutMongo.UPDATE_QUERY, "{}"); runner.assertNotValid(); @@ -112,6 +113,7 @@ public class PutMongoIT extends MongoWriteTestBase { @Test public void testNoQueryAndNoUpdateKey() { TestRunner runner = init(PutMongo.class); + runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE); runner.removeProperty(PutMongo.UPDATE_QUERY); runner.setProperty(PutMongo.UPDATE_QUERY_KEY, ""); runner.assertNotValid(); http://git-wip-us.apache.org/repos/asf/nifi/blob/63d4bba5/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java new file mode 100644 index 0000000..10e2922 --- /dev/null +++ b/nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoTest.java @@ -0,0 +1,73 @@ +/* + * 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.nifi.processors.mongodb; + +import org.apache.nifi.components.ValidationResult; +import org.apache.nifi.util.MockProcessContext; +import org.apache.nifi.util.TestRunner; +import org.apache.nifi.util.TestRunners; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Collection; +import java.util.Iterator; + +public class PutMongoTest { + + /* + * Corresponds to NIFI-5047 + */ + @Test + public void testQueryKeyValidation() { + TestRunner runner = TestRunners.newTestRunner(PutMongo.class); + runner.setProperty(PutMongo.URI, "mongodb://localhost:27017"); + runner.setProperty(PutMongo.DATABASE_NAME, "demo"); + runner.setProperty(PutMongo.COLLECTION_NAME, "messages"); + runner.setProperty(PutMongo.MODE, PutMongo.MODE_INSERT); + runner.assertValid(); + + runner.setProperty(PutMongo.MODE, PutMongo.MODE_UPDATE); + runner.setProperty(PutMongo.UPDATE_QUERY, "{}"); + runner.setProperty(PutMongo.UPDATE_QUERY_KEY, "test"); + runner.assertNotValid(); + + Collection<ValidationResult> results = null; + if (runner.getProcessContext() instanceof MockProcessContext) { + results = ((MockProcessContext) runner.getProcessContext()).validate(); + } + Assert.assertNotNull(results); + Assert.assertEquals(1, results.size()); + Iterator<ValidationResult> it = results.iterator(); + Assert.assertTrue(it.next().toString().endsWith("Both update query key and update query cannot be set at the same time.")); + + runner.removeProperty(PutMongo.UPDATE_QUERY); + runner.removeProperty(PutMongo.UPDATE_QUERY_KEY); + + runner.assertNotValid(); + + results = null; + if (runner.getProcessContext() instanceof MockProcessContext) { + results = ((MockProcessContext) runner.getProcessContext()).validate(); + } + + Assert.assertNotNull(results); + Assert.assertEquals(1, results.size()); + it = results.iterator(); + Assert.assertTrue(it.next().toString().endsWith("Either the update query key or the update query field must be set.")); + } +}