@Test
public void retrieveModules() {
final List<?> res = resources.client().target("/modules").request().get(
List.class);
final HashSet<?> ids = new HashSet<>(res);
final List<ModuleInfo> mInfos = ctx.getService(ModuleService.class)
.getModules();
for (final ModuleInfo mInfo : mInfos) {
final String id = ((Identifiable) mInfo).getIdentifier();
assertTrue(ids.contains(id));
ids.remove(id);
}
assertTrue(ids.isEmpty());
}
@Test
public void getWidget() {
final String[] ids = { "command:net.imagej.server.external.ScriptEval",
"command:net.imagej.server.ModulesResourceTest$Bar" };
for (final String id : ids) {
final String response = resources.client().target("/modules/" + id)
.request().get(String.class);
String expected;
try {
expected = jsonService.parseObject(ctx.getService(ModuleService.class)
.getModuleById(id));
if (!expected.equals(response)) {
System.out.println("Expected:" + expected);
System.out.println("Response:" + response);
}
// Convert JSON strings to Java collections, for easier interrogation.
final Map<?, ?> expectedMap = jsonToMap(expected);
final Map<?, ?> responseMap = jsonToMap(response);
// Check that extra information is present in actual response.
// Remove the extra fields, so that we can compare more easily.
final String[] extraFields = {"isResolved", "startingValue"};
for (final Object input : (Iterable<?>) responseMap.get("inputs")) {
final Map<?, ?> inputMap = (Map<?, ?>) input;
for (final String field : extraFields) {
assertTrue(inputMap.containsKey(field));
inputMap.remove(field);
}
}
// Assert JSON objects are now equal.
assertEquals(expectedMap, responseMap);
}
catch (JsonProcessingException exc) {
fail(exc.getMessage());
}
}
}