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;
+ }
}