AssetREST { @GET @Path("/resource/{id}") public Response getXResourceFile(@Context HttpServletRequest request, @PathParam("id") Long id) { String fileType = searchUtil.extractString(request, new SearchCriteria(), "fileType", "File type", StringUtil.VALIDATION_TEXT); VXResource resource = getXResource(id); Response response=null; if(resource!=null && StringUtils.isNotEmpty(fileType)){ File file = null; file=assetMgr.getXResourceFile(resource, fileType); if(file!=null){ response=Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).header("Content-Disposition","attachment;filename=" + file.getName()).build(); file=null; } } return response; }  @GET @Path("/assets/{id}") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_X_ASSET + "\")") VXAsset getXAsset(@PathParam("id") Long id); @POST @Path("/assets") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.CREATE_X_ASSET + "\")") VXAsset createXAsset(VXAsset vXAsset); @PUT @Path("/assets/{id}") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.UPDATE_X_ASSET + "\")") VXAsset updateXAsset(VXAsset vXAsset); @DELETE @Path("/assets/{id}") @RangerAnnotationClassName(class_name = VXAsset.class) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.DELETE_X_ASSET + "\")") void deleteXAsset(@PathParam("id") Long id,
			@Context HttpServletRequest request); @POST @Path("/assets/testConfig") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.TEST_CONFIG + "\")") VXResponse configTest(VXAsset vXAsset); @GET @Path("/assets") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.SEARCH_X_ASSETS + "\")") VXAssetList searchXAssets(@Context HttpServletRequest request); @GET @Path("/assets/count") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.COUNT_X_ASSETS + "\")") VXLong countXAssets(@Context HttpServletRequest request); @GET @Path("/resources/{id}") @Produces({ "application/xml", "application/json" }) VXResource getXResource(@PathParam("id") Long id); @POST @Path("/resources") @Produces({ "application/xml", "application/json" }) VXResource createXResource(VXResource vXResource); @PUT @Path("/resources/{id}") @Produces({ "application/xml", "application/json" }) VXResource updateXResource(VXResource vXResource); @DELETE @Path("/resources/{id}") @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") @RangerAnnotationClassName(class_name = VXResource.class) void deleteXResource(@PathParam("id") Long id,
			@Context HttpServletRequest request); @GET @Path("/resources") @Produces({ "application/xml", "application/json" }) VXResourceList searchXResources(@Context HttpServletRequest request); @GET @Path("/resources/count") @Produces({ "application/xml", "application/json" }) VXLong countXResources(@Context HttpServletRequest request); @GET @Path("/credstores/{id}") @Produces({ "application/xml", "application/json" }) VXCredentialStore getXCredentialStore(@PathParam("id") Long id); @POST @Path("/credstores") @Produces({ "application/xml", "application/json" }) VXCredentialStore createXCredentialStore(
			VXCredentialStore vXCredentialStore); @PUT @Path("/credstores") @Produces({ "application/xml", "application/json" }) VXCredentialStore updateXCredentialStore(
			VXCredentialStore vXCredentialStore); @DELETE @Path("/credstores/{id}") @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") @RangerAnnotationClassName(class_name = VXCredentialStore.class) void deleteXCredentialStore(@PathParam("id") Long id,
			@Context HttpServletRequest request); @GET @Path("/credstores") @Produces({ "application/xml", "application/json" }) VXCredentialStoreList searchXCredentialStores(
			@Context HttpServletRequest request); @GET @Path("/credstores/count") @Produces({ "application/xml", "application/json" }) VXLong countXCredentialStores(@Context HttpServletRequest request); @GET @Path("/resource/{id}") Response getXResourceFile(@Context HttpServletRequest request,
			@PathParam("id") Long id); @GET @Path("/policyList/{repository}") @Encoded String getResourceJSON(@Context HttpServletRequest request,
			@PathParam("repository") String repository); @GET @Path("/exportAudit") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.SEARCH_X_POLICY_EXPORT_AUDITS + "\")") VXPolicyExportAuditList searchXPolicyExportAudits(
			@Context HttpServletRequest request); @GET @Path("/report") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_REPORT_LOGS + "\")") VXTrxLogList getReportLogs(@Context HttpServletRequest request); @GET @Path("/report/{transactionId}") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_TRANSACTION_REPORT + "\")") VXTrxLogList getTransactionReport(@Context HttpServletRequest request,
			@PathParam("transactionId") String transactionId); @GET @Path("/accessAudit") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_ACCESS_LOGS + "\")") VXAccessAuditList getAccessLogs(@Context HttpServletRequest request); @POST @Path("/resources/grant") @Produces({ "application/xml", "application/json" }) VXPolicy grantPermission(@Context HttpServletRequest request,VXPolicy vXPolicy); @POST @Path("/resources/revoke") @Produces({ "application/xml", "application/json" }) VXPolicy revokePermission(@Context HttpServletRequest request,VXPolicy vXPolicy); @GET @Path("/ugsyncAudits") @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_UGSYNC_AUDITS + "\")") VXUgsyncAuditInfoList getUgsyncAudits(@Context HttpServletRequest request); @GET @Path("/ugsyncAudits/{syncSource}") @Encoded @Produces({ "application/xml", "application/json" }) @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.GET_UGSYNC_AUDITS_BY_SYNCSOURCE + "\")") VXUgsyncAuditInfoList getUgsyncAuditsBySyncSource(@PathParam("syncSource") String syncSource);  }
@Test public void testGetXResourceFile() { File file = new File("testGetXResource"); Response expectedResponse = Response.ok(file, MediaType.APPLICATION_OCTET_STREAM) .header("Content-Disposition", "attachment;filename=" + file.getName()).build(); VXResource vxResource = vxResource(Id); Mockito.when( searchUtil.extractString((HttpServletRequest) Mockito.any(), (SearchCriteria) Mockito.any(), (String) Mockito.any(), (String) Mockito.any(), (String) Mockito.any())) .thenReturn("json"); Mockito.when(assetREST.getXResource(Id)).thenReturn(vxResource); Mockito.when(assetMgr.getXResourceFile(vxResource, "json")).thenReturn(file); Response reponse = assetREST.getXResourceFile(request, Id); Assert.assertEquals(expectedResponse.getStatus(), reponse.getStatus()); Mockito.verify(assetMgr).getXResourceFile(vxResource, "json"); Mockito.verify(searchUtil).extractString((HttpServletRequest) Mockito.any(), (SearchCriteria) Mockito.any(), (String) Mockito.any(), (String) Mockito.any(), (String) Mockito.any()); }