@Test public void testSearchBoth() throws StopProcessingException, PluginExecutionException, UnsupportedQueryException { QueryImpl query = new QueryImpl( filterBuilder.allOf( filterBuilder.attribute(VALIDATION_WARNINGS).is().empty(), filterBuilder.attribute(VALIDATION_WARNINGS).is().equalTo().text("sample"))); QueryRequest returnQuery = metacardValidityCheckerPlugin.process(new QueryRequestImpl(query)); assertThat(filterAdapter.adapt(returnQuery.getQuery(), testValidationQueryDelegate), is(true)); }
@Test public void testSearchNone() throws StopProcessingException, PluginExecutionException, UnsupportedQueryException { QueryImpl query = new QueryImpl(filterBuilder.attribute(Metacard.MODIFIED).is().equalTo().text("sample")); assertThat(filterAdapter.adapt(query, testValidationQueryDelegate), is(false)); QueryRequest returnQuery = metacardValidityCheckerPlugin.process(new QueryRequestImpl(query)); assertThat(filterAdapter.adapt(returnQuery.getQuery(), testValidationQueryDelegate), is(true)); }
private List<QueryRequest> getQueryRequests( Stream<List<QueryMetacardImpl>> queriesGroupedBySource) { final Filter modifiedFilter = filterService.getModifiedDateFilter(calculateQueryTimeInterval()); return queriesGroupedBySource .map(this::queryMetacardsToFilters) .map(filterBuilder::anyOf) .map(filter -> filterBuilder.allOf(modifiedFilter, filter)) .map(this::filterToQuery) .map(this::queryToQueryRequest) .collect(Collectors.toList()); }
/** * Test method for {@link * org.codice.ddf.endpoints.OpenSearchEndpoint#processQuery(java.lang.String, java.lang.String, * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, * java.lang.String, javax.ws.rs.core.UriInfo, java.lang.String, java.lang.String)} . * * <p>This test will verify that the string "local" in the sources passed to * OpenSearchEndpoint.processQuery is replaced with the local site name (in this case the mocked * name "TestSiteName"). The QueryRequest object is checked when the framework.query is called to * retrieve the OpenSearchQuery, which contains the Set of sites. An assertion within the Answer * object for the call framework.query checks that the sites Set is contains the TEST_SITE_NAME. * * @throws URISyntaxException * @throws FederationException * @throws SourceUnavailableException * @throws UnsupportedQueryException * @throws UnsupportedEncodingException * @throws CatalogTransformerException */ @SuppressWarnings("unchecked") @Test public void testProcessQueryForProperHandlingOfSiteNameLOCAL() throws URISyntaxException, UnsupportedQueryException, SourceUnavailableException, FederationException, UnsupportedEncodingException, CatalogTransformerException { // ***Test setup*** final String TEST_SITE_NAME = "TestSiteName"; CatalogFramework mockFramework = mock(CatalogFramework.class); FilterBuilder mockFilterBuilder = mock(FilterBuilder.class); AttributeBuilder mockAB = mock(AttributeBuilder.class); ExpressionBuilder mockEB = mock(ExpressionBuilder.class); ContextualExpressionBuilder mockCEB = mock(ContextualExpressionBuilder.class); Filter mockFilter = mock(Filter.class); when(mockFilterBuilder.attribute(anyString())).thenReturn(mockAB); when(mockAB.is()).thenReturn(mockEB); when(mockEB.like()).thenReturn(mockCEB); when(mockCEB.text(anyString())).thenReturn(mockFilter); String searchTerms = "searchForThis"; // "local" MUST be included String sources = "test, local"; String count = "200"; // dummy UriInfo, not really used functionally UriInfo mockUriInfo = mock(UriInfo.class); URI uri = new URI("test"); when(mockUriInfo.getRequestUri()).thenReturn(uri); MultivaluedMap<String, String> mockMVMap = mock(MultivaluedMap.class); when(mockMVMap.get("subscription")).thenReturn(null); when(mockMVMap.get("interval")).thenReturn(null); when(mockUriInfo.getQueryParameters()).thenReturn(mockMVMap); @SuppressWarnings("unused") BinaryContent mockByteContent = mock(BinaryContent.class); // Check on the sites passed in to framework.query when(mockFramework.query(any(QueryRequest.class))) .thenAnswer( new Answer<Object>() { public Object answer(InvocationOnMock invocation) { QueryRequest queryRequest = (QueryRequest) invocation.getArguments()[0]; // ***Test verification*** // This assert is the whole point of this unit test Assert.assertTrue( ((OpenSearchQuery) queryRequest.getQuery()) .getSiteIds() .contains(TEST_SITE_NAME)); return new QueryResponseImpl(queryRequest); } }); // setup the BinaryContent for the call to Response.ok(...) // This is just needed to get the method to complete, the BinaryContent mockBinaryContent = mock(BinaryContent.class); InputStream is = new ByteArrayInputStream("Test String From InputStream".getBytes("UTF-8")); when(mockBinaryContent.getInputStream()).thenReturn(is); when(mockBinaryContent.getMimeTypeValue()).thenReturn("text/plain"); when(mockFramework.transform(any(QueryResponse.class), anyString(), anyMap())) .thenReturn(mockBinaryContent); OpenSearchEndpoint osEndPoint = new OpenSearchEndpoint(mockFramework, mockFilterBuilder); // Call ddfConfigurationUpdated to set the id values to the site name we want // local to be replaced with Map<String, String> ddfProperties = new HashMap<String, String>(); ddfProperties.put("id", TEST_SITE_NAME); osEndPoint.configurationUpdateCallback(ddfProperties); // ***Test Execution*** osEndPoint.processQuery( searchTerms, null, sources, null, null, count, null, null, null, null, null, null, null, null, null, null, null, null, mockUriInfo, null, null, null); }