@Override
public void runTestAsSubject() throws Exception {
String requestorUserName = ADMIN_USER;
Set<String> requestorUserGroupNames = Sets.newHashSet(ADMIN_GROUP);
String testGroupName = "g1";
String roleName = "admin_r";
setLocalGroupMapping(requestorUserName, requestorUserGroupNames);
setLocalGroupMapping(requestorUserName, Sets.newHashSet(testGroupName));
writePolicyFile();
client.dropRoleIfExists(requestorUserName, roleName, SOLR);
client.createRole(requestorUserName, roleName, SOLR);
client.grantRoleToGroups(requestorUserName, roleName, SOLR, Sets.newHashSet(testGroupName));
Set<TSentryRole> roles = client.listUserRoles(requestorUserName,SOLR);
assertEquals("Incorrect number of roles", 1, roles.size());
for (TSentryRole role:roles) {
assertTrue(role.getRoleName(), role.getRoleName().equalsIgnoreCase(roleName));
assertTrue(role.getGroups().size() == 1);
for (String group :role.getGroups()) {
assertEquals(testGroupName, group);
}
}
client.revokeRoleFromGroups(requestorUserName, roleName, SOLR, Sets.newHashSet(testGroupName));
roles = client.listUserRoles(requestorUserName,SOLR);
assertEquals("Incorrect number of roles", 0, roles.size());
client.dropRole(requestorUserName, roleName, SOLR);
}});
}