package org.infinispan.query.distributed;
import java.security.PrivilegedAction;
import javax.security.auth.Subject;
import org.infinispan.security.Security;
import org.infinispan.test.TestingUtil;
import org.junit.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "query.distributed.SecureMassIndexingTest")
public class SecureMassIndexingTest extends DistributedMassIndexingTest {
private static final Subject ADMIN = TestingUtil.makeSubject("admin");
@Override
protected String getConfigurationFile() {
return "mass-index-with-security.xml";
}
@Override
protected void createCacheManagers() throws Throwable {
runAs(ADMIN, super::createCacheManagers);
}
@AfterMethod
@Override
protected void clearContent() throws Throwable {
runAs(ADMIN, () -> super.clearContent());
}
@Override
public void testPartiallyReindex() throws Exception {
runAs(ADMIN, super::testPartiallyReindex);
}
@Override
public void testReindexing() throws Exception {
runAs(ADMIN, super::testReindexing);
}
interface TestExecution {
void apply() throws Throwable;
}
private void runAs(Subject subject, TestExecution execution) {
Security.doAs(subject, new PrivilegedAction<Void>() {
@Override
public Void run() {
try {
execution.apply();
} catch (Throwable e) {
e.printStackTrace();
Assert.fail();
}
return null;
}
});
}
}