/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.authentication; import java.util.Calendar; import java.util.Date; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import de.rcenvironment.core.authentication.User.Type; /** * Test class for the User. * * @author Alice Zorn */ public class UserTest { /** * Dummy class extending abstract {@link User}. * * @author Alice Zorn */ private class TestUser extends User { private static final long serialVersionUID = -6745646455466320734L; private final String userId; private final String domain; /** * * Constructor. * * @param userId * @param domain */ TestUser(String userId, String domain, int validityInDays){ super(validityInDays); this.userId = userId; this.domain = domain; } @Override public String getUserId() { return userId; } @Override public String getDomain() { return domain; } @Override public Type getType() { return null; } } private TestUser myUser; private int validityInDays = 7; /** * Set up the test. * * @throws Exception if an error occurs. */ @Before public void setUp() throws Exception { myUser = new TestUser("k", "i", validityInDays); } /** * Test if the certificate user is still valid after almost one day (which should be the minimum validity). * */ @Test public void testTimeUntilValidForSuccess() { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.DAY_OF_MONTH, 1); // subtract 10min to ensure validity of the User even if it is only valid for 1 day. final int safetyThreshold = -10; cal.add(Calendar.MINUTE, safetyThreshold); Assert.assertTrue(myUser.getTimeUntilValid().after(cal.getTime())); } /** * Test if the validityInDays input variable is checked for > 0. */ @Test public void testUser(){ try { new TestUser("test", "domain", 0); Assert.fail(); } catch (IllegalArgumentException e){ e = null; } final int validity = -1; try { new TestUser("test", "domain", validity); Assert.fail(); } catch (IllegalArgumentException e){ e = null; } } /** * Test if the certificate user is still valid in context to the RCE-System. */ @Test public void testIsValidForSuccess() { Assert.assertTrue(myUser.isValid()); } /** * Test getValidityInDays. */ @Test public void testGetValidityInDaysForSuccess(){ Assert.assertTrue(myUser.getValidityInDays() == validityInDays); } /** * Test toString. */ @Test public void testToStringForSuccess() { Assert.assertNotNull(myUser.toString()); } /** * Test getTimestamp. */ @Test public void testGetTimestampForSuccess() { final Date now = new Date(); Assert.assertTrue(myUser.getTimeUntilValid().after(now)); } /** * Test Enum Type (only to improve coverage). */ @Test public void testEnumType(){ Type.certificate.toString(); Type.ldap.toString(); } /** * Test if the Users are the same. */ @Test public void testSameForSuccess(){ final User user1 = new TestUser("a", "b", validityInDays); final User user2 = new TestUser("a", "b", validityInDays); final User user3 = new TestUser("c", "d", validityInDays); Assert.assertTrue(user1.same(user2)); Assert.assertFalse(user1.same(user3)); } }