@Test
public void testCrossNSService() throws Exception {
createAuthNamespace();
ApplicationId appId = AUTH_NAMESPACE.app(CrossNsDatasetAccessApp.APP_NAME);
Map<EntityId, Set<Action>> neededPrivileges = ImmutableMap.<EntityId, Set<Action>>builder()
.put(appId, EnumSet.of(Action.ADMIN))
.put(AUTH_NAMESPACE.artifact(CrossNsDatasetAccessApp.class.getSimpleName(), "1.0-SNAPSHOT"),
EnumSet.of(Action.ADMIN))
.build();
setUpPrivilegeAndRegisterForDeletion(ALICE, neededPrivileges);
ProgramId programId = appId.service(CrossNsDatasetAccessApp.SERVICE_NAME);
cleanUpEntities.add(programId);
grantAndAssertSuccess(programId, BOB, EnumSet.of(Action.EXECUTE));
ApplicationManager appManager = deployApplication(AUTH_NAMESPACE, CrossNsDatasetAccessApp.class);
SecurityRequestContext.setUserId(ALICE.getName());
ServiceManager serviceManager = appManager.getServiceManager(CrossNsDatasetAccessApp.SERVICE_NAME);
testSystemDatasetAccessFromService(serviceManager);
testCrossNSDatasetAccessFromService(serviceManager);
}