Skip to content

Commit

Permalink
Merge pull request #83 from aservo/feature/upgrade-confluence-and-oth…
Browse files Browse the repository at this point in the history
…er-versions

Upgrade Confluence and other versions, fix running JUnit 5 tests
  • Loading branch information
pathob authored Mar 1, 2024
2 parents ebd2105 + 8984e30 commit 75befa2
Show file tree
Hide file tree
Showing 26 changed files with 1,748 additions and 1,720 deletions.
2,539 changes: 1,243 additions & 1,296 deletions index.adoc

Large diffs are not rendered by default.

77 changes: 43 additions & 34 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,25 +60,29 @@
</developers>

<properties>
<confluence.version>7.5.0</confluence.version>
<confluence.version>8.5.6</confluence.version>
<confluence.data.version>8.5.6</confluence.data.version>
<!-- other properties -->
<ajp.port>8109</ajp.port>
<amps.version>8.0.2</amps.version>
<atlassian.gadgets.version>4.3.2.1</atlassian.gadgets.version>
<amps.version>8.12.4</amps.version>
<atlassian.gadgets.version>8.1.4</atlassian.gadgets.version>
<atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
<atlassian.spring.scanner.version>2.1.5</atlassian.spring.scanner.version>
<confapi-commons.version>0.3.0</confapi-commons.version>
<confluence-lookandfeel.version>5.9.1-issue-CONF-38693-m2</confluence-lookandfeel.version>
<atlassian.spring.scanner.version>2.2.4</atlassian.spring.scanner.version>
<confapi-commons.version>0.4.0-SNAPSHOT</confapi-commons.version>
<custom-favicon-api.version>2.0.2</custom-favicon-api.version>
<javax.jaxb-api.version>2.3.1</javax.jaxb-api.version>
<javax.ws.rs-api.version>2.1.1</javax.ws.rs-api.version>
<javax.el-api.version>3.0.0</javax.el-api.version>
<log4j.version>2.8.2</log4j.version>
<plugin.testrunner.version>2.0.1</plugin.testrunner.version>
<slf4j.version>1.7.30</slf4j.version>
<plugin.testrunner.version>2.0.4</plugin.testrunner.version>
<log4j.version>2.23.0</log4j.version>
<slf4j.version>2.0.12</slf4j.version>
<swagger.version>2.2.20</swagger.version>
<openai-generator.version>7.3.0</openai-generator.version>
<!-- Compiler must be 8 so that the plugin can run on Crowd instances using Java 8 -->
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -107,14 +111,6 @@
<type>pom</type>
<scope>import</scope>
</dependency>

<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.10.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Expand All @@ -129,12 +125,6 @@
<scope>compile</scope>
</dependency>

<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<scope>compile</scope>
</dependency>

<!-- behaves like a compile dependency -->

<dependency>
Expand All @@ -161,7 +151,7 @@
<dependency>
<groupId>com.atlassian.confluence.plugins</groupId>
<artifactId>confluence-lookandfeel</artifactId>
<version>${confluence-lookandfeel.version}</version>
<version>${confluence.version}</version>
<scope>provided</scope>
</dependency>

Expand Down Expand Up @@ -211,12 +201,14 @@
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${javax.jaxb-api.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${javax.ws.rs-api.version}</version>
<scope>provided</scope>
</dependency>

Expand Down Expand Up @@ -253,6 +245,20 @@
</exclusions>
</dependency>

<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
<version>${swagger.version}</version>
<scope>provided</scope>
</dependency>

<!-- test dependencies -->

<dependency>
Expand All @@ -272,7 +278,12 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>

Expand All @@ -290,8 +301,9 @@
</dependency>

<dependency>
<groupId>org.glassfish.web</groupId>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>${javax.el-api.version}</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -319,9 +331,6 @@
</dependencies>

<build>

<!-- plugins -->

<plugins>
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
Expand All @@ -332,7 +341,7 @@
<ajpPort>${ajp.port}</ajpPort>
<productVersion>${confluence.version}</productVersion>
<!-- the following version may only be adjusted, when a new home zip has been generated -->
<productDataVersion>7.5.0</productDataVersion>
<productDataVersion>${confluence.data.version}</productDataVersion>
<!-- in case new home zip should be generated, please add your executed steps to generated-test-resources.md -->
<productDataPath>${project.basedir}/src/test/resources/generated-test-resources.zip</productDataPath>
<enableQuickReload>true</enableQuickReload>
Expand Down Expand Up @@ -398,7 +407,7 @@
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator-maven-plugin.version}</version>
<version>${openai-generator.version}</version>
<executions>
<execution>
<phase>package</phase>
Expand All @@ -422,7 +431,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.10</version>
<version>${jacoco.plugin.version}</version>
</plugin>
</plugins>
</build>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package de.aservo.confapi.confluence.rest;

