diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
index b420f23..7980bca 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
@@ -49,8 +49,8 @@
         // public client plugin
         JsonNode clientInfo = retrieveClientInfo(publicClientId, "system");
         assertEquals(publicClientId, clientInfo.at("/client_id").asText());
-        assertEquals(clientInfo.at("/client_name").asText(),
-                "public client plugin with redirect uri");
+        assertEquals("public client plugin with redirect uri",
+            clientInfo.at("/client_name").asText());
         assertNotNull(clientInfo.at("/client_description"));
         assertNotNull(clientInfo.at("/client_url"));
         assertEquals("PUBLIC", clientInfo.at("/client_type").asText());
@@ -59,8 +59,8 @@
         clientInfo = retrieveClientInfo(confidentialClientId, "system");
         assertEquals(confidentialClientId,
                 clientInfo.at("/client_id").asText());
-        assertEquals(clientInfo.at("/client_name").asText(),
-                "non super confidential client");
+        assertEquals("non super confidential client",
+            clientInfo.at("/client_name").asText());
         assertNotNull(clientInfo.at("/client_url"));
         assertNotNull(clientInfo.at("/redirect_uri"));
         assertEquals(false, clientInfo.at("/super").asBoolean());
@@ -102,9 +102,9 @@
         Response response = registerClient(username, clientJson);
         String entity = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(node.at("/error_description").asText(),
-                "client_name must contain at least 3 characters");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("client_name must contain at least 3 characters",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -116,9 +116,9 @@
         Response response = registerClient(username, clientJson);
         String entity = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(node.at("/error_description").asText(),
-                "client_name must contain at least 3 characters");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("client_name must contain at least 3 characters",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -130,9 +130,9 @@
         Response response = registerClient(username, clientJson);
         String entity = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(node.at("/error_description").asText(),
-                "client_name is null");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("client_name is null",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -144,9 +144,9 @@
         Response response = registerClient(username, clientJson);
         String entity = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(node.at("/error_description").asText(),
-                "client_description is null");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("client_description is null",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -158,9 +158,9 @@
         Response response = registerClient(username, clientJson);
         String entity = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(node.at("/error_description").asText(),
-                "client_type is null");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("client_type is null",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -201,7 +201,7 @@
         clientJson.setRefreshTokenExpiry(31535000);
         Response response = registerClient(username, clientJson);
         JsonNode node = JsonUtils.readTree(response.readEntity(String.class));
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -230,9 +230,9 @@
         clientJson.setRefreshTokenExpiry(31537000);
         Response response = registerClient(username, clientJson);
         JsonNode node = JsonUtils.readTree(response.readEntity(String.class));
-        assertEquals(node.at("/error_description").asText(),
-                "Maximum refresh token expiry is 31536000 seconds (1 year)");
-        assertEquals(node.at("/error").asText(), "invalid_request");
+        assertEquals("Maximum refresh token expiry is 31536000 seconds (1 year)",
+            node.at("/error_description").asText());
+        assertEquals("invalid_request", node.at("/error").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
     }
 
@@ -258,7 +258,7 @@
             throws KustvaktException {
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(OAuth2Error.INVALID_REQUEST, node.at("/error").asText());
-        assertEquals(node.at("/error_description").asText(), "Invalid URL");
+        assertEquals("Invalid URL", node.at("/error_description").asText());
         assertEquals(Status.BAD_REQUEST.getStatusCode(), status);
     }
 
@@ -299,7 +299,7 @@
         Response response = requestTokenWithAuthorizationCodeAndForm(clientId,
                 clientSecret, code);
         JsonNode node = JsonUtils.readTree(response.readEntity(String.class));
-        assertEquals(node.at("/scope").asText(), "match_info search");
+        assertEquals("match_info search", node.at("/scope").asText());
         String accessToken = node.at("/access_token").asText();
         OAuth2ClientJson clientJson = createOAuth2ClientJson("R client",
                 OAuth2ClientType.PUBLIC, null);
@@ -312,8 +312,8 @@
         node = JsonUtils.readTree(entity);
         assertEquals(StatusCodes.AUTHORIZATION_FAILED,
                 node.at("/errors/0/0").asInt());
-        assertEquals(node.at("/errors/0/1").asText(),
-                "Scope register_client is not authorized");
+        assertEquals("Scope register_client is not authorized",
+            node.at("/errors/0/1").asText());
         assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
     }
 
@@ -416,8 +416,8 @@
         node = JsonUtils.readTree(response.readEntity(String.class));
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals(node.at("/errors/0/1").asText(),
-                "Access token is invalid");
+        assertEquals("Access token is invalid",
+            node.at("/errors/0/1").asText());
     }
 
     private void testDeregisterPublicClientMissingUserAuthentication (
@@ -468,8 +468,8 @@
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(OAuth2Error.INVALID_REQUEST, node.at("/error").asText());
-        assertEquals(node.at("/error_description").asText(),
-                "Operation is not allowed for public clients");
+        assertEquals("Operation is not allowed for public clients",
+            node.at("/error_description").asText());
     }
 
     private String testResetConfidentialClientSecret (String clientId,
@@ -513,9 +513,9 @@
         assertEquals(2, node.size());
         assertEquals(confidentialClientId, node.at("/0/client_id").asText());
         assertEquals(publicClientId, node.at("/1/client_id").asText());
-        assertEquals(node.at("/0/client_name").asText(),
-                "non super confidential client");
-        assertEquals(node.at("/0/client_type").asText(), "CONFIDENTIAL");
+        assertEquals("non super confidential client",
+            node.at("/0/client_name").asText());
+        assertEquals("CONFIDENTIAL", node.at("/0/client_type").asText());
         assertFalse(node.at("/0/client_url").isMissingNode());
         assertFalse(node.at("/0/client_description").isMissingNode());
     }
@@ -547,7 +547,7 @@
         JsonNode node = listUserClients(username,"");
         assertEquals(1, node.size());
         assertEquals(clientId, node.at("/0/client_id").asText());
-        assertEquals(node.at("/0/client_name").asText(), "OAuth2ClientTest");
+        assertEquals("OAuth2ClientTest", node.at("/0/client_name").asText());
         assertEquals(OAuth2ClientType.CONFIDENTIAL.name(),
                 node.at("/0/client_type").asText());
         assertNotNull(node.at("/0/client_description"));
@@ -684,12 +684,12 @@
                         ContentType.APPLICATION_FORM_URLENCODED)
                 .post(Entity.form(form));
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
-        assertEquals(response.readEntity(String.class), "SUCCESS");
+        assertEquals("SUCCESS", response.readEntity(String.class));
         response = searchWithAccessToken(accessToken);
         node = JsonUtils.readTree(response.readEntity(String.class));
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals(node.at("/errors/0/1").asText(),
-                "Access token is invalid");
+        assertEquals("Access token is invalid",
+            node.at("/errors/0/1").asText());
     }
 }
