Search in sources :

Example 6 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestInvokeJavascript method testScriptDefinedAttribute.

/**
 * Tests a scripted processor written in Javascript that reads the first line of text from the flowfiles content and
 * stores the value in an attribute of the outgoing flowfile.
 * Confirms that the scripted processor can return property descriptors defined in it.
 *
 * @throws Exception Any error encountered while testing
 */
@Test
public void testScriptDefinedAttribute() throws Exception {
    InvokeScriptedProcessor processor = new InvokeScriptedProcessor();
    MockProcessContext context = new MockProcessContext(processor);
    MockProcessorInitializationContext initContext = new MockProcessorInitializationContext(processor, context);
    processor.initialize(initContext);
    context.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE, "ECMAScript");
    context.setProperty(ScriptingComponentUtils.SCRIPT_FILE, "target/test/resources/javascript/test_reader.js");
    context.setProperty(ScriptingComponentUtils.MODULES, "target/test/resources/javascript");
    // State Manger is unused, and a null reference is specified
    processor.customValidate(new MockValidationContext(context));
    processor.setup(context);
    List<PropertyDescriptor> descriptors = processor.getSupportedPropertyDescriptors();
    assertNotNull(descriptors);
    assertTrue(descriptors.size() > 0);
    boolean found = false;
    for (PropertyDescriptor descriptor : descriptors) {
        if (descriptor.getName().equals("test-attribute")) {
            found = true;
            break;
        }
    }
    assertTrue(found);
}
Also used : PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) MockProcessorInitializationContext(org.apache.nifi.util.MockProcessorInitializationContext) MockValidationContext(org.apache.nifi.util.MockValidationContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 7 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestEncryptContent method testShouldValidatePGPPublicKeyringIsProperFormat.

@Test
public void testShouldValidatePGPPublicKeyringIsProperFormat() {
    // Arrange
    final TestRunner runner = TestRunners.newTestRunner(EncryptContent.class);
    Collection<ValidationResult> results;
    MockProcessContext pc;
    runner.setProperty(EncryptContent.MODE, EncryptContent.ENCRYPT_MODE);
    runner.setProperty(EncryptContent.ENCRYPTION_ALGORITHM, EncryptionMethod.PGP.name());
    runner.setProperty(EncryptContent.PUBLIC_KEYRING, "src/test/resources/TestEncryptContent/text.txt");
    runner.setProperty(EncryptContent.PUBLIC_KEY_USERID, "USERID");
    runner.enqueue(new byte[0]);
    pc = (MockProcessContext) runner.getProcessContext();
    // Act
    results = pc.validate();
    // Assert
    Assert.assertEquals(1, results.size());
    ValidationResult vr = (ValidationResult) results.toArray()[0];
    String expectedResult = " java.io.IOException: invalid header encountered";
    String message = "'" + vr.toString() + "' contains '" + expectedResult + "'";
    Assert.assertTrue(message, vr.toString().contains(expectedResult));
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 8 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestEncryptContent method testShouldValidatePGPPublicKeyringExists.

@Test
public void testShouldValidatePGPPublicKeyringExists() {
    // Arrange
    final TestRunner runner = TestRunners.newTestRunner(EncryptContent.class);
    Collection<ValidationResult> results;
    MockProcessContext pc;
    runner.setProperty(EncryptContent.MODE, EncryptContent.ENCRYPT_MODE);
    runner.setProperty(EncryptContent.ENCRYPTION_ALGORITHM, EncryptionMethod.PGP.name());
    runner.setProperty(EncryptContent.PUBLIC_KEYRING, "src/test/resources/TestEncryptContent/pubring.gpg.missing");
    runner.setProperty(EncryptContent.PUBLIC_KEY_USERID, "USERID");
    runner.enqueue(new byte[0]);
    pc = (MockProcessContext) runner.getProcessContext();
    // Act
    results = pc.validate();
    // Assert
    Assert.assertEquals(1, results.size());
    ValidationResult vr = (ValidationResult) results.toArray()[0];
    String expectedResult = "java.io.FileNotFoundException";
    String message = "'" + vr.toString() + "' contains '" + expectedResult + "'";
    Assert.assertTrue(message, vr.toString().contains(expectedResult));
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 9 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestFTP method testValidators.

@Test
public void testValidators() {
    TestRunner runner = TestRunners.newTestRunner(PutFTP.class);
    Collection<ValidationResult> results;
    ProcessContext pc;
    /* Set the basic required values */
    results = new HashSet<>();
    runner.setProperty(FTPTransfer.USERNAME, "${el-username}");
    runner.setProperty(FTPTransfer.HOSTNAME, "static-hostname");
    runner.setProperty(FTPTransfer.PORT, "${el-portNumber}");
    results = new HashSet<>();
    runner.setProperty(FTPTransfer.REMOTE_PATH, "static-remote-target");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    assertEquals(0, results.size());
    results = new HashSet<>();
    runner.setProperty(FTPTransfer.REMOTE_PATH, "${el-remote-target}");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    assertEquals(0, results.size());
    results = new HashSet<>();
    runner.setProperty(FTPTransfer.USERNAME, "static-username");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    assertEquals(0, results.size());
    /* Try an invalid expression */
    results = new HashSet<>();
    runner.setProperty(FTPTransfer.USERNAME, "");
    runner.enqueue(new byte[0]);
    pc = runner.getProcessContext();
    if (pc instanceof MockProcessContext) {
        results = ((MockProcessContext) pc).validate();
    }
    assertEquals(1, results.size());
}
Also used : TestRunner(org.apache.nifi.util.TestRunner) ValidationResult(org.apache.nifi.components.ValidationResult) MockProcessContext(org.apache.nifi.util.MockProcessContext) ProcessContext(org.apache.nifi.processor.ProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) Test(org.junit.Test)

Example 10 with MockProcessContext

use of org.apache.nifi.util.MockProcessContext in project nifi by apache.

the class TestJmsConsumer method testMap2FlowFileBytesMessage.

/**
 * Test BytesMessage to FlowFile conversion
 *
 * @throws java.lang.Exception ex
 */
@Test
public void testMap2FlowFileBytesMessage() throws Exception {
    TestRunner runner = TestRunners.newTestRunner(GetJMSQueue.class);
    BytesMessage bytesMessage = new ActiveMQBytesMessage();
    String sourceString = "Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data.!";
    byte[] payload = sourceString.getBytes("UTF-8");
    bytesMessage.writeBytes(payload);
    bytesMessage.reset();
    ProcessContext context = runner.getProcessContext();
    ProcessSession session = runner.getProcessSessionFactory().createSession();
    ProcessorInitializationContext pic = new MockProcessorInitializationContext(runner.getProcessor(), (MockProcessContext) runner.getProcessContext());
    JmsProcessingSummary summary = JmsConsumer.map2FlowFile(context, session, bytesMessage, true, pic.getLogger());
    assertEquals("BytesMessage content length should equal to FlowFile content size", payload.length, summary.getLastFlowFile().getSize());
    final byte[] buffer = new byte[payload.length];
    runner.clearTransferState();
    session.read(summary.getLastFlowFile(), new InputStreamCallback() {

        @Override
        public void process(InputStream in) throws IOException {
            StreamUtils.fillBuffer(in, buffer, false);
        }
    });
    String contentString = new String(buffer, "UTF-8");
    assertEquals("", sourceString, contentString);
}
Also used : ProcessSession(org.apache.nifi.processor.ProcessSession) TestRunner(org.apache.nifi.util.TestRunner) InputStream(java.io.InputStream) MockProcessorInitializationContext(org.apache.nifi.util.MockProcessorInitializationContext) ActiveMQBytesMessage(org.apache.activemq.command.ActiveMQBytesMessage) BytesMessage(javax.jms.BytesMessage) JmsProcessingSummary(org.apache.nifi.processors.standard.util.JmsProcessingSummary) IOException(java.io.IOException) ProcessContext(org.apache.nifi.processor.ProcessContext) MockProcessContext(org.apache.nifi.util.MockProcessContext) MockProcessorInitializationContext(org.apache.nifi.util.MockProcessorInitializationContext) ProcessorInitializationContext(org.apache.nifi.processor.ProcessorInitializationContext) ActiveMQBytesMessage(org.apache.activemq.command.ActiveMQBytesMessage) InputStreamCallback(org.apache.nifi.processor.io.InputStreamCallback) Test(org.junit.Test)

Aggregations

MockProcessContext (org.apache.nifi.util.MockProcessContext)39 Test (org.junit.Test)35 ValidationResult (org.apache.nifi.components.ValidationResult)25 TestRunner (org.apache.nifi.util.TestRunner)24 ProcessContext (org.apache.nifi.processor.ProcessContext)16 MockProcessorInitializationContext (org.apache.nifi.util.MockProcessorInitializationContext)10 MockValidationContext (org.apache.nifi.util.MockValidationContext)6 HashSet (java.util.HashSet)4 ProcessorInitializationContext (org.apache.nifi.processor.ProcessorInitializationContext)4 Relationship (org.apache.nifi.processor.Relationship)4 ProcessSession (org.apache.nifi.processor.ProcessSession)3 JmsProcessingSummary (org.apache.nifi.processors.standard.util.JmsProcessingSummary)3 Matchers.anyString (org.mockito.Matchers.anyString)3 File (java.io.File)2 IOException (java.io.IOException)2 InputStream (java.io.InputStream)2 MalformedURLException (java.net.MalformedURLException)2 AtomicLong (java.util.concurrent.atomic.AtomicLong)2 NullSink (org.apache.flume.sink.NullSink)2 AvroSource (org.apache.flume.source.AvroSource)2