package nl.minicom.gitolite.manager.models; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.Map; import nl.jqno.equalsverifier.EqualsVerifier; import nl.jqno.equalsverifier.Warning; import nl.minicom.gitolite.manager.git.KeyGenerator; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import com.google.common.collect.Maps; public class UserTest { private static final String NAME = "test-user"; private static final String KEY_NAME = "test-key"; private static String KEY_CONTENTS; @BeforeClass public static void setKeyContents() throws NoSuchAlgorithmException, IOException { KEY_CONTENTS = KeyGenerator.generateRandomPublicKey(); } @Test public void testConstructorWithValidInput() { new User(NAME); } @Test(expected = NullPointerException.class) public void testThatConstructorThrowsNullPointerExceptionWhenNameIsNull() { new User(null); } @Test(expected = NullPointerException.class) public void testThatConstructorThrowsNullPointerExceptionWhenRecorderIsNull() { new User(NAME, null); } @Test(expected = IllegalArgumentException.class) public void testThatConstructorWithEmptyNameThrowsIllegalArgumentException() { new User(""); } @Test public void testAddingKey() { User user = new User(NAME); user.setKey(KEY_NAME, KEY_CONTENTS); Map<String, String> expected = Maps.newTreeMap(); expected.put(KEY_NAME, KEY_CONTENTS); Assert.assertEquals(expected, user.getKeys()); } @Test(expected = NullPointerException.class) public void testAddingKeyWithNameNull() { User user = new User(NAME); user.setKey(null, KEY_CONTENTS); } @Test(expected = NullPointerException.class) public void testAddingKeyWithContentNull() { User user = new User(NAME); user.setKey("", null); } @Test public void testOverridingKey() throws IOException, NoSuchAlgorithmException { String newKey = KeyGenerator.generateRandomPublicKey(); User user = new User(NAME); user.setKey(KEY_NAME, KEY_CONTENTS); user.setKey(KEY_NAME, newKey); Map<String, String> expected = Maps.newTreeMap(); expected.put(KEY_NAME, newKey); Assert.assertEquals(expected, user.getKeys()); } @Test public void testRemovingKey() { User user = new User(NAME); user.setKey(KEY_NAME, KEY_CONTENTS); user.removeKey(KEY_NAME); Map<String, String> expected = Maps.newTreeMap(); Assert.assertEquals(expected, user.getKeys()); } @Test public void testEqualsMethod() { EqualsVerifier.forClass(User.class).suppress(Warning.STRICT_INHERITANCE).verify(); } }