package org.apereo.cas.support.wsfederation.authentication.principal;
import org.apereo.cas.support.wsfederation.AbstractWsFederationTests;
import org.junit.Before;
import org.junit.Test;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import static org.junit.Assert.*;
/**
* Test cases for {@link WsFederationCredential}.
* @author John Gasper
* @since 4.2.0
*/
public class WsFederationCredentialTests extends AbstractWsFederationTests {
private static final String ISSUER = "http://adfs.example.com/adfs/services/trust";
private static final String AUDIENCE = "urn:federation:cas";
private WsFederationCredential standardCred;
@Before
public void setUp() {
standardCred = new WsFederationCredential();
standardCred.setNotBefore(ZonedDateTime.now(ZoneOffset.UTC));
standardCred.setNotOnOrAfter(ZonedDateTime.now(ZoneOffset.UTC).plusHours(1));
standardCred.setIssuedOn(ZonedDateTime.now(ZoneOffset.UTC));
standardCred.setIssuer(ISSUER);
standardCred.setAudience(AUDIENCE);
standardCred.setId("_6257b2bf-7361-4081-ae1f-ec58d4310f61");
standardCred.setRetrievedOn(ZonedDateTime.now(ZoneOffset.UTC).plusSeconds(1));
}
@Test
public void verifyIsValidAllGood() throws Exception {
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertTrue("testIsValidAllGood() - True", result);
}
@Test
public void verifyIsValidBadAudience() throws Exception {
standardCred.setAudience("urn:NotUs");
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertFalse("testIsValidBadAudeience() - False", result);
}
@Test
public void verifyIsValidBadIssuer() throws Exception {
standardCred.setIssuer("urn:NotThem");
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertFalse("testIsValidBadIssuer() - False", result);
}
@Test
public void verifyIsValidEarlyToken() throws Exception {
standardCred.setNotBefore(ZonedDateTime.now(ZoneOffset.UTC).plusDays(1));
standardCred.setNotOnOrAfter(ZonedDateTime.now(ZoneOffset.UTC).plusHours(1).plusDays(1));
standardCred.setIssuedOn(ZonedDateTime.now(ZoneOffset.UTC).plusDays(1));
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertFalse("testIsValidEarlyToken() - False", result);
}
@Test
public void verifyIsValidOldToken() throws Exception {
standardCred.setNotBefore(ZonedDateTime.now(ZoneOffset.UTC).minusDays(1));
standardCred.setNotOnOrAfter(ZonedDateTime.now(ZoneOffset.UTC).plusHours(1).minusDays(1));
standardCred.setIssuedOn(ZonedDateTime.now(ZoneOffset.UTC).minusDays(1));
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertFalse("testIsValidOldToken() - False", result);
}
@Test
public void verifyIsValidExpiredIssuedOn() throws Exception {
standardCred.setIssuedOn(ZonedDateTime.now(ZoneOffset.UTC).minusSeconds(3));
final boolean result = standardCred.isValid(AUDIENCE, ISSUER, 2000);
assertFalse("testIsValidOldToken() - False", result);
}
}