Merge branch 'DEVELOP_BE' of ssh://git.eclipse.org:29418/elogbook/authandauth into DEVELOP_BE
diff --git a/pom.xml b/pom.xml
index 3467b1a..3151c18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<groupId>openk.pta.de</groupId>
<artifactId>portal</artifactId>
- <version>1.0.1</version>
+ <version>1.0.2</version>
<packaging>war</packaging>
<properties>
diff --git a/src/main/asciidoc/interfaceDocumentation/auth_n_auth_interfaceDocumentation.adoc b/src/main/asciidoc/interfaceDocumentation/auth_n_auth_interfaceDocumentation.adoc
index d72f38e..8db2339 100644
--- a/src/main/asciidoc/interfaceDocumentation/auth_n_auth_interfaceDocumentation.adoc
+++ b/src/main/asciidoc/interfaceDocumentation/auth_n_auth_interfaceDocumentation.adoc
@@ -348,5 +348,44 @@
*Remarks*:
+=== Get health state
+This service returns the health state of this module.
+
+*URL:* /healthcheck/pretty=true
+
+*Method:* GET
+
+
+
+*Request-Headers*:
+
+* Authorization – none
+
+
+*Produces*: application/json
+
+*Response*:
+
+If the module is healthy then...
+[source,json]
+----
+{"Keycloak present":{"healthy":true}}
+----
+
+If the module is *not* healthy...
+[source,json]
+----
+{
+ "Keycloak present":
+ {
+ "healthy":false,
+ "message":"<Error message>"
+ }
+}
+----
+
+
+*Remarks*:
+
diff --git a/src/main/java/org/eclipse/openk/portal/auth2/model/KeyCloakUser.java b/src/main/java/org/eclipse/openk/portal/auth2/model/KeyCloakUser.java
index 4b4d853..d33c9b2 100644
--- a/src/main/java/org/eclipse/openk/portal/auth2/model/KeyCloakUser.java
+++ b/src/main/java/org/eclipse/openk/portal/auth2/model/KeyCloakUser.java
@@ -39,13 +39,8 @@
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
- public boolean getEnabled() { return enabled; }
- public void setEnabled(boolean enabled) { this.enabled = enabled; }
-
- public boolean getTotp() { return totp; }
public void setTotp(boolean totp) { this.totp = totp; }
- public boolean getEmailVerified() { return emailVerified; }
public void setEmailVerified(boolean emailVerified) { this.emailVerified = emailVerified; }
public String getFirstName() { return firstName; }
diff --git a/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java b/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
index be182d5..404045d 100644
--- a/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
+++ b/src/main/java/org/eclipse/openk/portal/auth2/util/JwtHelper.java
@@ -28,7 +28,6 @@
import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.util.Base64;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.openk.portal.common.BackendConfig;
@@ -45,11 +44,20 @@
public static JwtToken login(String user, String password) throws PortalInternalServerError {
String token = sendPost(BackendConfig.getInstance().getAuthServerUrl() + "auth/realms/" +
- BackendConfig.getInstance().getKeycloakRealm() + "/protocol/openid-connect/token",
- "username=" + user + "&password=" + password + "&client_id=" + BackendConfig.getInstance().getKeycloakClient() + "&grant_type=password");
+ BackendConfig.getInstance().getKeycloakRealm() + "/protocol/openid-connect/token",
+ "username=" + user + "&password=" + password + "&client_id="
+ + BackendConfig.getInstance().getKeycloakClient() + "&grant_type=password");
return getJwtTokenFromJson(token);
}
+ public static boolean serviceAvailable() throws PortalInternalServerError {
+ String jsonRet = sendGet(BackendConfig.getInstance().getAuthServerUrl() + "auth/realms/" +
+ BackendConfig.getInstance().getKeycloakRealm(), "", null);
+
+ return jsonRet != null ? jsonRet.contains("realm") && jsonRet.contains(BackendConfig.getInstance().getKeycloakRealm())
+ : false;
+ }
+
public static List<KeyCloakUser> getUsers(JwtToken jwtToken, int maxUsers) throws PortalInternalServerError {
String users = sendGet(BackendConfig.getInstance().getAuthServerUrl() + "auth/admin/realms/" + BackendConfig.getInstance().getKeycloakRealm() + "/users?max="+maxUsers,
MediaType.APPLICATION_JSON, jwtToken.getAccessToken());
diff --git a/src/main/java/org/eclipse/openk/portal/controller/BackendController.java b/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
index e46a4c5..caf8388 100644
--- a/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
+++ b/src/main/java/org/eclipse/openk/portal/controller/BackendController.java
@@ -16,10 +16,8 @@
import org.eclipse.openk.portal.auth2.model.JwtToken;
import org.eclipse.openk.portal.auth2.model.KeyCloakUser;
import org.eclipse.openk.portal.auth2.util.JwtHelper;
-import org.eclipse.openk.portal.common.BackendConfig;
import org.eclipse.openk.portal.common.JsonGeneratorBase;
import org.eclipse.openk.portal.exceptions.PortalException;
-import org.eclipse.openk.portal.exceptions.PortalInternalServerError;
import org.eclipse.openk.portal.exceptions.PortalUnauthorized;
import org.eclipse.openk.portal.viewmodel.LoginCredentials;
import org.eclipse.openk.portal.viewmodel.UserCache;
diff --git a/src/main/java/org/eclipse/openk/portal/controller/ControllerImplementations.java b/src/main/java/org/eclipse/openk/portal/controller/ControllerImplementations.java
index c343d29..8d3fb8e 100644
--- a/src/main/java/org/eclipse/openk/portal/controller/ControllerImplementations.java
+++ b/src/main/java/org/eclipse/openk/portal/controller/ControllerImplementations.java
@@ -29,8 +29,6 @@
public static class GetUsers extends BackendInvokable {
- public GetUsers() {}
-
@Override
public Response invoke() throws PortalException {
List<KeyCloakUser> keyCloakUserList = UserCache.getInstance().getKeyCloakUsers();
diff --git a/src/main/java/org/eclipse/openk/portal/health/base/HealthCheck.java b/src/main/java/org/eclipse/openk/portal/health/base/HealthCheck.java
new file mode 100644
index 0000000..f6bc66c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/portal/health/base/HealthCheck.java
@@ -0,0 +1,17 @@
+/*
+ ******************************************************************************
+ * Copyright © 2017-2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.portal.health.base;
+
+public abstract class HealthCheck {
+
+ protected abstract Result check() throws Exception; // NOSONAR
+}
diff --git a/src/main/java/org/eclipse/openk/portal/health/base/HealthChecker.java b/src/main/java/org/eclipse/openk/portal/health/base/HealthChecker.java
new file mode 100644
index 0000000..34ebd90
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/portal/health/base/HealthChecker.java
@@ -0,0 +1,47 @@
+/*
+ ******************************************************************************
+ * Copyright © 2017-2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+*/
+package org.eclipse.openk.portal.health.base;
+
+import org.apache.log4j.Logger;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class HealthChecker {
+ private static final Logger logger = Logger.getLogger(HealthChecker.class);
+
+ private List<HealthCheck> registeredHealthChecks = new LinkedList<>();
+ private Map<HealthCheck, String> namingMap = new HashMap<>();
+
+ public void register( String title, HealthCheck hc ) {
+ namingMap.put(hc, title);
+ registeredHealthChecks.add(hc);
+ }
+
+ public List<NamedHealthCheckResult> performHealthChecks() {
+ List<NamedHealthCheckResult> hcList = new LinkedList<>();
+ for( HealthCheck hc : registeredHealthChecks) {
+ try {
+ hcList.add(new NamedHealthCheckResult(namingMap.get(hc), hc.check()));
+
+ } catch (Throwable t) { // NOSONAR we definately want to catch everything here!!!
+ logger.error("Error during healthcheck", t);
+ hcList.add(new NamedHealthCheckResult(namingMap.get(hc),
+ Result.unhealthy("Exception during test: "+t+" -> See Log!")));
+ }
+ }
+ return hcList;
+ }
+
+}
diff --git a/src/main/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResult.java b/src/main/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResult.java
new file mode 100644
index 0000000..9726cb9
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResult.java
@@ -0,0 +1,53 @@
+/*
+ ******************************************************************************
+ * Copyright © 2017-2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.portal.health.base;
+
+import com.google.gson.GsonBuilder;
+
+import java.util.List;
+
+public class NamedHealthCheckResult {
+ private String name;
+ private Result result;
+
+ public NamedHealthCheckResult( String name, Result result ) {
+ this.name = name;
+ this.result = result;
+ }
+
+ public String toJson() {
+ StringBuffer buffer = new StringBuffer(); // NOSONAR - _fd we don't a new dependency because of this
+ buffer.append("\""+name+"\":");
+ buffer.append(new GsonBuilder().disableHtmlEscaping().create().toJson(result));
+ return buffer.toString();
+ }
+
+ public static String toJson(List<NamedHealthCheckResult> resultArray ) {
+ StringBuilder builder = new StringBuilder();
+ builder.append('{');
+ for( int i=0; i < resultArray.size(); i++ ) {
+ builder.append(resultArray.get(i).toJson());
+ if( i+1 < resultArray.size() ) {
+ builder.append(',');
+ }
+ }
+ return builder.append('}').toString();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Result getResult() {
+ return result;
+ }
+}
diff --git a/src/main/java/org/eclipse/openk/portal/health/base/Result.java b/src/main/java/org/eclipse/openk/portal/health/base/Result.java
new file mode 100644
index 0000000..6ff7de7
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/portal/health/base/Result.java
@@ -0,0 +1,41 @@
+/*
+ ******************************************************************************
+ * Copyright © 2017-2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.portal.health.base;
+
+
+public class Result {
+ private boolean healthy;
+ private String message;
+
+ private Result() {}
+
+ public static Result healthy() {
+ Result res = new Result();
+ res.healthy = true;
+ return res;
+ }
+
+ public static Result unhealthy(String message) {
+ Result res = new Result();
+ res.healthy = false;
+ res.message = message;
+ return res;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public boolean isHealthy() {
+ return healthy;
+ }
+}
diff --git a/src/main/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheck.java b/src/main/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheck.java
new file mode 100644
index 0000000..80a7b52
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheck.java
@@ -0,0 +1,37 @@
+/*
+ ******************************************************************************
+ * Copyright © 2017-2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+ */
+package org.eclipse.openk.portal.health.impl;
+
+import org.eclipse.openk.portal.auth2.util.JwtHelper;
+import org.eclipse.openk.portal.common.BackendConfig;
+import org.eclipse.openk.portal.exceptions.PortalInternalServerError;
+import org.eclipse.openk.portal.health.base.HealthCheck;
+import org.eclipse.openk.portal.health.base.Result;
+
+public class KeyCloakPresentHealthCheck extends HealthCheck {
+
+ protected boolean checkit() throws PortalInternalServerError {
+ return JwtHelper.serviceAvailable();
+ }
+
+ @Override
+ protected Result check() throws Exception {
+ if( checkit() ) {
+ return Result.healthy();
+ }
+ else {
+ BackendConfig gc = BackendConfig.getInstance();
+ String msg = gc.getAuthServerUrl() + "/" + gc.getKeycloakRealm();
+ return Result.unhealthy("KeyCloak-Service not available: "+msg);
+ }
+ }
+}
diff --git a/src/main/java/org/eclipse/openk/portal/rest/BackendRestService.java b/src/main/java/org/eclipse/openk/portal/rest/BackendRestService.java
index 532349d..79ce8e8 100644
--- a/src/main/java/org/eclipse/openk/portal/rest/BackendRestService.java
+++ b/src/main/java/org/eclipse/openk/portal/rest/BackendRestService.java
@@ -11,7 +11,8 @@
*/
package org.eclipse.openk.portal.rest;
-import javax.ws.rs.PathParam;
+import javax.ws.rs.*;
+
import org.apache.log4j.Logger;
import org.eclipse.openk.portal.auth2.model.JwtToken;
import org.eclipse.openk.portal.common.Globals;
@@ -24,14 +25,11 @@
import org.eclipse.openk.portal.exceptions.PortalException;
import org.eclipse.openk.portal.exceptions.PortalExceptionMapper;
import org.eclipse.openk.portal.exceptions.PortalUnauthorized;
+import org.eclipse.openk.portal.health.base.HealthChecker;
+import org.eclipse.openk.portal.health.base.NamedHealthCheckResult;
+import org.eclipse.openk.portal.health.impl.KeyCloakPresentHealthCheck;
import org.eclipse.openk.portal.viewmodel.VersionInfo;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@@ -137,6 +135,23 @@
return invoke(accessToken, false, new ControllerImplementations.GetUsers());
}
+ @GET
+ @Path("/healthcheck")
+ @Produces("application/json")
+ public Response getHealthCheck(@FormParam(value = "pretty") boolean yn) {
+ HealthChecker hc = new HealthChecker();
+ hc.register("Keycloak present", new KeyCloakPresentHealthCheck());
+
+ String returnJson = NamedHealthCheckResult.toJson(hc.performHealthChecks());
+
+ try {
+ return ResponseBuilderWrapper.INSTANCE.buildOKResponse(returnJson);
+ } catch (PortalException e) {
+ logger.error("unexpected error", e);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
+ }
+ }
+
private boolean isBackdoor( String sessionId ) {
// backdoor is only available when the version(POM) contains "DEVELOP" or "SNAPSHOT"
return DEVELOP_MODE && LET_ME_IN.equals(sessionId);
diff --git a/src/main/resources/moduleConfigDevServer.json b/src/main/resources/moduleConfigDevServer.json
index 9ee6421..4c5eef2 100644
--- a/src/main/resources/moduleConfigDevServer.json
+++ b/src/main/resources/moduleConfigDevServer.json
@@ -45,5 +45,14 @@
"link": "http://172.18.22.160:8880/plannedGridMeasures",
"pictureLink": "https://www.openkonsequenz.de//components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=/medien/cache/main_image/l_ok_module5.jpg",
"requiredRole": "planned-policies-access"
+ },
+ {
+ "name": "Geplante Maßnahmen (Web)",
+ "cols": 1,
+ "rows": 1,
+ "color": "#ffffff",
+ "link": "http://87.128.212.254:8880/plannedGridMeasures",
+ "pictureLink": "https://www.openkonsequenz.de//components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=/medien/cache/main_image/l_ok_module5.jpg",
+ "requiredRole": "planned-policies-access"
}
]
diff --git a/src/test/java/org/eclipse/openk/portal/common/BackendConfigTest.java b/src/test/java/org/eclipse/openk/portal/common/BackendConfigTest.java
index 6b53881..4efadc9 100644
--- a/src/test/java/org/eclipse/openk/portal/common/BackendConfigTest.java
+++ b/src/test/java/org/eclipse/openk/portal/common/BackendConfigTest.java
@@ -20,15 +20,15 @@
@Test
public void testConfig() {
BackendConfig bc = BackendConfig.getInstance();
- assertEquals( (int)bc.getInternalSessionLengthMillis(), 3600000 );
- assertEquals( (int)bc.getReloadUsersInSec(), 300 );
- assertEquals( bc.getAuthServerUrl(), "http://entjava002:8080/");
- assertEquals( bc.getKeycloakRealm(), "elogbook");
- assertEquals( bc.getKeycloakClient(),"elogbook-backend");
- assertEquals( bc.getKeycloakAdmin(), "admin");
- assertEquals( bc.getKeycloakPW(), "nimda");
- assertEquals( BackendConfig.getConfigFileName(), "backendConfigDevLocal.json");
+ assertEquals( 3600000, (int)bc.getInternalSessionLengthMillis() );
+ assertEquals( 300 , (int)bc.getReloadUsersInSec());
+ assertEquals( "http://entjava002:8080/", bc.getAuthServerUrl() );
+ assertEquals( "elogbook", bc.getKeycloakRealm());
+ assertEquals( "elogbook-backend", bc.getKeycloakClient());
+ assertEquals( "admin", bc.getKeycloakAdmin() );
+ assertEquals( "nimda", bc.getKeycloakPW() );
+ assertEquals( "backendConfigDevLocal.json", BackendConfig.getConfigFileName() );
BackendConfig.setConfigFileName("backendConfigProduction.json");
- assertEquals( BackendConfig.getConfigFileName(), "backendConfigProduction.json");
+ assertEquals( "backendConfigProduction.json", BackendConfig.getConfigFileName() );
}
}
diff --git a/src/test/java/org/eclipse/openk/portal/common/util/ResourceLoaderBaseTest.java b/src/test/java/org/eclipse/openk/portal/common/util/ResourceLoaderBaseTest.java
index f53ff8c..9d888ef 100644
--- a/src/test/java/org/eclipse/openk/portal/common/util/ResourceLoaderBaseTest.java
+++ b/src/test/java/org/eclipse/openk/portal/common/util/ResourceLoaderBaseTest.java
@@ -21,6 +21,6 @@
public void testloadStringFromResourceError() {
ResourceLoaderBase rlb = new ResourceLoaderBase();
String str = rlb.loadStringFromResource("UNKNOWN_FILE");
- assertEquals(str, "");
+ assertEquals("", str);
}
}
diff --git a/src/test/java/org/eclipse/openk/portal/controller/BaseWebServiceTest.java b/src/test/java/org/eclipse/openk/portal/controller/BaseWebServiceTest.java
index 8f0cea6..10a17dc 100644
--- a/src/test/java/org/eclipse/openk/portal/controller/BaseWebServiceTest.java
+++ b/src/test/java/org/eclipse/openk/portal/controller/BaseWebServiceTest.java
@@ -83,7 +83,7 @@
ti.exceptionToThrow = new PortalBadRequest();
Response ret = tws.invoke("ssess", false, ti);
- Assert.assertEquals(ret.getStatus(), Globals.HTTPSTATUS_BAD_REQUEST);
+ Assert.assertEquals(Globals.HTTPSTATUS_BAD_REQUEST, ret.getStatus());
}
@Test
@@ -93,7 +93,7 @@
ti.throwRuntime = true;
Response ret = tws.invoke("ssess", false, ti);
- assertEquals(ret.getStatus(), Globals.HTTPSTATUS_INTERNAL_SERVER_ERROR);
+ assertEquals(Globals.HTTPSTATUS_INTERNAL_SERVER_ERROR, ret.getStatus());
}
@Test
@@ -102,7 +102,7 @@
TestInvokable ti = new TestInvokable();
tws.throwUnauthException = true;
Response ret = tws.invoke("ssess", false, ti);
- assertEquals(ret.getStatus(), Globals.HTTPSTATUS_UNAUTHORIZED);
+ assertEquals(Globals.HTTPSTATUS_UNAUTHORIZED, ret.getStatus());
}
@Test
@@ -252,8 +252,8 @@
Response ret = tws.invoke("ssess", false, ti);
assertTrue(ti.isInvoked);
- assertEquals(tws.sessionId, "ssess");
- assertEquals(ret.getStatus(), 666);
+ assertEquals("ssess", tws.sessionId);
+ assertEquals(666, ret.getStatus() );
}
diff --git a/src/test/java/org/eclipse/openk/portal/controller/ResponseBuilderWrapperTest.java b/src/test/java/org/eclipse/openk/portal/controller/ResponseBuilderWrapperTest.java
index 03906d6..a64e04e 100644
--- a/src/test/java/org/eclipse/openk/portal/controller/ResponseBuilderWrapperTest.java
+++ b/src/test/java/org/eclipse/openk/portal/controller/ResponseBuilderWrapperTest.java
@@ -27,16 +27,16 @@
String json = "{ 'ret' : 'OK' }";
Response.ResponseBuilder rb = ResponseBuilderWrapper.INSTANCE.getResponseBuilder( json );
Response resp = rb.build();
- assertEquals(resp.getStatus(), Globals.HTTPSTATUS_OK );
+ assertEquals(Globals.HTTPSTATUS_OK, resp.getStatus());
}
@Test
public void testBuildOkResponse() throws PortalException {
String json = "{ 'test' : 'Value' }";
Response resp = ResponseBuilderWrapper.INSTANCE.buildOKResponse( json );
- assertEquals( resp.getStatus(), Globals.HTTPSTATUS_OK );
+ assertEquals( Globals.HTTPSTATUS_OK, resp.getStatus());
resp = ResponseBuilderWrapper.INSTANCE.buildOKResponse(json, "ssess");
- assertEquals( resp.getStatus(), Globals.HTTPSTATUS_OK);
+ assertEquals( Globals.HTTPSTATUS_OK, resp.getStatus());
}
}
diff --git a/src/test/java/org/eclipse/openk/portal/controller/TokenManagerTest.java b/src/test/java/org/eclipse/openk/portal/controller/TokenManagerTest.java
index 00bff61..1c31de2 100644
--- a/src/test/java/org/eclipse/openk/portal/controller/TokenManagerTest.java
+++ b/src/test/java/org/eclipse/openk/portal/controller/TokenManagerTest.java
@@ -54,7 +54,7 @@
HashMap<String, TokenManager.SessionItem> regMap = Whitebox.getInternalState(sessione, "registry");
- assertEquals(regMap.size(), 3);
+ assertEquals(3, regMap.size());
assertTrue(regMap.containsKey("HUGO1"));
assertTrue(regMap.containsKey(specialToken.getAccessToken()));
assertTrue(regMap.containsKey("HUGO3"));
@@ -77,14 +77,14 @@
assertEquals( sit1.getSessionCreationTime()+200, sit1.getSessionLastAccessTime());
sit1.setUser(null);
assertNull(sit1.getUser());
- assertEquals(sit1.getSessionId(), "HUGO1");
+ assertEquals("HUGO1", sit1.getSessionId() );
sit1.setCookieToken("CaptainCookie");
- assertEquals(sit1.getCookieToken(), "CaptainCookie");
+ assertEquals("CaptainCookie", sit1.getCookieToken());
TokenManager.getInstance().logout("HUGO1");
- assertEquals(regMap.size(), 2);
+ assertEquals(2, regMap.size());
TokenManager.getInstance().logout( "FAKE");
- assertEquals(regMap.size(), 2);
+ assertEquals(2, regMap.size());
// session out of time
diff --git a/src/test/java/org/eclipse/openk/portal/exceptions/PortalExceptionsTest.java b/src/test/java/org/eclipse/openk/portal/exceptions/PortalExceptionsTest.java
index ef2b754..5cdf190 100644
--- a/src/test/java/org/eclipse/openk/portal/exceptions/PortalExceptionsTest.java
+++ b/src/test/java/org/eclipse/openk/portal/exceptions/PortalExceptionsTest.java
@@ -20,11 +20,11 @@
@Test
public void testConstructors() {
- assertEquals(new PortalBadRequest().getHttpStatus(), Globals.HTTPSTATUS_BAD_REQUEST);
- assertEquals(new PortalForbidden().getHttpStatus(), Globals.HTTPSTATUS_FORBIDDEN);
- assertEquals(new PortalInternalServerError(null, null).getHttpStatus(), Globals.HTTPSTATUS_INTERNAL_SERVER_ERROR);
- assertEquals(new PortalNotFound().getHttpStatus(), Globals.HTTPSTATUS_NOT_FOUND);
- assertEquals(new PortalUnauthorized().getHttpStatus(), Globals.HTTPSTATUS_UNAUTHORIZED);
+ assertEquals(Globals.HTTPSTATUS_BAD_REQUEST, new PortalBadRequest().getHttpStatus() );
+ assertEquals(Globals.HTTPSTATUS_FORBIDDEN, new PortalForbidden().getHttpStatus());
+ assertEquals(Globals.HTTPSTATUS_INTERNAL_SERVER_ERROR, new PortalInternalServerError(null, null).getHttpStatus());
+ assertEquals(Globals.HTTPSTATUS_NOT_FOUND, new PortalNotFound().getHttpStatus());
+ assertEquals(Globals.HTTPSTATUS_UNAUTHORIZED, new PortalUnauthorized().getHttpStatus());
}
diff --git a/src/test/java/org/eclipse/openk/portal/health/base/HealthCheckerTest.java b/src/test/java/org/eclipse/openk/portal/health/base/HealthCheckerTest.java
new file mode 100644
index 0000000..87aed26
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/portal/health/base/HealthCheckerTest.java
@@ -0,0 +1,93 @@
+/*
+ ******************************************************************************
+ * Copyright © 2018 PTA GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ ******************************************************************************
+*/
+package org.eclipse.openk.portal.health.base;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.*;
+
+public class HealthCheckerTest {
+ public boolean hc1Called;
+ public boolean hc2Called;
+ public boolean hc3Called;
+
+ @Before
+ public void init() {
+ hc1Called = false;
+ hc2Called = false;
+ hc3Called = false;
+ }
+
+ @Test
+ public void test_ok() {
+ HealthCheck hc1 = new HealthCheck() {
+
+ @Override
+ protected Result check() throws Exception {
+ hc1Called = true;
+ return Result.healthy();
+ }
+ };
+
+ HealthCheck hc2 = new HealthCheck() {
+ @Override
+ protected Result check() throws Exception {
+ hc2Called = true;
+ return Result.unhealthy("because of...");
+ }
+ };
+
+ HealthChecker theChecker = new HealthChecker();
+ theChecker.register("firstTest", hc1 );
+ theChecker.register( "secondTest", hc2 );
+
+ List<NamedHealthCheckResult> retList = theChecker.performHealthChecks();
+
+ assertEquals( 2, retList.size() );
+ assertTrue( hc1Called );
+ assertTrue( hc2Called );
+ assertNull( retList.get(0).getResult().getMessage());
+ assertNotNull( retList.get(1).getResult().getMessage());
+ assertEquals( "firstTest", retList.get(0).getName());
+ assertEquals( "secondTest", retList.get(1).getName());
+ assertTrue( retList.get(0).getResult().isHealthy());
+ assertFalse( retList.get(1).getResult().isHealthy());
+ }
+
+ @Test
+ public void test_nok() {
+ HealthCheck hc1 = new HealthCheck() {
+
+ @Override
+ protected Result check() throws Exception {
+ hc3Called = true;
+ throw new Exception("Error in healthCheck");
+ }
+ };
+
+
+ HealthChecker theChecker = new HealthChecker();
+ theChecker.register("errorTest", hc1 );
+
+ List<NamedHealthCheckResult> retList = theChecker.performHealthChecks();
+
+ assertEquals( 1, retList.size() );
+ assertTrue( hc3Called );
+ assertNotNull( retList.get(0).getResult().getMessage());
+ assertFalse( retList.get(0).getResult().isHealthy());
+
+ }
+}
diff --git a/src/test/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResultTest.java b/src/test/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResultTest.java
new file mode 100644
index 0000000..0fdd4e7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/portal/health/base/NamedHealthCheckResultTest.java
@@ -0,0 +1,25 @@
+package org.eclipse.openk.portal.health.base;
+
+import org.junit.Test;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class NamedHealthCheckResultTest {
+ @Test
+ public void testAll() {
+ NamedHealthCheckResult h1 = new NamedHealthCheckResult("Uno", Result.healthy());
+ NamedHealthCheckResult h2 = new NamedHealthCheckResult("Due", Result.unhealthy("Darum"));
+
+ assertEquals("\"Uno\":{\"healthy\":true}", h1.toJson());
+ assertEquals("\"Due\":{\"healthy\":false,\"message\":\"Darum\"}", h2.toJson());
+
+ List<NamedHealthCheckResult> lista = new LinkedList<>();
+ lista.add(h1);
+ lista.add(h2);
+ assertEquals( "{\"Uno\":{\"healthy\":true},\"Due\":{\"healthy\":false,\"message\":\"Darum\"}}",
+ NamedHealthCheckResult.toJson(lista));
+ }
+}
diff --git a/src/test/java/org/eclipse/openk/portal/health/base/ResultTest.java b/src/test/java/org/eclipse/openk/portal/health/base/ResultTest.java
new file mode 100644
index 0000000..9379922
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/portal/health/base/ResultTest.java
@@ -0,0 +1,20 @@
+package org.eclipse.openk.portal.health.base;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class ResultTest {
+
+ @Test
+ public void testAll() {
+ Result res1 = Result.healthy();
+ Result res2 = Result.unhealthy("Msg");
+
+ assertTrue(res1.isHealthy());
+ assertFalse(res2.isHealthy());
+ assertNull(res1.getMessage());
+ assertNotNull(res2.getMessage());
+
+ }
+}
diff --git a/src/test/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheckTest.java b/src/test/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheckTest.java
new file mode 100644
index 0000000..1727b6a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/portal/health/impl/KeyCloakPresentHealthCheckTest.java
@@ -0,0 +1,37 @@
+package org.eclipse.openk.portal.health.impl;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class KeyCloakPresentHealthCheckTest {
+ private KeyCloakPresentHealthCheck hc;
+
+ @Before
+ public void init() {
+ hc = new KeyCloakPresentHealthCheck() {
+ public boolean checkit;
+
+ @Override
+ protected boolean checkit() {
+ return checkit;
+ }
+ };
+ }
+
+ @Test
+ public void testOk() throws Exception {
+ Whitebox.setInternalState(hc, "checkit", true);
+ assertTrue(hc.check().isHealthy());
+ }
+
+ @Test
+ public void testNok() throws Exception {
+ Whitebox.setInternalState(hc, "checkit", false);
+ assertFalse(hc.check().isHealthy());
+ }
+
+}
diff --git a/src/test/java/org/eclipse/openk/portal/viewmodel/ErrorReturnTest.java b/src/test/java/org/eclipse/openk/portal/viewmodel/ErrorReturnTest.java
index 09bee1f..b4ba312 100644
--- a/src/test/java/org/eclipse/openk/portal/viewmodel/ErrorReturnTest.java
+++ b/src/test/java/org/eclipse/openk/portal/viewmodel/ErrorReturnTest.java
@@ -28,7 +28,7 @@
String json = super.loadStringFromResource("testErrorReturn.json");
ErrorReturn errRet = getGson().fromJson(json, ErrorReturn.class);
assertFalse(errRet.getErrorText().isEmpty());
- assertEquals(errRet.getErrorCode(), 999);
+ assertEquals(999, errRet.getErrorCode());
}
@Test
diff --git a/src/test/java/org/eclipse/openk/portal/viewmodel/GeneralReturnItemTest.java b/src/test/java/org/eclipse/openk/portal/viewmodel/GeneralReturnItemTest.java
index 19516de..217cd7d 100644
--- a/src/test/java/org/eclipse/openk/portal/viewmodel/GeneralReturnItemTest.java
+++ b/src/test/java/org/eclipse/openk/portal/viewmodel/GeneralReturnItemTest.java
@@ -27,7 +27,7 @@
public void TestStructureAgainstJson() {
String json = super.loadStringFromResource("testGeneralReturnItem.json");
GeneralReturnItem gRRet = JsonGeneratorBase.getGson().fromJson(json, GeneralReturnItem.class);
- assertEquals(gRRet.getRet(), "It works!");
+ assertEquals("It works!", gRRet.getRet());
}
@Test
diff --git a/src/test/java/org/eclipse/openk/portal/viewmodel/LoginCredentialsTest.java b/src/test/java/org/eclipse/openk/portal/viewmodel/LoginCredentialsTest.java
index 46d132a..d6ad438 100644
--- a/src/test/java/org/eclipse/openk/portal/viewmodel/LoginCredentialsTest.java
+++ b/src/test/java/org/eclipse/openk/portal/viewmodel/LoginCredentialsTest.java
@@ -24,8 +24,8 @@
public void testStructureAgainstJson() {
String json = super.loadStringFromResource("testLoginCredentials.json");
LoginCredentials lc = JsonGeneratorBase.getGson().fromJson(json, LoginCredentials.class);
- assertEquals(lc.getUserName(), "Carlo");
- assertEquals(lc.getPassword(), "Cottura");
+ assertEquals("Carlo", lc.getUserName() );
+ assertEquals("Cottura", lc.getPassword());
}
@Test
diff --git a/src/test/java/org/eclipse/openk/portal/viewmodel/UserModuleTest.java b/src/test/java/org/eclipse/openk/portal/viewmodel/UserModuleTest.java
index ea6b126..ead9bd4 100644
--- a/src/test/java/org/eclipse/openk/portal/viewmodel/UserModuleTest.java
+++ b/src/test/java/org/eclipse/openk/portal/viewmodel/UserModuleTest.java
@@ -20,17 +20,17 @@
@Test
public void testModuleConfigProduction() {
UserModule[] um = UserModule.getInstance();
- assertEquals( um[0].getModuleName(), "Betriebstagebuch");
- assertEquals( um[0].getColor(), "#ffffff");
- assertEquals( (long)um[0].getCols(), 1);
- assertEquals( (long)um[0].getRows(), 1);
- assertEquals( um[0].getLink(), "http://localhost:4200/");
- assertEquals( um[0].getPictureLink(), "https://www.openkonsequenz.de/medien/cache/main_image/m_logbuch_2443636.jpg");
- assertEquals( um[0].getRequiredRole(), "elogbook-access");
+ assertEquals( "Betriebstagebuch", um[0].getModuleName() );
+ assertEquals( "#ffffff", um[0].getColor() );
+ assertEquals( 1, (long)um[0].getCols() );
+ assertEquals( 1, (long)um[0].getRows() );
+ assertEquals( "http://localhost:4200/", um[0].getLink() );
+ assertEquals( "https://www.openkonsequenz.de/medien/cache/main_image/m_logbuch_2443636.jpg", um[0].getPictureLink() );
+ assertEquals( "elogbook-access", um[0].getRequiredRole() );
- assertEquals( UserModule.getConfigFileName(), "moduleConfigDevLocal.json");
+ assertEquals( "moduleConfigDevLocal.json", UserModule.getConfigFileName());
UserModule.setConfigFileName("moduleConfigDevLocal.json");
- assertEquals( UserModule.getConfigFileName(), "moduleConfigDevLocal.json");
+ assertEquals( "moduleConfigDevLocal.json", UserModule.getConfigFileName() );
}
}