package com.thinkbiganalytics.nifi.rest.client; /*- * #%L * thinkbig-nifi-rest-client-api * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed 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. * #L% */ import com.google.common.collect.ImmutableSet; import org.apache.nifi.web.api.dto.FlowSnippetDTO; import org.apache.nifi.web.api.dto.PortDTO; import org.apache.nifi.web.api.dto.TemplateDTO; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import java.util.Optional; import java.util.Set; public class AbstractNiFiTemplatesRestClientTest { /** * Verifies finding templates by an input port name */ @Test public void findByInputPortName() { // Mock templates with only basic info final TemplateDTO basicTemplate1 = new TemplateDTO(); basicTemplate1.setId("cf54ca27-ccb0-49a1-94f2-2834c4379b70"); final TemplateDTO basicTemplate2 = new TemplateDTO(); basicTemplate2.setId("43ce4a07-10ac-40c0-b195-598bc753988b"); final TemplateDTO basicTemplate3 = new TemplateDTO(); basicTemplate3.setId("7f57c685-f9dd-497e-8e97-7d1e6d43b59c"); // Mock templates with port info final PortDTO port1 = new PortDTO(); port1.setId("ee77fc99-2f19-43d3-ae26-091f9caa1401"); port1.setName("to-other-template"); final PortDTO port2 = new PortDTO(); port2.setId("1b2a3c92-1964-4f87-9835-b8a19f024249"); port2.setName("to-standard-ingest"); final FlowSnippetDTO flow1 = new FlowSnippetDTO(); flow1.setInputPorts(ImmutableSet.of(port1)); final FlowSnippetDTO flow2 = new FlowSnippetDTO(); flow2.setInputPorts(ImmutableSet.of(port2)); final TemplateDTO fullTemplate1 = new TemplateDTO(); fullTemplate1.setId("cf54ca27-ccb0-49a1-94f2-2834c4379b70"); fullTemplate1.setSnippet(flow1); final TemplateDTO fullTemplate2 = new TemplateDTO(); fullTemplate2.setId("43ce4a07-10ac-40c0-b195-598bc753988b"); fullTemplate2.setSnippet(flow2); // Mock the NiFi Templates REST client final NiFiTemplatesRestClient client = Mockito.mock(AbstractNiFiTemplatesRestClient.class, Mockito.CALLS_REAL_METHODS); Mockito.when(client.findAll()).thenReturn(ImmutableSet.of(basicTemplate1, basicTemplate2, basicTemplate3)); Mockito.when(client.findById("cf54ca27-ccb0-49a1-94f2-2834c4379b70")).thenReturn(Optional.of(fullTemplate1)); Mockito.when(client.findById("43ce4a07-10ac-40c0-b195-598bc753988b")).thenReturn(Optional.of(fullTemplate2)); Mockito.when(client.findById("7f57c685-f9dd-497e-8e97-7d1e6d43b59c")).thenReturn(Optional.empty()); // Test finding matching templates final Set<TemplateDTO> matches = client.findByInputPortName("to-standard-ingest"); Assert.assertEquals(fullTemplate2, matches.stream().findFirst().get()); Assert.assertEquals(0, client.findByInputPortName("invalid").size()); } /** * Verifies finding templates by matching the template name */ @Test public void findByName() { // Mock templates final TemplateDTO template1 = new TemplateDTO(); template1.setName("temp1"); final TemplateDTO template2 = new TemplateDTO(); template2.setName("temp2"); final TemplateDTO template3 = new TemplateDTO(); template3.setName("temp3"); // Mock the NiFi Templates REST client final NiFiTemplatesRestClient client = Mockito.mock(AbstractNiFiTemplatesRestClient.class, Mockito.CALLS_REAL_METHODS); Mockito.when(client.findAll()).thenReturn(ImmutableSet.of(template1, template2, template3)); // Test finding matching template Assert.assertEquals(template2, client.findByName("temp2").get()); Assert.assertFalse(client.findByName("invalid").isPresent()); } }