/**
*
*/
package org.minnal.security;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
import org.minnal.core.Application;
import org.minnal.core.config.ApplicationConfiguration;
import org.minnal.security.config.SecurityAware;
import org.minnal.security.config.SecurityConfiguration;
import org.minnal.security.filter.AuthenticationFilter;
import org.minnal.security.filter.CallbackFilter;
import org.minnal.security.filter.SecurityContextFilter;
import org.pac4j.core.client.Client;
import org.pac4j.http.client.BasicAuthClient;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author ganeshs
*
*/
public class SecurityPluginTest {
private SecurityPlugin plugin;
private String callbackUrl = "/callback";
private Client[] clients = new Client[] {new BasicAuthClient()};
@BeforeMethod
public void setup() {
plugin = new SecurityPlugin(callbackUrl, clients);
}
@Test
public void shouldInitPlugin() {
Application application = mock(Application.class);
SecureApplicationConfiguration securityAware = mock(SecureApplicationConfiguration.class);
ResourceConfig resourceConfig = mock(ResourceConfig.class);
when(application.getConfiguration()).thenReturn(securityAware);
when(application.getResourceConfig()).thenReturn(resourceConfig);
plugin.init(application);
verify(application, atLeast(1)).addFilter(any(SecurityContextFilter.class));
verify(application, atLeast(1)).addFilter(any(AuthenticationFilter.class));
verify(application, atLeast(1)).addFilter(any(CallbackFilter.class));
verify(resourceConfig).register(RolesAllowedDynamicFeature.class);
}
private static class SecureApplicationConfiguration extends ApplicationConfiguration implements SecurityAware {
@Override
public SecurityConfiguration getSecurityConfiguration() {
return null;
}
@Override
public void setSecurityConfiguration(SecurityConfiguration configuration) {
}
}
}