package org.synyx.urlaubsverwaltung.security; import org.junit.Assert; import org.junit.Test; import java.util.List; import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Consumer; /** * @author Aljona Murygina - murygina@synyx.de */ public class LdapUserTest { @Test public void ensureCanBeInitializedWithEmptyAttributes() { LdapUser ldapUser = new LdapUser("username", Optional.<String>empty(), Optional.<String>empty(), Optional.<String>empty()); Assert.assertEquals("Wrong username", "username", ldapUser.getUsername()); Assert.assertEquals("First name should be empty", Optional.<String>empty(), ldapUser.getFirstName()); Assert.assertEquals("Last name should be empty", Optional.<String>empty(), ldapUser.getLastName()); Assert.assertEquals("Email should be empty", Optional.<String>empty(), ldapUser.getEmail()); } @Test public void ensureCanBeInitializedWithAttributes() { LdapUser ldapUser = new LdapUser("username", Optional.of("Max"), Optional.of("Mustermann"), Optional.of("max@firma.test")); Assert.assertEquals("Wrong username", "username", ldapUser.getUsername()); BiConsumer<Optional<String>, String> assertIsSet = (optional, value) -> { Assert.assertTrue("Should be set", optional.isPresent()); Assert.assertEquals("Wrong value", value, optional.get()); }; assertIsSet.accept(ldapUser.getFirstName(), "Max"); assertIsSet.accept(ldapUser.getLastName(), "Mustermann"); assertIsSet.accept(ldapUser.getEmail(), "max@firma.test"); } @Test public void ensureMemberOfInformationIsOptional() { LdapUser ldapUser = new LdapUser("username", Optional.of("Max"), Optional.of("Mustermann"), Optional.of("max@firma.test")); List<String> memberOf = ldapUser.getMemberOf(); Assert.assertNotNull("Should not be null", memberOf); Assert.assertTrue("Should be empty", memberOf.isEmpty()); } @Test public void ensureCanBeInitializedWithAttributesAndMemberOfInformation() { LdapUser ldapUser = new LdapUser("username", Optional.of("Max"), Optional.of("Mustermann"), Optional.of("max@firma.test"), "GroupA", "GroupB"); List<String> memberOf = ldapUser.getMemberOf(); Assert.assertNotNull("Should not be null", memberOf); Assert.assertEquals("Wrong number of memberOf elements", 2, memberOf.size()); Assert.assertTrue("Missing memberOf element", memberOf.contains("GroupA")); Assert.assertTrue("Missing memberOf element", memberOf.contains("GroupB")); } @Test public void ensureMemberOfListIsUnmodifiable() { LdapUser ldapUser = new LdapUser("username", Optional.of("Max"), Optional.of("Mustermann"), Optional.of("max@firma.test"), "GroupA", "GroupB"); List<String> memberOf = ldapUser.getMemberOf(); Assert.assertNotNull("Should not be null", memberOf); try { memberOf.add("Foo"); Assert.fail("List should be unmodifiable!"); } catch (UnsupportedOperationException ex) { // Expected } } @Test public void ensureThrowsIfInitializedWithEmptyUsername() { Consumer<String> assertThrowsOnEmptyUsername = (username) -> { try { new LdapUser(username, Optional.<String>empty(), Optional.<String>empty(), Optional.<String>empty()); Assert.fail("Should throw on empty username!"); } catch (IllegalArgumentException ex) { // Expected } }; assertThrowsOnEmptyUsername.accept(null); assertThrowsOnEmptyUsername.accept(""); } }