From ce2ea950a8d604dc91fa9c93ba6c6bbe20abf24b Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Mon, 14 Oct 2019 11:12:29 +0200 Subject: [PATCH] fix and create unit tests for anonymous user --- scm-ui/src/modules/auth.test.js | 16 +--------------- .../api/v2/resources/ConfigResourceTest.java | 1 - .../RepositoryPermissionRootResourceTest.java | 17 +++++++++++++++++ .../java/sonia/scm/filter/MDCFilterTest.java | 3 ++- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/scm-ui/src/modules/auth.test.js b/scm-ui/src/modules/auth.test.js index 7f52fa4ae3..bda504721e 100644 --- a/scm-ui/src/modules/auth.test.js +++ b/scm-ui/src/modules/auth.test.js @@ -11,7 +11,6 @@ import reducer, { getLoginFailure, getLogoutFailure, getMe, - isAuthenticated, isFetchMePending, isLoginPending, isLogoutPending, @@ -35,10 +34,7 @@ import reducer, { import configureMockStore from "redux-mock-store"; import thunk from "redux-thunk"; import fetchMock from "fetch-mock"; -import { - FETCH_INDEXRESOURCES_PENDING, - FETCH_INDEXRESOURCES_SUCCESS -} from "./indexResource"; +import {FETCH_INDEXRESOURCES_PENDING, FETCH_INDEXRESOURCES_SUCCESS} from "./indexResource"; const me = { name: "tricia", @@ -284,16 +280,6 @@ describe("auth actions", () => { describe("auth selectors", () => { const error = new Error("yo it failed"); - it("should be false, if authenticated is undefined or false", () => { - expect(isAuthenticated({})).toBe(false); - expect(isAuthenticated({ auth: {} })).toBe(false); - expect(isAuthenticated({ auth: { authenticated: false } })).toBe(false); - }); - - it("should be true, if authenticated is true", () => { - expect(isAuthenticated({ auth: { authenticated: true } })).toBe(true); - }); - it("should return me", () => { expect(getMe({ auth: { me } })).toBe(me); }); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ConfigResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ConfigResourceTest.java index 8333cb14d1..6b48360523 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ConfigResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ConfigResourceTest.java @@ -137,7 +137,6 @@ public class ConfigResourceTest { assertTrue(response.getContentAsString().contains("\"proxyPassword\":\"newPassword\"")); assertTrue(response.getContentAsString().contains("\"self\":{\"href\":\"/v2/config")); assertTrue("link not found", response.getContentAsString().contains("\"update\":{\"href\":\"/v2/config")); - verify(userManager).create(SCMContext.ANONYMOUS); } @Test diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryPermissionRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryPermissionRootResourceTest.java index e9ea0bead5..a1b6bd9e36 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryPermissionRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/RepositoryPermissionRootResourceTest.java @@ -2,6 +2,7 @@ package sonia.scm.api.v2.resources; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.sdorra.shiro.SubjectAware; import com.google.common.collect.ImmutableList; import com.google.inject.util.Providers; import de.otto.edison.hal.HalRepresentation; @@ -169,7 +170,9 @@ public class RepositoryPermissionRootResourceTest extends RepositoryTestBase { @TestFactory @DisplayName("test endpoints on missing permissions and user is not Admin") + @SubjectAware(username = "trillian") Stream missedPermissionUserForbiddenTestFactory() { + when(subject.getPrincipal()).thenReturn("user"); doThrow(AuthorizationException.class).when(repositoryManager).get(any(NamespaceAndName.class)); return createDynamicTestsToAssertResponses( requestGETPermission.expectedResponseStatus(403), @@ -179,6 +182,20 @@ public class RepositoryPermissionRootResourceTest extends RepositoryTestBase { requestPUTPermission.expectedResponseStatus(403)); } + @TestFactory + @DisplayName("test endpoints on missing permissions and user is not Admin") + @SubjectAware(username = "trillian") + Stream missedPermissionAnonymousUnauthorizedTestFactory() { + when(subject.getPrincipal()).thenReturn("_anonymous"); + doThrow(AuthorizationException.class).when(repositoryManager).get(any(NamespaceAndName.class)); + return createDynamicTestsToAssertResponses( + requestGETPermission.expectedResponseStatus(401), + requestPOSTPermission.expectedResponseStatus(401), + requestGETAllPermissions.expectedResponseStatus(401), + requestDELETEPermission.expectedResponseStatus(401), + requestPUTPermission.expectedResponseStatus(401)); + } + @Test public void userWithPermissionWritePermissionShouldGetAllPermissionsWithCreateAndUpdateLinks() throws URISyntaxException { createUserWithRepositoryAndPermissions(TEST_PERMISSIONS, PERMISSION_WRITE); diff --git a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java index efd3dbbbc0..ae7f452f96 100644 --- a/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/filter/MDCFilterTest.java @@ -40,6 +40,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.slf4j.MDC; import sonia.scm.AbstractTestBase; +import sonia.scm.SCMContext; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -117,7 +118,7 @@ public class MDCFilterTest extends AbstractTestBase { filter.doFilter(request, response, chain); assertNotNull(chain.ctx); - assertEquals("anonymous", chain.ctx.get(MDCFilter.MDC_USERNAME)); + assertEquals(SCMContext.USER_ANONYMOUS, chain.ctx.get(MDCFilter.MDC_USERNAME)); } private static class MDCCapturingFilterChain implements FilterChain {