From 1df53be535658e765dbb2f158d832fc51bc82294 Mon Sep 17 00:00:00 2001 From: Alex Tucker Date: Mon, 12 Dec 2022 14:56:23 +0000 Subject: [PATCH] Add test for redirect location. Add any non-default port from request. --- .../java/com/epimorphics/registry/webapi/Login.java | 10 +++++++++- .../com/epimorphics/registry/webapi/TestSecurity.java | 7 ++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/epimorphics/registry/webapi/Login.java b/src/main/java/com/epimorphics/registry/webapi/Login.java index 061d6543..44471961 100644 --- a/src/main/java/com/epimorphics/registry/webapi/Login.java +++ b/src/main/java/com/epimorphics/registry/webapi/Login.java @@ -106,7 +106,15 @@ public Response getLogout() { * Generate an absolute URL for the given registry-relative path (which should start with /). */ protected String fullURLForPath(String path) { - return String.format("%s://%s%s%s", request.getScheme(), request.getServerName(), Registry.get().getRootPath(), path); + return String.format("%s://%s%s%s%s", + request.getScheme(), + request.getServerName(), + ("http".equalsIgnoreCase(request.getScheme()) && request.getServerPort() == 80) ? "" : ( + ("https".equalsIgnoreCase(request.getScheme()) && request.getServerPort() == 443) ? "" : + String.format(":%d", request.getServerPort()) + ), + Registry.get().getRootPath(), + path); } @Path("/pwlogin") diff --git a/src/test/java/com/epimorphics/registry/webapi/TestSecurity.java b/src/test/java/com/epimorphics/registry/webapi/TestSecurity.java index 080d9c80..58b07070 100644 --- a/src/test/java/com/epimorphics/registry/webapi/TestSecurity.java +++ b/src/test/java/com/epimorphics/registry/webapi/TestSecurity.java @@ -74,9 +74,10 @@ protected void checkLoginLogout() { String user = c.target(BASE_URL + "system/security/username").request().get(String.class); assertEquals("Alice", user); - c.target(BASE_URL + "system/security/logout").request().post(null); - Response response = c.target(BASE_URL + "system/security/username").request().get(); - assertTrue(response.getStatus() >= 400); + Response logoutResponse = c.target(BASE_URL + "system/security/logout").request().post(null); + assertEquals(BASE_URL, logoutResponse.getLocation().toString()); + Response userResponse = c.target(BASE_URL + "system/security/username").request().get(); + assertTrue(userResponse.getStatus() >= 400); } /**