diff --git a/src/test/java/de/ids_mannheim/korap/authentication/LdapAuth3Test.java b/src/test/java/de/ids_mannheim/korap/authentication/LdapAuth3Test.java
index dfdeb1c..e052db2 100644
--- a/src/test/java/de/ids_mannheim/korap/authentication/LdapAuth3Test.java
+++ b/src/test/java/de/ids_mannheim/korap/authentication/LdapAuth3Test.java
@@ -198,48 +198,46 @@
 
     @Test
     public void gettingMailAttributeForUid () throws LDAPException {
-        assertEquals(LdapAuth3.getEmail("testuser", TEST_LDAP_CONF),
-                "testuser@example.com");
-        assertEquals(LdapAuth3.getEmail("testuser2", TEST_LDAPS_CONF),
-                "peter@example.org");
+        assertEquals("testuser@example.com",
+            LdapAuth3.getEmail("testuser", TEST_LDAP_CONF));
+        assertEquals("peter@example.org",
+            LdapAuth3.getEmail("testuser2", TEST_LDAPS_CONF));
         assertEquals(null, LdapAuth3.getEmail("non-exsting", TEST_LDAPS_CONF));
     }
 
     @Test
     public void gettingUsernameForEmail () throws LDAPException {
-        assertEquals(
-                LdapAuth3.getUsername("testuser@example.com", TEST_LDAP_CONF),
-                "idsTestUser");
-        assertEquals(
-                LdapAuth3.getUsername("peter@example.org", TEST_LDAPS_CONF),
-                "testuser2");
+        assertEquals("idsTestUser",
+            LdapAuth3.getUsername("testuser@example.com", TEST_LDAP_CONF));
+        assertEquals("testuser2",
+            LdapAuth3.getUsername("peter@example.org", TEST_LDAPS_CONF));
         assertEquals(null,
                 LdapAuth3.getUsername("non-exsting", TEST_LDAPS_CONF));
-        assertEquals(LdapAuth3.getUsername("testUser2", TEST_LDAPS_CONF),
-                "testuser2");
+        assertEquals("testuser2",
+            LdapAuth3.getUsername("testUser2", TEST_LDAPS_CONF));
         // login with uid, get idsC2Profile username
-        assertEquals(LdapAuth3.getUsername("testUser", TEST_LDAPS_CONF),
-                "idsTestUser");
+        assertEquals("idsTestUser",
+            LdapAuth3.getUsername("testUser", TEST_LDAPS_CONF));
     }
 
     @Test
     public void gettingMailAttributeForNotRegisteredUserWorks ()
             throws LDAPException {
-        assertEquals(LdapAuth3.getEmail("not_registered_user", TEST_LDAP_CONF),
-                "not_registered_user@example.com");
+        assertEquals("not_registered_user@example.com",
+            LdapAuth3.getEmail("not_registered_user", TEST_LDAP_CONF));
     }
 
     @Test
     public void gettingMailAttributeForBlockedUserWorks ()
             throws LDAPException {
-        assertEquals(LdapAuth3.getEmail("nameOfBlockedUser", TEST_LDAP_CONF),
-                "nameOfBlockedUser@example.com");
+        assertEquals("nameOfBlockedUser@example.com",
+            LdapAuth3.getEmail("nameOfBlockedUser", TEST_LDAP_CONF));
     }
 
     @Test
     public void canLoadLdapConfig () {
         LDAPConfig ldapConfig = new LDAPConfig(TEST_LDAPS_CONF);
         assertEquals(3269, ldapConfig.port);
-        assertEquals(ldapConfig.host, "localhost");
+        assertEquals("localhost", ldapConfig.host);
     }
 }
