package org.jolokia.restrictor;
import org.jolokia.config.ConfigKey;
import org.jolokia.config.Configuration;
import org.jolokia.util.LogHandler;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
import java.util.ArrayList;
import java.util.Collections;
/**
* Created by nevenr on 11/1/15.
*/
public class RestrictorFactoryTest {
private final LogHandler dummyLogHandler = createDummyLogHandler();
@Test
public void testAllowAllRestrictor() throws Exception {
Configuration config = getConfig();
Restrictor restrictor = RestrictorFactory.createRestrictor(config, dummyLogHandler);
assertTrue(restrictor.getClass().isAssignableFrom(AllowAllRestrictor.class));
}
@Test
public void testDenyAllRestrictor() throws Exception {
Configuration config = getConfig(ConfigKey.POLICY_LOCATION, "file:///some_non_existing_file.xml");
Restrictor restrictor = RestrictorFactory.createRestrictor(config, dummyLogHandler);
assertTrue(restrictor.getClass().isAssignableFrom(DenyAllRestrictor.class));
}
@Test
public void testPolicyRestrictor() throws Exception {
Configuration config = getConfig(ConfigKey.POLICY_LOCATION, "classpath:/access-restrictor-factory-test.xml");
Restrictor restrictor = RestrictorFactory.createRestrictor(config, dummyLogHandler);
assertTrue(restrictor.getClass().isAssignableFrom(PolicyRestrictor.class));
}
@Test
public void testCustomRestrictor() throws Exception {
Configuration config = getConfig(ConfigKey.RESTRICTOR_CLASS, "org.jolokia.restrictor.TestRestrictor");
Restrictor restrictor = RestrictorFactory.createRestrictor(config, dummyLogHandler);
assertTrue(restrictor.getClass().isAssignableFrom(TestRestrictor.class));
}
private Configuration getConfig(Object... extra) {
ArrayList list = new ArrayList();
Collections.addAll(list, extra);
return new Configuration(list.toArray());
}
private LogHandler createDummyLogHandler() {
return new LogHandler() {
public void debug(String message) {
System.out.printf("DEBUG> %s%n", message);
}
public void info(String message) {
System.out.printf("INFO> %s%n", message);
}
public void error(String message, Throwable t) {
System.out.printf("ERROR> %s%n", message);
System.out.printf("ERROR exception> %s%n", t.getMessage());
}
};
}
}