Java tutorial
/** * Copyright (c) 2013-2015 by The SeedStack authors. All rights reserved. * * This file is part of SeedStack, An enterprise-oriented full development stack. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.seedstack.seed.security.internal.realms; import static org.assertj.core.api.Assertions.assertThat; import java.util.Collections; import java.util.Set; import org.apache.commons.configuration.PropertiesConfiguration; import org.junit.Before; import org.junit.Test; import org.mockito.internal.util.reflection.Whitebox; import org.seedstack.seed.security.api.AuthenticationInfo; import org.seedstack.seed.security.api.AuthenticationToken; import org.seedstack.seed.security.api.UsernamePasswordToken; import org.seedstack.seed.security.api.exceptions.IncorrectCredentialsException; import org.seedstack.seed.security.api.exceptions.UnknownAccountException; import org.seedstack.seed.security.api.exceptions.UnsupportedTokenException; import org.seedstack.seed.security.api.principals.PrincipalProvider; import org.seedstack.seed.security.api.principals.Principals; import org.seedstack.seed.security.internal.realms.ConfigurationRealm.ConfigurationUser; public class ConfigurationRealmUnitTest { private ConfigurationRealm underTest; private Set<ConfigurationUser> users; String username = "username"; String password = "password"; String role1 = "role1"; String role2 = "role2"; @Before @SuppressWarnings("unchecked") public void before() { underTest = new ConfigurationRealm(); users = (Set<ConfigurationUser>) Whitebox.getInternalState(underTest, "users"); ConfigurationUser user = new ConfigurationUser(username); Whitebox.setInternalState(user, "password", password); user.getRoles().add(role1); user.getRoles().add(role2); users.add(user); users.add(new ConfigurationUser("toto")); } @Test public void getRealmRoles_nominal() { PrincipalProvider<String> identity = Principals.identityPrincipal(username); Set<String> foundRoles = underTest.getRealmRoles(identity, Collections.<PrincipalProvider<?>>emptyList()); assertThat(foundRoles).hasSize(2); assertThat(foundRoles).contains(role1); assertThat(foundRoles).contains(role2); } @Test public void getRealmRoles_returns_empty_if_user_unknown() { String username = "titi"; PrincipalProvider<String> identity = Principals.identityPrincipal(username); Set<String> foundRoles = underTest.getRealmRoles(identity, Collections.<PrincipalProvider<?>>emptyList()); assertThat(foundRoles).isEmpty(); } @Test public void getAuthenticationInfo_nominal() { UsernamePasswordToken token = new UsernamePasswordToken(username, password); AuthenticationInfo authInfo = underTest.getAuthenticationInfo(token); assertThat(authInfo.getIdentityPrincipal().getPrincipal()).isEqualTo("username"); } @Test(expected = IncorrectCredentialsException.class) public void getAuthenticationInfo_throws_exception_if_incorrect_password() { UsernamePasswordToken token = new UsernamePasswordToken(username, ""); underTest.getAuthenticationInfo(token); } @Test(expected = UnknownAccountException.class) public void getAuthenticationInfo_throws_exception_if_null_user() { UsernamePasswordToken token = new UsernamePasswordToken(null, password); underTest.getAuthenticationInfo(token); } @Test(expected = UnsupportedTokenException.class) public void getAuthenticationInfo_throws_exception_if_token_not_compliant() { AuthenticationToken token = new AuthenticationToken() { @Override public Object getPrincipal() { return null; } @Override public Object getCredentials() { return null; } }; underTest.getAuthenticationInfo(token); } @Test public void readConfiguration_empty_props() { underTest.readConfiguration(new PropertiesConfiguration()); } @Test public void readConfiguration_with_users() { PropertiesConfiguration conf = new PropertiesConfiguration(); conf.setProperty("users.Obiwan", "yodarulez, SEED.JEDI"); conf.setProperty("users.Anakin", "imsodark"); underTest.readConfiguration(conf); assertThat(users).hasSize(2); assertThat(users).containsOnly(new ConfigurationUser("Obiwan"), new ConfigurationUser("Anakin")); } }