From 20cf0507a215b92f42796da4b1c05b25635ad460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 12 Apr 2019 15:26:22 +0200 Subject: [PATCH] Fix injection --- .../api/v2/resources/AuthenticationResource.java | 11 +++++++---- .../v2/resources/AuthenticationResourceTest.java | 15 +++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AuthenticationResource.java index a10375b83a..deab53a708 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AuthenticationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AuthenticationResource.java @@ -29,17 +29,17 @@ public class AuthenticationResource { private final AccessTokenBuilderFactory tokenBuilderFactory; private final AccessTokenCookieIssuer cookieIssuer; - private final LogoutRedirection logoutRedirection; + + @Inject(optional = true) + private LogoutRedirection logoutRedirection; @Inject - public AuthenticationResource(AccessTokenBuilderFactory tokenBuilderFactory, AccessTokenCookieIssuer cookieIssuer, LogoutRedirection logoutRedirection) + public AuthenticationResource(AccessTokenBuilderFactory tokenBuilderFactory, AccessTokenCookieIssuer cookieIssuer) { this.tokenBuilderFactory = tokenBuilderFactory; this.cookieIssuer = cookieIssuer; - this.logoutRedirection = logoutRedirection; } - @POST @Path("access_token") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @@ -152,4 +152,7 @@ public class AuthenticationResource { } } + void setLogoutRedirection(LogoutRedirection logoutRedirection) { + this.logoutRedirection = logoutRedirection; + } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java index b9612fedb2..177f975971 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/AuthenticationResourceTest.java @@ -111,9 +111,11 @@ public class AuthenticationResourceTest { "}" ); + private AuthenticationResource authenticationResource; + @Before public void prepareEnvironment() { - AuthenticationResource authenticationResource = new AuthenticationResource(accessTokenBuilderFactory, cookieIssuer, null); + authenticationResource = new AuthenticationResource(accessTokenBuilderFactory, cookieIssuer); dispatcher.getRegistry().addSingletonResource(authenticationResource); AccessToken accessToken = mock(AccessToken.class); @@ -200,7 +202,7 @@ public class AuthenticationResourceTest { @Test public void shouldHandleLogoutRedirection() throws URISyntaxException, UnsupportedEncodingException { - mockResourceWithLogoutRedirection(of(create("http://example.com/cas/logout"))); + authenticationResource.setLogoutRedirection(() -> of(create("http://example.com/cas/logout"))); MockHttpRequest request = MockHttpRequest.delete("/" + AuthenticationResource.PATH + "/access_token"); @@ -212,7 +214,7 @@ public class AuthenticationResourceTest { @Test public void shouldHandleDisabledLogoutRedirection() throws URISyntaxException { - mockResourceWithLogoutRedirection(empty()); + authenticationResource.setLogoutRedirection(Optional::empty); MockHttpRequest request = MockHttpRequest.delete("/" + AuthenticationResource.PATH + "/access_token"); @@ -221,13 +223,6 @@ public class AuthenticationResourceTest { assertEquals(HttpServletResponse.SC_NO_CONTENT, response.getStatus()); } - private void mockResourceWithLogoutRedirection(Optional target) { - dispatcher.getRegistry().removeRegistrations(AuthenticationResource.class); - AuthenticationResource authenticationResource = - new AuthenticationResource(accessTokenBuilderFactory, cookieIssuer, () -> target); - dispatcher.getRegistry().addSingletonResource(authenticationResource); - } - private void shouldReturnBadRequest(String requestBody) throws URISyntaxException { MockHttpRequest request = getMockHttpRequest(requestBody);