Sonarwork
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapperTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapperTest.java new file mode 100644 index 0000000..7f31a76 --- /dev/null +++ b/src/test/java/org/eclipse/openk/contactbasedata/service/util/LdapUserAttributesMapperTest.java
@@ -0,0 +1,72 @@ +package org.eclipse.openk.contactbasedata.service.util; + +import org.eclipse.openk.contactbasedata.ContactBaseDataApplication; +import org.eclipse.openk.contactbasedata.support.MockDataHelper; +import org.eclipse.openk.contactbasedata.viewmodel.LdapUser; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +@SpringBootTest(classes = ContactBaseDataApplication.class) +@ActiveProfiles("test") // Todo: Find a better way to configure the tests +public class LdapUserAttributesMapperTest { + + @Autowired + LdapUserAttributesMapper ldapUserAttributesMapper; + + @Test + public void shouldMapFromAttributesCorrectly() throws NamingException { + Attributes attributes = Mockito.mock(Attributes.class); + + String[] fields = {"uid", "cn", "sn", "givenname", "title", "mail", "department", "phone"}; + + Arrays.stream(fields).forEach( x -> { + Attribute attr = MockDataHelper.mockLdapAttribute('_' + x + "_"); + when(attributes.get(x)).thenReturn(attr); + }); + + LdapUser ldapUser = ldapUserAttributesMapper.mapFromAttributes(attributes); + assertEquals("_uid_", ldapUser.getUid()); + assertEquals("_cn_", ldapUser.getFullName()); + assertEquals("_sn_", ldapUser.getLastName()); + assertEquals("_givenname_", ldapUser.getFirstName()); + assertEquals("_title_", ldapUser.getTitle()); + assertEquals("_mail_", ldapUser.getMail()); + assertEquals("_department_", ldapUser.getDepartment()); + assertEquals("_phone_", ldapUser.getTelephoneNumber()); + + } + + @Test + public void shouldMapFromAttributesEmpty() throws NamingException { + Attributes attributes = Mockito.mock(Attributes.class); + + String[] fields = {"uid", "cn", "sn", "givenname", "title", "mail", "department", "phone"}; + + Arrays.stream(fields).forEach( x -> { + when(attributes.get(x)).thenReturn(null); + }); + + LdapUser ldapUser = ldapUserAttributesMapper.mapFromAttributes(attributes); + assertEquals(null, ldapUser.getUid()); + assertEquals(null, ldapUser.getFullName()); + assertEquals(null, ldapUser.getLastName()); + assertEquals(null, ldapUser.getFirstName()); + assertEquals(null, ldapUser.getTitle()); + assertEquals(null, ldapUser.getMail()); + assertEquals(null, ldapUser.getDepartment()); + assertEquals(null, ldapUser.getTelephoneNumber()); + + } + +}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java index 981f434..911cc30 100644 --- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java +++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -21,9 +21,14 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; import java.sql.Date; import java.util.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class MockDataHelper { public static Version mockVersion() { @@ -766,4 +771,14 @@ list.add( keyCloakUser ); return list; } + + public static Attribute mockLdapAttribute(String value ) { + Attribute attribute = mock( Attribute.class); + try { + when(attribute.get()).thenReturn(value); + } catch (NamingException e) { + return null; + } + return attribute; + } }