blob: 079c874ddbc083ee57bde3e0312dfce53db42427 [file] [log] [blame]
/*
* 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.minifi.bootstrap;
import org.apache.nifi.minifi.bootstrap.util.BootstrapTransformer;
import org.apache.nifi.minifi.commons.schema.ProvenanceReportingSchema;
import org.apache.nifi.minifi.commons.schema.SecurityPropertiesSchema;
import org.apache.nifi.minifi.commons.schema.SensitivePropsSchema;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Optional;
import java.util.Properties;
public class RunMiNiFiTest {
@Test
public void buildSecurityPropertiesNotDefined() throws Exception {
final RunMiNiFi testMiNiFi = new RunMiNiFi(null);
final Properties bootstrapProperties = getTestBootstrapProperties("bootstrap-ssl-ctx/bootstrap.conf.default");
final Optional<SecurityPropertiesSchema> securityPropsOptional = BootstrapTransformer.buildSecurityPropertiesFromBootstrap(bootstrapProperties);
Assert.assertTrue(!securityPropsOptional.isPresent());
}
@Test
public void buildSecurityPropertiesDefined() throws Exception {
final RunMiNiFi testMiNiFi = new RunMiNiFi(null);
final Properties bootstrapProperties = getTestBootstrapProperties("bootstrap-ssl-ctx/bootstrap.conf.configured");
final Optional<SecurityPropertiesSchema> securityPropsOptional = BootstrapTransformer.buildSecurityPropertiesFromBootstrap(bootstrapProperties);
Assert.assertTrue(securityPropsOptional.isPresent());
final SecurityPropertiesSchema securityPropertiesSchema = securityPropsOptional.get();
Assert.assertEquals("/my/test/keystore.jks", securityPropertiesSchema.getKeystore());
Assert.assertEquals("JKS", securityPropertiesSchema.getKeystoreType());
Assert.assertEquals("mykeystorepassword", securityPropertiesSchema.getKeystorePassword());
Assert.assertEquals("mykeypassword", securityPropertiesSchema.getKeyPassword());
Assert.assertEquals("/my/test/truststore.jks", securityPropertiesSchema.getTruststore());
Assert.assertEquals("JKS", securityPropertiesSchema.getTruststoreType());
Assert.assertEquals("mytruststorepassword", securityPropertiesSchema.getTruststorePassword());
Assert.assertEquals("TLS", securityPropertiesSchema.getSslProtocol());
final SensitivePropsSchema sensitiveProps = securityPropertiesSchema.getSensitiveProps();
Assert.assertNotNull(sensitiveProps);
Assert.assertEquals("sensitivepropskey", sensitiveProps.getKey());
Assert.assertEquals("algo", sensitiveProps.getAlgorithm());
Assert.assertEquals("BC", sensitiveProps.getProvider());
Assert.assertTrue(securityPropertiesSchema.isValid());
}
@Test
public void buildSecurityPropertiesDefinedButInvalid() throws Exception {
final RunMiNiFi testMiNiFi = new RunMiNiFi(null);
final Properties bootstrapProperties = getTestBootstrapProperties("bootstrap-ssl-ctx/bootstrap.conf.configured.invalid");
final Optional<SecurityPropertiesSchema> securityPropsOptional = BootstrapTransformer.buildSecurityPropertiesFromBootstrap(bootstrapProperties);
Assert.assertTrue(securityPropsOptional.isPresent());
final SecurityPropertiesSchema securityPropertiesSchema = securityPropsOptional.get();
Assert.assertEquals("/my/test/keystore.jks", securityPropertiesSchema.getKeystore());
Assert.assertEquals("NOTAKEYSTORETYPE", securityPropertiesSchema.getKeystoreType());
Assert.assertEquals("mykeystorepassword", securityPropertiesSchema.getKeystorePassword());
Assert.assertEquals("mykeypassword", securityPropertiesSchema.getKeyPassword());
Assert.assertEquals("/my/test/truststore.jks", securityPropertiesSchema.getTruststore());
Assert.assertEquals("JKS", securityPropertiesSchema.getTruststoreType());
Assert.assertEquals("mytruststorepassword", securityPropertiesSchema.getTruststorePassword());
final SensitivePropsSchema sensitiveProps = securityPropertiesSchema.getSensitiveProps();
Assert.assertNotNull(sensitiveProps);
Assert.assertEquals("sensitivepropskey", sensitiveProps.getKey());
Assert.assertEquals("algo", sensitiveProps.getAlgorithm());
Assert.assertEquals("BC", sensitiveProps.getProvider());
Assert.assertFalse(securityPropertiesSchema.isValid());
}
@Test
public void buildProvenanceReportingNotDefined() throws Exception {
final RunMiNiFi testMiNiFi = new RunMiNiFi(null);
final Properties bootstrapProperties = getTestBootstrapProperties("bootstrap-provenance-reporting/bootstrap.conf.default");
final Optional<ProvenanceReportingSchema> provenanceReportingPropsOptional = BootstrapTransformer.buildProvenanceReportingPropertiesFromBootstrap(bootstrapProperties);
Assert.assertTrue(!provenanceReportingPropsOptional.isPresent());
}
@Test
public void buildProvenanceReportingDefined() throws Exception {
final RunMiNiFi testMiNiFi = new RunMiNiFi(null);
final Properties bootstrapProperties = getTestBootstrapProperties("bootstrap-provenance-reporting/bootstrap.conf.configured");
final Optional<ProvenanceReportingSchema> provenanceReportingPropsOptional = BootstrapTransformer.buildProvenanceReportingPropertiesFromBootstrap(bootstrapProperties);
Assert.assertTrue(provenanceReportingPropsOptional.isPresent());
final ProvenanceReportingSchema provenanceReportingSchema = provenanceReportingPropsOptional.get();
Assert.assertEquals("This is a comment!", provenanceReportingSchema.getComment());
Assert.assertEquals("TIMER_DRIVEN", provenanceReportingSchema.getSchedulingStrategy());
Assert.assertEquals("15 secs", provenanceReportingSchema.getSchedulingPeriod());
Assert.assertEquals("http://localhost:8080/", provenanceReportingSchema.getDestinationUrl());
Assert.assertEquals("provenance", provenanceReportingSchema.getPortName());
Assert.assertEquals("http://${hostname(true)}:8081/nifi", provenanceReportingSchema.getOriginatingUrl());
Assert.assertEquals("10 secs", provenanceReportingSchema.getTimeout());
}
public static Properties getTestBootstrapProperties(final String fileName) throws IOException {
final Properties bootstrapProperties = new Properties();
try (final InputStream fis = RunMiNiFiTest.class.getClassLoader().getResourceAsStream(fileName)) {
bootstrapProperties.load(fis);
}
return bootstrapProperties;
}
}