import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
import com.atlassian.plugins.rest.common.security.UnrestrictedAccess;
import de.aservo.confapi.commons.constants.ConfAPI;
import de.aservo.confapi.commons.rest.AbstractPingResourceImpl;

import javax.ws.rs.Path;

@Path(ConfAPI.PING)
@AnonymousAllowed
@UnrestrictedAccess
public class PingResourceImpl extends AbstractPingResourceImpl {

// Completely inhering the implementation of AbstractPingResourceImpl
Expand Down
8 changes: 6 additions & 2 deletions src/main/resources/openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
openapi: 3.0.1
openapi: 3.0.0
info:
version: '1'
title: ConfAPI for Confluence
Expand All @@ -12,7 +12,11 @@ info:
security:
- basicAuth: []
servers:
- url: /rest/confapi/1/
- url: "{url}/rest/confapi/1/"
variables:
url:
default: http://localhost:1990/confluence
description: URL with protocol, domain, port and path
components:
securitySchemes:
basicAuth:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,63 +5,67 @@
import com.atlassian.confluence.user.ConfluenceUserImpl;
import com.atlassian.plugins.rest.common.security.AuthenticationRequiredException;
import com.atlassian.plugins.rest.common.security.AuthorisationException;
import com.sun.jersey.spi.container.ContainerRequest;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class SysAdminOnlyResourceFilterTest {
@ExtendWith(MockitoExtension.class)
class SysAdminOnlyResourceFilterTest {

private ConfluenceUserImpl user;

@Mock
private PermissionManager permissionManager;
private SysAdminOnlyResourceFilter filter;

@Before
private SysAdminOnlyResourceFilter sysAdminOnlyResourceFilter;

@BeforeEach
public void setup() {
user = new ConfluenceUserImpl("test", "test test", "[email protected]");
permissionManager = mock(PermissionManager.class);
filter = new SysAdminOnlyResourceFilter(permissionManager);
user = new ConfluenceUserImpl("test", "test test", "[email protected]");
sysAdminOnlyResourceFilter = new SysAdminOnlyResourceFilter(permissionManager);
}

@Test
public void testFilterDefaults() {
assertNull(filter.getResponseFilter());
assertEquals(filter, filter.getRequestFilter());
void testFilterDefaults() {
assertNull(sysAdminOnlyResourceFilter.getResponseFilter());
assertEquals(sysAdminOnlyResourceFilter, sysAdminOnlyResourceFilter.getRequestFilter());
}

@Test(expected = AuthenticationRequiredException.class)
public void testAdminAccessNoUser() {
filter.filter(null);
@Test
void testAdminAccessNoUser() {
assertThrows(AuthenticationRequiredException.class, () -> {
sysAdminOnlyResourceFilter.filter(null);
});
}

@Test
public void testSysAdminAccess() {
void testSysAdminAccess() {
when(permissionManager.isSystemAdministrator(user)).thenReturn(Boolean.TRUE);

try (MockedStatic<AuthenticatedUserThreadLocal> authenticatedUserThreadLocalMockedStatic = mockStatic(AuthenticatedUserThreadLocal.class)) {
authenticatedUserThreadLocalMockedStatic.when(AuthenticatedUserThreadLocal::get).thenReturn(user);

ContainerRequest filterResponse = filter.filter(null);
assertNull(filterResponse);
assertNull(sysAdminOnlyResourceFilter.filter(null));
}
}

@Test(expected = AuthorisationException.class)
public void testNonSysAdminAccess() {
@Test
void testNonSysAdminAccess() {
when(permissionManager.isSystemAdministrator(user)).thenReturn(Boolean.FALSE);

try (MockedStatic<AuthenticatedUserThreadLocal> authenticatedUserThreadLocalMockedStatic = mockStatic(AuthenticatedUserThreadLocal.class)) {
authenticatedUserThreadLocalMockedStatic.when(AuthenticatedUserThreadLocal::get).thenReturn(user);

filter.filter(any(ContainerRequest.class));
assertThrows(AuthorisationException.class, () -> {
sysAdminOnlyResourceFilter.filter(null);
});
}
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package de.aservo.confapi.confluence.model.type;

import de.aservo.confapi.confluence.model.DefaultAuthenticationScenario;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertTrue;

@RunWith(MockitoJUnitRunner.class)
public class DefaultAuthenticationScenarioTest {
@ExtendWith(MockitoExtension.class)
class DefaultAuthenticationScenarioTest {

@Test
public void testDefaultReturnValues() {
void testDefaultReturnValues() {
DefaultAuthenticationScenario scenario = new DefaultAuthenticationScenario();
assertTrue(scenario.isCommonUserBase());
assertTrue(scenario.isTrusted());
Expand Down
Loading

0 comments on commit 75befa2

Please sign in to comment.