use of ddf.catalog.CatalogFramework in project ddf by codice.
the class CatalogFrameworkImplTest method testFederatedQueryPermissionsNotPermitted.
@Test(expected = FederationException.class)
public void testFederatedQueryPermissionsNotPermitted() throws Exception {
MockEventProcessor eventAdmin = new MockEventProcessor();
MockMemoryProvider provider = new MockMemoryProvider("Provider", "Provider", "v1.0", "DDF", new HashSet<>(), true, new Date());
Map<String, CatalogStore> storeMap = new HashMap<>();
Map<String, FederatedSource> sourceMap = new HashMap<>();
Map<String, Set<String>> securityAttributes = new HashMap<>();
securityAttributes.put("role", Collections.singleton("myRole"));
MockCatalogStore store = new MockCatalogStore("catalogStoreId-1", true, securityAttributes);
storeMap.put(store.getId(), store);
sourceMap.put(store.getId(), store);
CatalogFramework framework = createDummyCatalogFramework(provider, storeMap, sourceMap, eventAdmin);
FilterBuilder builder = new GeotoolsFilterBuilder();
Subject subject = mock(Subject.class);
when(subject.isPermitted(any(KeyValueCollectionPermission.class))).thenReturn(false);
HashMap<String, Serializable> properties = new HashMap<>();
properties.put(SecurityConstants.SECURITY_SUBJECT, subject);
QueryImpl query = new QueryImpl(builder.attribute(Metacard.CONTENT_TYPE).is().like().text("someType"));
QueryRequestImpl request = new QueryRequestImpl(query, false, Collections.singletonList("catalogStoreId-1"), properties);
framework.query(request);
}
use of ddf.catalog.CatalogFramework in project ddf by codice.
the class CatalogFrameworkImplTest method testNoSitesAvailableFederatedQuery.
/**
* Tests that the framework properly throws a catalog exception when there are no sites
* (federated or local) that are available to perform the query.
*
* @throws SourceUnavailableException
*/
@Ignore
@Test(expected = SourceUnavailableException.class)
public void testNoSitesAvailableFederatedQuery() throws SourceUnavailableException {
CatalogFramework framework = this.createDummyCatalogFramework(null, null, null, false);
QueryRequest request = new QueryRequestImpl(null);
try {
framework.query(request);
} catch (UnsupportedQueryException e) {
// we don't even care what the query was
} catch (FederationException e) {
fail();
}
}
use of ddf.catalog.CatalogFramework in project ddf by codice.
the class CatalogFrameworkImplTest method testNullQuery.
/**
* Tests that the framework properly throws a catalog exception when the query being passed in
* is null.
*
* @throws UnsupportedQueryException
*/
@Test(expected = UnsupportedQueryException.class)
public void testNullQuery() throws UnsupportedQueryException {
boolean isAvailable = false;
CatalogProvider provider = new MockMemoryProvider("Provider", "Provider", "v1.0", "DDF", new HashSet<ContentType>(), isAvailable, new Date());
CatalogFramework framework = this.createDummyCatalogFramework(provider, storageProvider, null, true);
try {
framework.query(null);
} catch (FederationException e) {
fail();
} catch (SourceUnavailableException e) {
fail();
}
}
use of ddf.catalog.CatalogFramework in project ddf by codice.
the class TestRestEndpoint method testGetDocumentSourcesSuccess.
/**
* Tests getting source information
*
* @throws Exception
*/
@Test
public void testGetDocumentSourcesSuccess() throws Exception {
final String localSourceId = "local";
final String fed1SourceId = "fed1";
final String fed2SourceId = "fed2";
final String version = "4.0";
final String jsonMimeTypeString = "application/json";
Set<ContentType> contentTypes = new HashSet<ContentType>();
contentTypes.add(new ContentTypeImpl("ct1", "v1"));
contentTypes.add(new ContentTypeImpl("ct2", "v2"));
contentTypes.add(new ContentTypeImpl("ct3", null));
JSONArray contentTypesInJSON = new JSONArray();
for (ContentType ct : contentTypes) {
JSONObject ob = new JSONObject();
ob.put("name", ct.getName());
ob.put("version", ct.getVersion() != null ? ct.getVersion() : "");
contentTypesInJSON.add(ob);
}
Set<SourceDescriptor> sourceDescriptors = new HashSet<SourceDescriptor>();
SourceDescriptorImpl localDescriptor = new SourceDescriptorImpl(localSourceId, contentTypes);
localDescriptor.setVersion(version);
localDescriptor.setAvailable(true);
SourceDescriptorImpl fed1Descriptor = new SourceDescriptorImpl(fed1SourceId, contentTypes);
fed1Descriptor.setVersion(version);
fed1Descriptor.setAvailable(true);
SourceDescriptorImpl fed2Descriptor = new SourceDescriptorImpl(fed2SourceId, null);
fed2Descriptor.setAvailable(true);
sourceDescriptors.add(localDescriptor);
sourceDescriptors.add(fed1Descriptor);
sourceDescriptors.add(fed2Descriptor);
SourceInfoResponse sourceInfoResponse = new SourceInfoResponseImpl(null, null, sourceDescriptors);
CatalogFramework framework = mock(CatalogFramework.class);
when(framework.getSourceInfo(isA(SourceInfoRequestEnterprise.class))).thenReturn(sourceInfoResponse);
RESTEndpoint restEndpoint = new RESTEndpoint(framework);
Response response = restEndpoint.getDocument(null, null);
assertEquals(OK, response.getStatus());
assertEquals(jsonMimeTypeString, response.getMetadata().get("Content-Type").get(0));
String responseMessage = IOUtils.toString((ByteArrayInputStream) response.getEntity());
JSONArray srcList = (JSONArray) new JSONParser().parse(responseMessage);
assertEquals(3, srcList.size());
for (Object o : srcList) {
JSONObject src = (JSONObject) o;
assertEquals(true, src.get("available"));
String id = (String) src.get("id");
if (id.equals(localSourceId)) {
assertThat((Iterable<Object>) src.get("contentTypes"), hasItems(contentTypesInJSON.toArray()));
assertEquals(contentTypes.size(), ((JSONArray) src.get("contentTypes")).size());
assertEquals(version, src.get("version"));
} else if (id.equals(fed1SourceId)) {
assertThat((Iterable<Object>) src.get("contentTypes"), hasItems(contentTypesInJSON.toArray()));
assertEquals(contentTypes.size(), ((JSONArray) src.get("contentTypes")).size());
assertEquals(version, src.get("version"));
} else if (id.equals(fed2SourceId)) {
assertEquals(0, ((JSONArray) src.get("contentTypes")).size());
assertEquals("", src.get("version"));
} else {
fail("Invalid ID returned");
}
}
}
use of ddf.catalog.CatalogFramework in project ddf by codice.
the class TestRestEndpoint method assertExceptionThrown.
protected void assertExceptionThrown(Class<? extends Throwable> klass) throws IngestException, SourceUnavailableException, URISyntaxException {
CatalogFramework framework = mock(CatalogFramework.class);
when(framework.create(isA(CreateRequest.class))).thenThrow(klass);
when(framework.create(isA(CreateStorageRequest.class))).thenThrow(klass);
HttpHeaders headers = createHeaders(Arrays.asList(MediaType.APPLICATION_JSON));
RESTEndpoint rest = new RESTEndpoint(framework);
addMatchingService(rest, Arrays.asList(getSimpleTransformer()));
UriInfo info = givenUriInfo(SAMPLE_ID);
try {
rest.addDocument(headers, info, mock(HttpServletRequest.class), mock(MultipartBody.class), null, new ByteArrayInputStream("".getBytes()));
fail();
} catch (ServerErrorException e) {
if (klass.getName().equals(SourceUnavailableException.class.getName())) {
assertThat(e.getResponse().getStatus(), equalTo(INTERNAL_SERVER_ERROR));
} else if (klass.getName().equals(IngestException.class.getName())) {
assertThat(e.getResponse().getStatus(), equalTo(BAD_REQUEST));
}
}
}
Aggregations