@Test public void testGetController() throws Exception { final HttpServletRequest req = createCommonHttpServletRequest(); final NiFiServiceFacade serviceFacade = mock(NiFiServiceFacade.class); final ControllerEntity controllerEntity = new ControllerEntity(); final ControllerDTO controller = new ControllerDTO(); controllerEntity.setController(controller); controller.setRemoteSiteHttpListeningPort(8080); controller.setRemoteSiteListeningPort(9990); doReturn(controller).when(serviceFacade).getSiteToSiteDetails(); final SiteToSiteResource resource = getSiteToSiteResource(serviceFacade); final Response response = resource.getSiteToSiteDetails(req); ControllerEntity resultEntity = (ControllerEntity) response.getEntity(); assertEquals(200, response.getStatus()); assertEquals( "remoteSiteHttpListeningPort should be retained", new Integer(8080), resultEntity.getController().getRemoteSiteHttpListeningPort()); assertEquals( "Other fields should be retained.", new Integer(9990), controllerEntity.getController().getRemoteSiteListeningPort()); }
@Test public void testGetControllerForOlderVersion() throws Exception { final HttpServletRequest req = mock(HttpServletRequest.class); final NiFiServiceFacade serviceFacade = mock(NiFiServiceFacade.class); final ControllerEntity controllerEntity = new ControllerEntity(); final ControllerDTO controller = new ControllerDTO(); controllerEntity.setController(controller); controller.setRemoteSiteHttpListeningPort(8080); controller.setRemoteSiteListeningPort(9990); doReturn(controller).when(serviceFacade).getSiteToSiteDetails(); final SiteToSiteResource resource = getSiteToSiteResource(serviceFacade); final Response response = resource.getSiteToSiteDetails(req); ControllerEntity resultEntity = (ControllerEntity) response.getEntity(); assertEquals(200, response.getStatus()); assertNull( "remoteSiteHttpListeningPort should be null since older version doesn't recognize this field" + " and throws JSON mapping exception.", resultEntity.getController().getRemoteSiteHttpListeningPort()); assertEquals( "Other fields should be retained.", new Integer(9990), controllerEntity.getController().getRemoteSiteListeningPort()); }
/** * Returns the details of this NiFi. * * @return A controllerEntity. */ @GET @Consumes(MediaType.WILDCARD) @Produces(MediaType.APPLICATION_JSON) @ApiOperation( value = "Returns the details about this NiFi necessary to communicate via site to site", response = ControllerEntity.class, authorizations = {@Authorization(value = "Read - /site-to-site", type = "")}) @ApiResponses( value = { @ApiResponse( code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."), @ApiResponse(code = 401, message = "Client could not be authenticated."), @ApiResponse(code = 403, message = "Client is not authorized to make this request."), @ApiResponse( code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.") }) public Response getSiteToSiteDetails(@Context HttpServletRequest req) { authorizeSiteToSite(); if (isReplicateRequest()) { return replicate(HttpMethod.GET); } // get the controller dto final ControllerDTO controller = serviceFacade.getSiteToSiteDetails(); // build the response entity final ControllerEntity entity = new ControllerEntity(); entity.setController(controller); if (isEmpty(req.getHeader(HttpHeaders.PROTOCOL_VERSION))) { // This indicates the client uses older NiFi version, // which strictly read JSON properties and fail with unknown properties. // Convert result entity so that old version clients can understand. logger.debug("Converting result to provide backward compatibility..."); controller.setRemoteSiteHttpListeningPort(null); } // generate the response return clusterContext(noCache(Response.ok(entity))).build(); }