package org.lognavigator.service;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
import org.lognavigator.bean.LogAccessConfig;
import org.lognavigator.bean.LogAccessConfig.LogAccessType;
import org.lognavigator.exception.AuthorizationException;
import org.lognavigator.service.AuthorizationService;
import org.lognavigator.service.DefaultAuthorizationService;
import org.springframework.security.authentication.TestingAuthenticationToken;
public class DefaultAuthorizationServiceTest {
private AuthorizationService authorizationService = new DefaultAuthorizationService();
@Test
public void testCheckUserAuthorizationFor_Authorized() throws Exception {
// given
LogAccessConfig logAccessConfig = new LogAccessConfig("log-with-onerole-authorized", LogAccessType.LOCAL, "localhost", "/log");
logAccessConfig.setAuthorizedRoles(Arrays.asList("onerole"));
TestingAuthenticationToken authenticatedUser = new TestingAuthenticationToken("anyuser", null, "onerole");
// when
authorizationService.checkUserAuthorizationFor(logAccessConfig, authenticatedUser);
// then
// No AuthorizationException
}
@Test(expected=AuthorizationException.class)
public void testCheckUserAuthorizationFor_NotAuthorized() throws Exception {
// given
LogAccessConfig logAccessConfig = new LogAccessConfig("log-with-onerole-authorized", LogAccessType.LOCAL, "localhost", "/log");
logAccessConfig.setAuthorizedRoles(Arrays.asList("onerole"));
TestingAuthenticationToken authenticatedUser = new TestingAuthenticationToken("anyuser", null, "not-authorized-role");
// when
authorizationService.checkUserAuthorizationFor(logAccessConfig, authenticatedUser);
// then
// raise AuthorizationException
}
@Test
public void testGetAuthorizedLogAccessConfigs() throws Exception {
// given
Set<LogAccessConfig> allLogAccessConfigs = new HashSet<LogAccessConfig>();
LogAccessConfig logAccessConfig = new LogAccessConfig("log-with-onerole-authorized", LogAccessType.LOCAL, "localhost", "/log");
logAccessConfig.setAuthorizedRoles(Arrays.asList("onerole"));
allLogAccessConfigs.add(logAccessConfig);
logAccessConfig = new LogAccessConfig("log-with-oneuser-authorized", LogAccessType.LOCAL, "localhost", "/log");
logAccessConfig.setAuthorizedUsers(Arrays.asList("oneuser"));
allLogAccessConfigs.add(logAccessConfig);
TestingAuthenticationToken authenticatedUser = new TestingAuthenticationToken("anyuser", null, "onerole");
// when
Set<LogAccessConfig> authorizedLogAccessConfigs = authorizationService.getAuthorizedLogAccessConfigs(allLogAccessConfigs, authenticatedUser);
// then
assertEquals(1, authorizedLogAccessConfigs.size());
assertEquals("log-with-onerole-authorized", authorizedLogAccessConfigs.iterator().next().getId());
}
}