package org.picketlink.authentication.levels.identity; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.picketlink.authentication.UserAlreadyLoggedInException; import org.picketlink.authentication.levels.internal.DefaultLevel; import org.picketlink.idm.model.Account; import org.picketlink.idm.model.basic.User; import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Mockito.when; @RunWith(Parameterized.class) public class DifferentLogInLevelsTestCase extends IdentityTestCase{ @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { 1 , 1 , false}, { 2, 1 , false}, { 1, 2 , true}, }); } private int firstLevel; private int secondLevel; private boolean result; public DifferentLogInLevelsTestCase(int first, int second, boolean res) { firstLevel = first; secondLevel = second; result = res; } @Test public void userAlreadyLoggedInTest(){ when(securityLevelManager.get().resolveSecurityLevel()).thenReturn(new DefaultLevel(firstLevel),new DefaultLevel(secondLevel)); Account acc = new User("Joe"); setAuthenticator(true,acc); identity.login(); assertTrue(identity.getLevel().compareTo(new DefaultLevel(firstLevel))==0); if(result){ identity.login(); assertTrue(identity.getLevel().compareTo(new DefaultLevel(secondLevel))==0); }else{ try{ identity.login(); fail("There were expected expection which did not happen"); }catch(UserAlreadyLoggedInException e){ } } } }