diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 325e61b2..c6a41191 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -79,6 +79,7 @@ jobs: image: greenmail/standalone:2.1.2 ports: - 3025:3025 + - 3110:3110 steps: - name: Checkout code diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerResourceImpl.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerResourceImpl.java index cff8f4fa..3a08814a 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerResourceImpl.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerResourceImpl.java @@ -20,6 +20,11 @@ public AbstractMailServerResourceImpl( @Override public Response getMailServerSmtp() { final MailServerSmtpModel smtpModel = mailServerService.getMailServerSmtp(); + + if (smtpModel == null) { + return Response.noContent().build(); + } + return Response.ok(smtpModel).build(); } diff --git a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinksResourceFuncTest.java b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinksResourceFuncTest.java index 5a118e52..4ff2c2b0 100644 --- a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinksResourceFuncTest.java +++ b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinksResourceFuncTest.java @@ -28,9 +28,9 @@ void testGetApplicationLinks() throws Exception { void testSetApplicationLinks() throws Exception { final ApplicationLinkModel applicationLinkModel = getExampleModel(); - final HttpResponse applicationLinksResponse = HttpRequestHelper.builder(BootstrAPI.APPLICATION_LINKS + "?" + "ignoreSetupErrors") + final HttpResponse applicationLinksResponse = HttpRequestHelper.builder(BootstrAPI.APPLICATION_LINKS + "?" + "ignore-setup-errors=true") .request(HttpMethod.PUT, Collections.singletonList(applicationLinkModel)); - assertEquals(Response.Status.OK.getStatusCode(), applicationLinksResponse.statusCode()); + assertEquals(Response.Status.OK.getStatusCode(), applicationLinksResponse.statusCode(), applicationLinksResponse.body()); final List applicationLinkModels = objectMapper.readValue(applicationLinksResponse.body(), new TypeReference>(){}); assertEquals(1, applicationLinkModels.size()); diff --git a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerPopResourceFuncTest.java b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerPopResourceFuncTest.java index 802e7bd3..2adc0e4e 100644 --- a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerPopResourceFuncTest.java +++ b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerPopResourceFuncTest.java @@ -3,7 +3,10 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import com.deftdevs.bootstrapi.commons.model.MailServerPopModel; import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.Response; @@ -12,30 +15,41 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public abstract class AbstractMailServerPopResourceFuncTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - void testGetMailServerPop() throws Exception { + @Order(1) + protected void testGetMailServerPopNotConfigured() throws Exception { final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) .request(); - assertEquals(Response.Status.OK.getStatusCode(), mailServerPopResponse.statusCode()); - - final MailServerPopModel mailServerPopModel = objectMapper.readValue(mailServerPopResponse.body(), MailServerPopModel.class); - assertNotNull(mailServerPopModel); + assertEquals(Response.Status.NO_CONTENT.getStatusCode(), mailServerPopResponse.statusCode()); } @Test + @Order(2) void testSetMailServerPop() throws Exception { final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) .request(HttpMethod.PUT, getExampleModel()); - assertEquals(Response.Status.OK.getStatusCode(), mailServerPopResponse.statusCode()); + assertEquals(Response.Status.OK.getStatusCode(), mailServerPopResponse.statusCode(), mailServerPopResponse.body()); final MailServerPopModel mailServerPopModel = objectMapper.readValue(mailServerPopResponse.body(), MailServerPopModel.class); assertMailServerModelAgainstExample(mailServerPopModel); } + @Test + @Order(3) + void testGetMailServerPop() throws Exception { + final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), mailServerPopResponse.statusCode(), mailServerPopResponse.body()); + + final MailServerPopModel mailServerPopModel = objectMapper.readValue(mailServerPopResponse.body(), MailServerPopModel.class); + assertNotNull(mailServerPopModel); + } + @Test public void testGetMailServerPopUnauthenticated() throws Exception { final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) @@ -57,7 +71,7 @@ public void testSetMailServerPopUnauthenticated() throws Exception { } @Test - void testGetMailServerPopUnauthorized() throws Exception { + public void testGetMailServerPopUnauthorized() throws Exception { final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) .username("user") .password("user") @@ -67,7 +81,7 @@ void testGetMailServerPopUnauthorized() throws Exception { } @Test - void testSetMailServerPopUnauthorized() throws Exception { + public void testSetMailServerPopUnauthorized() throws Exception { final HttpResponse mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP) .username("user") .password("user") diff --git a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerSmtpResourceFuncTest.java b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerSmtpResourceFuncTest.java index 0f536e3e..2904e7ba 100644 --- a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerSmtpResourceFuncTest.java +++ b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractMailServerSmtpResourceFuncTest.java @@ -22,7 +22,7 @@ public abstract class AbstractMailServerSmtpResourceFuncTest { @Test @Order(1) - void testGetMailServerSmtpNotConfigured() throws Exception { + protected void testGetMailServerSmtpNotConfigured() throws Exception { final HttpResponse mailServerSmtpResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_SMTP) .request(); assertEquals(Response.Status.NO_CONTENT.getStatusCode(), mailServerSmtpResponse.statusCode()); diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java index b286b95e..f3e36a96 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java @@ -4,6 +4,9 @@ import com.atlassian.cache.ManagedCache; import com.deftdevs.bootstrapi.confluence.model.CacheModel; +import java.util.SortedMap; +import java.util.function.Supplier; + public class CacheModelUtil { /** @@ -16,7 +19,7 @@ public static CacheModel toCacheModel( return CacheModel.builder() .name(managedCache.getName()) - .currentHeapSizeInByte(managedCache.getStatistics().get(CacheStatisticsKey.HEAP_SIZE).get()) + .currentHeapSizeInByte(getStatistic(managedCache, CacheStatisticsKey.HEAP_SIZE)) .effectivenessInPercent(getEffectiveness(managedCache)) .maxObjectCount(managedCache.currentMaxEntries()) .utilisationInPercent(getUtilization(managedCache)) @@ -24,27 +27,36 @@ public static CacheModel toCacheModel( .build(); } - private static double getEffectiveness( + private static Long getStatistic( + final ManagedCache cache, + final CacheStatisticsKey key) { + + final SortedMap> statistics = cache.getStatistics(); + final Supplier supplier = statistics.get(key); + return supplier != null ? supplier.get() : null; + } + + private static Double getEffectiveness( final ManagedCache cache) { - long hit = cache.getStatistics().get(CacheStatisticsKey.HIT_COUNT).get(); - long miss = cache.getStatistics().get(CacheStatisticsKey.MISS_COUNT).get(); + final Long hit = getStatistic(cache, CacheStatisticsKey.HIT_COUNT); + final Long miss = getStatistic(cache, CacheStatisticsKey.MISS_COUNT); + if (hit == null || miss == null || hit + miss == 0) { + return null; + } return (double) hit * 100 / (hit + miss); } - private static Double getUtilization( final ManagedCache cache) { - // currentMaxEntries can be null so check this first - - long objects = cache.getStatistics().get(CacheStatisticsKey.SIZE).get(); - Integer size = cache.currentMaxEntries(); + final Long objects = getStatistic(cache, CacheStatisticsKey.SIZE); + final Integer size = cache.currentMaxEntries(); - if (size != null) { - return (double) objects * 100 / size; + if (objects == null || size == null) { + return null; } - return null; + return (double) objects * 100 / size; } private CacheModelUtil() { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/CachesServiceImpl.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/CachesServiceImpl.java index 284d19a3..1e3713d8 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/CachesServiceImpl.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/CachesServiceImpl.java @@ -8,11 +8,17 @@ import com.deftdevs.bootstrapi.confluence.model.util.CacheModelUtil; import com.deftdevs.bootstrapi.confluence.service.api.CachesService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; public class CachesServiceImpl implements CachesService { + private static final Logger log = LoggerFactory.getLogger(CachesServiceImpl.class); + private final CacheManager cacheManager; public CachesServiceImpl( @@ -23,9 +29,16 @@ public CachesServiceImpl( @Override public List getAllCaches() { - return cacheManager.getManagedCaches().stream() - .map(CacheModelUtil::toCacheModel) - .collect(Collectors.toList()); + final Collection managedCaches = cacheManager.getManagedCaches(); + final List cacheModels = new ArrayList<>(); + for (ManagedCache managedCache : managedCaches) { + try { + cacheModels.add(CacheModelUtil.toCacheModel(managedCache)); + } catch (Exception e) { + log.warn("Failed to convert cache '{}': {}", managedCache.getName(), e.getMessage()); + } + } + return cacheModels; } @Override diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceImpl.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceImpl.java index 74aea3c9..9707741c 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceImpl.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceImpl.java @@ -1,12 +1,12 @@ package com.deftdevs.bootstrapi.confluence.service; +import com.atlassian.confluence.jmx.JmxSMTPMailServer; +import com.atlassian.confluence.mail.ConfluencePopMailServer; import com.atlassian.mail.MailException; import com.atlassian.mail.MailProtocol; import com.atlassian.mail.server.MailServerManager; import com.atlassian.mail.server.PopMailServer; import com.atlassian.mail.server.SMTPMailServer; -import com.atlassian.mail.server.impl.PopMailServerImpl; -import com.atlassian.mail.server.impl.SMTPMailServerImpl; import com.deftdevs.bootstrapi.commons.exception.web.BadRequestException; import com.deftdevs.bootstrapi.commons.model.MailServerPopModel; import com.deftdevs.bootstrapi.commons.model.MailServerSmtpModel; @@ -35,7 +35,7 @@ public MailServerSmtpModel getMailServerSmtp() { public MailServerSmtpModel setMailServerSmtp(MailServerSmtpModel mailServerSmtpModel) { final SMTPMailServer smtpMailServer = mailServerManager.isDefaultSMTPMailServerDefined() ? mailServerManager.getDefaultSMTPMailServer() - : new SMTPMailServerImpl.Builder<>().build(); + : new JmxSMTPMailServer(); assert smtpMailServer != null; @@ -100,7 +100,7 @@ public MailServerPopModel setMailServerPop( final PopMailServer popMailServer = mailServerManager.getDefaultPopMailServer() != null ? mailServerManager.getDefaultPopMailServer() - : new PopMailServerImpl.Builder<>().build(); + : new ConfluencePopMailServer(null, null, null, null, null, null, null, null, null); assert popMailServer != null; diff --git a/confluence/src/test/java/com/atlassian/mail/server/DefaultTestPopMailServerImpl.java b/confluence/src/test/java/com/atlassian/mail/server/DefaultTestPopMailServerImpl.java index 2da975d0..dc792fe0 100644 --- a/confluence/src/test/java/com/atlassian/mail/server/DefaultTestPopMailServerImpl.java +++ b/confluence/src/test/java/com/atlassian/mail/server/DefaultTestPopMailServerImpl.java @@ -1,8 +1,8 @@ package com.atlassian.mail.server; -import com.atlassian.mail.server.impl.PopMailServerImpl; +import com.atlassian.confluence.mail.ConfluencePopMailServer; -public class DefaultTestPopMailServerImpl extends PopMailServerImpl implements DefaultTestPopMailServer { +public class DefaultTestPopMailServerImpl extends ConfluencePopMailServer implements DefaultTestPopMailServer { public DefaultTestPopMailServerImpl() { super( @@ -14,8 +14,9 @@ public DefaultTestPopMailServerImpl() { PORT, USERNAME, PASSWORD, - TIMEOUT + null ); + setTimeout(TIMEOUT); } } diff --git a/confluence/src/test/java/com/atlassian/mail/server/DefaultTestSmtpMailServerImpl.java b/confluence/src/test/java/com/atlassian/mail/server/DefaultTestSmtpMailServerImpl.java index a7737938..fdbb8f47 100644 --- a/confluence/src/test/java/com/atlassian/mail/server/DefaultTestSmtpMailServerImpl.java +++ b/confluence/src/test/java/com/atlassian/mail/server/DefaultTestSmtpMailServerImpl.java @@ -1,8 +1,8 @@ package com.atlassian.mail.server; -import com.atlassian.mail.server.impl.SMTPMailServerImpl; +import com.atlassian.confluence.jmx.JmxSMTPMailServer; -public class DefaultTestSmtpMailServerImpl extends SMTPMailServerImpl implements DefaultTestSmtpMailServer { +public class DefaultTestSmtpMailServerImpl extends JmxSMTPMailServer implements DefaultTestSmtpMailServer { public DefaultTestSmtpMailServerImpl() { super( @@ -12,6 +12,7 @@ public DefaultTestSmtpMailServerImpl() { FROM, PREFIX, false, + false, PROTOCOL, HOST, PORT, diff --git a/confluence/src/test/java/com/atlassian/mail/server/OtherTestPopMailServerImpl.java b/confluence/src/test/java/com/atlassian/mail/server/OtherTestPopMailServerImpl.java index d5a3e740..87812778 100644 --- a/confluence/src/test/java/com/atlassian/mail/server/OtherTestPopMailServerImpl.java +++ b/confluence/src/test/java/com/atlassian/mail/server/OtherTestPopMailServerImpl.java @@ -1,8 +1,8 @@ package com.atlassian.mail.server; -import com.atlassian.mail.server.impl.PopMailServerImpl; +import com.atlassian.confluence.mail.ConfluencePopMailServer; -public class OtherTestPopMailServerImpl extends PopMailServerImpl implements OtherTestPopMailServer { +public class OtherTestPopMailServerImpl extends ConfluencePopMailServer implements OtherTestPopMailServer { public OtherTestPopMailServerImpl() { super( @@ -14,10 +14,9 @@ public OtherTestPopMailServerImpl() { PORT, USERNAME, PASSWORD, - TIMEOUT + null ); + setTimeout(TIMEOUT); } - - } diff --git a/confluence/src/test/java/com/atlassian/mail/server/OtherTestSmtpMailServerImpl.java b/confluence/src/test/java/com/atlassian/mail/server/OtherTestSmtpMailServerImpl.java index 965510ef..de56708d 100644 --- a/confluence/src/test/java/com/atlassian/mail/server/OtherTestSmtpMailServerImpl.java +++ b/confluence/src/test/java/com/atlassian/mail/server/OtherTestSmtpMailServerImpl.java @@ -1,8 +1,8 @@ package com.atlassian.mail.server; -import com.atlassian.mail.server.impl.SMTPMailServerImpl; +import com.atlassian.confluence.jmx.JmxSMTPMailServer; -public class OtherTestSmtpMailServerImpl extends SMTPMailServerImpl implements OtherTestSmtpMailServer { +public class OtherTestSmtpMailServerImpl extends JmxSMTPMailServer implements OtherTestSmtpMailServer { public OtherTestSmtpMailServerImpl() { super( @@ -12,6 +12,7 @@ public OtherTestSmtpMailServerImpl() { FROM, PREFIX, false, + false, PROTOCOL, HOST, PORT, diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/ApplicationLinksResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/ApplicationLinksResourceFuncTest.java index d54bfd3e..de76ea14 100644 --- a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/ApplicationLinksResourceFuncTest.java +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/ApplicationLinksResourceFuncTest.java @@ -2,5 +2,4 @@ import it.com.deftdevs.bootstrapi.commons.rest.AbstractApplicationLinksResourceFuncTest; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } +public class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/CachesResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/CachesResourceFuncTest.java new file mode 100644 index 00000000..09fa64c2 --- /dev/null +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/CachesResourceFuncTest.java @@ -0,0 +1,50 @@ +package it.com.deftdevs.bootstrapi.confluence.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import com.deftdevs.bootstrapi.confluence.model.CacheModel; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class CachesResourceFuncTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetCaches() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.CACHES) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final List caches = objectMapper.readValue(response.body(), new TypeReference>(){}); + assertNotNull(caches); + assertFalse(caches.isEmpty()); + } + + @Test + void testGetCachesUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.CACHES) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetCachesUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.CACHES) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/LicensesResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/LicensesResourceFuncTest.java new file mode 100644 index 00000000..4febb223 --- /dev/null +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/LicensesResourceFuncTest.java @@ -0,0 +1,51 @@ +package it.com.deftdevs.bootstrapi.confluence.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import com.deftdevs.bootstrapi.commons.model.LicenseModel; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class LicensesResourceFuncTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetLicenses() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), licensesResponse.statusCode(), licensesResponse.body()); + + final List licenseModels = objectMapper.readValue(licensesResponse.body(), new TypeReference>(){}); + assertNotNull(licenseModels); + assertFalse(licenseModels.isEmpty()); + assertNotNull(licenseModels.iterator().next().getOrganization()); + } + + @Test + void testGetLicensesUnauthenticated() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), licensesResponse.statusCode()); + } + + @Test + void testGetLicensesUnauthorized() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), licensesResponse.statusCode()); + } +} diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerPopResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerPopResourceFuncTest.java index 4f032d94..d5e21e88 100644 --- a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerPopResourceFuncTest.java +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerPopResourceFuncTest.java @@ -1,6 +1,27 @@ package it.com.deftdevs.bootstrapi.confluence.rest; +import com.deftdevs.bootstrapi.commons.model.MailServerPopModel; import it.com.deftdevs.bootstrapi.commons.rest.AbstractMailServerPopResourceFuncTest; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class MailServerPopResourceFuncTest extends AbstractMailServerPopResourceFuncTest { } +public class MailServerPopResourceFuncTest extends AbstractMailServerPopResourceFuncTest { + + @Test + @Order(1) + @Override + protected void testGetMailServerPopNotConfigured() { + // no-op: Confluence's test instance already has POP mail configuration + } + + @Override + protected MailServerPopModel getExampleModel() { + return MailServerPopModel.builder() + .name("Test POP Server") + .protocol("pop3") + .host("localhost") + .port(3110) + .timeout(5000L) + .build(); + } +} diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerSmtpResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerSmtpResourceFuncTest.java index 934d1151..aed31226 100644 --- a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerSmtpResourceFuncTest.java +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/MailServerSmtpResourceFuncTest.java @@ -1,6 +1,30 @@ package it.com.deftdevs.bootstrapi.confluence.rest; +import com.deftdevs.bootstrapi.commons.model.MailServerSmtpModel; import it.com.deftdevs.bootstrapi.commons.rest.AbstractMailServerSmtpResourceFuncTest; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class MailServerSmtpResourceFuncTest extends AbstractMailServerSmtpResourceFuncTest { } +public class MailServerSmtpResourceFuncTest extends AbstractMailServerSmtpResourceFuncTest { + + @Test + @Order(1) + @Override + protected void testGetMailServerSmtpNotConfigured() { + // no-op: Confluence's test instance already has SMTP mail configuration + } + + @Override + protected MailServerSmtpModel getExampleModel() { + return MailServerSmtpModel.builder() + .name("Test SMTP Server") + .from("test@example.com") + .prefix("[Test]") + .protocol("smtp") + .host("localhost") + .port(3025) + .useTls(false) + .timeout(5000L) + .build(); + } +} diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/PermissionsResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/PermissionsResourceFuncTest.java new file mode 100644 index 00000000..2259e041 --- /dev/null +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/PermissionsResourceFuncTest.java @@ -0,0 +1,42 @@ +package it.com.deftdevs.bootstrapi.confluence.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PermissionsResourceFuncTest { + + private static final String PERMISSIONS_GLOBAL_PATH = BootstrAPI.PERMISSIONS + "/" + BootstrAPI.PERMISSIONS_GLOBAL; + + @Test + void testGetPermissionsGlobal() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + } + + @Test + void testGetPermissionsGlobalUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetPermissionsGlobalUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/SettingsCustomHtmlResourceFuncTest.java b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/SettingsCustomHtmlResourceFuncTest.java new file mode 100644 index 00000000..89ef28d2 --- /dev/null +++ b/confluence/src/test/java/it/com/deftdevs/bootstrapi/confluence/rest/SettingsCustomHtmlResourceFuncTest.java @@ -0,0 +1,83 @@ +package it.com.deftdevs.bootstrapi.confluence.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import com.deftdevs.bootstrapi.confluence.model.SettingsCustomHtmlModel; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class SettingsCustomHtmlResourceFuncTest { + + private static final String SETTINGS_CUSTOM_HTML_PATH = BootstrAPI.SETTINGS + "/" + BootstrAPI.SETTINGS_CUSTOM_HTML; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetCustomHtml() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final SettingsCustomHtmlModel model = objectMapper.readValue(response.body(), SettingsCustomHtmlModel.class); + assertNotNull(model); + } + + @Test + void testSetCustomHtml() throws Exception { + final SettingsCustomHtmlModel exampleModel = SettingsCustomHtmlModel.EXAMPLE_1; + + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .request(HttpMethod.PUT, exampleModel); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final SettingsCustomHtmlModel model = objectMapper.readValue(response.body(), SettingsCustomHtmlModel.class); + assertEquals(exampleModel, model); + } + + @Test + void testGetCustomHtmlUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testSetCustomHtmlUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .username("wrong") + .password("password") + .request(HttpMethod.PUT, SettingsCustomHtmlModel.EXAMPLE_1); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetCustomHtmlUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } + + @Test + void testSetCustomHtmlUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_CUSTOM_HTML_PATH) + .username("user") + .password("user") + .request(HttpMethod.PUT, SettingsCustomHtmlModel.EXAMPLE_1); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtilTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtilTest.java index 31e86672..7c8a4570 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtilTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtilTest.java @@ -3,7 +3,6 @@ import com.atlassian.crowd.manager.mail.MailConfiguration; import com.atlassian.crowd.manager.mail.MockMailConfiguration; import com.deftdevs.bootstrapi.commons.model.MailServerSmtpModel; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; @@ -33,7 +32,6 @@ public void testToMailServerSmtpModelWithNull() { } @Test - @Disabled("Running in IntelliJ, failing in Maven!?") public void testToMailConfiguration() throws AddressException { final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.EXAMPLE_1; diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationLinksResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationLinksResourceFuncTest.java index 4273bbc3..84ed33c7 100644 --- a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationLinksResourceFuncTest.java +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationLinksResourceFuncTest.java @@ -2,5 +2,4 @@ import it.com.deftdevs.bootstrapi.commons.rest.AbstractApplicationLinksResourceFuncTest; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } +public class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationsResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationsResourceFuncTest.java new file mode 100644 index 00000000..cffda362 --- /dev/null +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/ApplicationsResourceFuncTest.java @@ -0,0 +1,40 @@ +package it.com.deftdevs.bootstrapi.crowd.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ApplicationsResourceFuncTest { + + @Test + void testGetApplications() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.APPLICATIONS) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + } + + @Test + void testGetApplicationsUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.APPLICATIONS) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetApplicationsUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(BootstrAPI.APPLICATIONS) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailServerSmtpResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailServerSmtpResourceFuncTest.java index 8e3bc96d..b075bb11 100644 --- a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailServerSmtpResourceFuncTest.java +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailServerSmtpResourceFuncTest.java @@ -2,9 +2,19 @@ import com.deftdevs.bootstrapi.commons.model.MailServerSmtpModel; import it.com.deftdevs.bootstrapi.commons.rest.AbstractMailServerSmtpResourceFuncTest; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; public class MailServerSmtpResourceFuncTest extends AbstractMailServerSmtpResourceFuncTest { + // Crowd test data already has mail configured, so skip the "not configured" test + @Test + @Order(1) + @Override + protected void testGetMailServerSmtpNotConfigured() { + // no-op: Crowd's test data already has mail configuration + } + @Override protected MailServerSmtpModel getExampleModel() { return MailServerSmtpModel.builder() diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailTemplatesResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailTemplatesResourceFuncTest.java new file mode 100644 index 00000000..f8406f8a --- /dev/null +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/MailTemplatesResourceFuncTest.java @@ -0,0 +1,81 @@ +package it.com.deftdevs.bootstrapi.crowd.rest; + +import com.deftdevs.bootstrapi.crowd.model.MailTemplatesModel; +import com.deftdevs.bootstrapi.crowd.rest.api.MailTemplateResource; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class MailTemplatesResourceFuncTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetMailTemplates() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final MailTemplatesModel mailTemplatesModel = objectMapper.readValue(response.body(), MailTemplatesModel.class); + assertNotNull(mailTemplatesModel); + } + + @Test + void testSetMailTemplates() throws Exception { + final MailTemplatesModel exampleModel = MailTemplatesModel.EXAMPLE_1; + + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .request(HttpMethod.PUT, exampleModel); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final MailTemplatesModel mailTemplatesModel = objectMapper.readValue(response.body(), MailTemplatesModel.class); + assertEquals(exampleModel, mailTemplatesModel); + } + + @Test + void testGetMailTemplatesUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testSetMailTemplatesUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .username("wrong") + .password("password") + .request(HttpMethod.PUT, MailTemplatesModel.EXAMPLE_1); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetMailTemplatesUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } + + @Test + void testSetMailTemplatesUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(MailTemplateResource.MAIL_TEMPLATES) + .username("user") + .password("user") + .request(HttpMethod.PUT, MailTemplatesModel.EXAMPLE_1); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/UserResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/UserResourceFuncTest.java new file mode 100644 index 00000000..5f5fc8b7 --- /dev/null +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/UserResourceFuncTest.java @@ -0,0 +1,5 @@ +package it.com.deftdevs.bootstrapi.crowd.rest; + +import it.com.deftdevs.bootstrapi.commons.rest.AbstractUserResourceFuncTest; + +public class UserResourceFuncTest extends AbstractUserResourceFuncTest { } diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/ApplicationLinksResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/ApplicationLinksResourceFuncTest.java index 121fa180..564efe1c 100644 --- a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/ApplicationLinksResourceFuncTest.java +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/ApplicationLinksResourceFuncTest.java @@ -2,5 +2,4 @@ import it.com.deftdevs.bootstrapi.commons.rest.AbstractApplicationLinksResourceFuncTest; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } +public class ApplicationLinksResourceFuncTest extends AbstractApplicationLinksResourceFuncTest { } diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/LicensesResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/LicensesResourceFuncTest.java new file mode 100644 index 00000000..e58f05e3 --- /dev/null +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/LicensesResourceFuncTest.java @@ -0,0 +1,51 @@ +package it.com.deftdevs.bootstrapi.jira.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import com.deftdevs.bootstrapi.commons.model.LicenseModel; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class LicensesResourceFuncTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetLicenses() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), licensesResponse.statusCode(), licensesResponse.body()); + + final List licenseModels = objectMapper.readValue(licensesResponse.body(), new TypeReference>(){}); + assertNotNull(licenseModels); + assertFalse(licenseModels.isEmpty()); + assertNotNull(licenseModels.iterator().next().getOrganization()); + } + + @Test + void testGetLicensesUnauthenticated() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), licensesResponse.statusCode()); + } + + @Test + void testGetLicensesUnauthorized() throws Exception { + final HttpResponse licensesResponse = HttpRequestHelper.builder(BootstrAPI.LICENSES) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), licensesResponse.statusCode()); + } +} diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerPopResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerPopResourceFuncTest.java index cda6a3cf..0f4a33b6 100644 --- a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerPopResourceFuncTest.java +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerPopResourceFuncTest.java @@ -1,6 +1,18 @@ package it.com.deftdevs.bootstrapi.jira.rest; +import com.deftdevs.bootstrapi.commons.model.MailServerPopModel; import it.com.deftdevs.bootstrapi.commons.rest.AbstractMailServerPopResourceFuncTest; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class MailServerPopResourceFuncTest extends AbstractMailServerPopResourceFuncTest { } +public class MailServerPopResourceFuncTest extends AbstractMailServerPopResourceFuncTest { + + @Override + protected MailServerPopModel getExampleModel() { + return MailServerPopModel.builder() + .name("Test POP Server") + .protocol("pop3") + .host("localhost") + .port(3110) + .timeout(5000L) + .build(); + } +} diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerSmtpResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerSmtpResourceFuncTest.java index 262a87d5..5a14f6fb 100644 --- a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerSmtpResourceFuncTest.java +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/MailServerSmtpResourceFuncTest.java @@ -1,6 +1,21 @@ package it.com.deftdevs.bootstrapi.jira.rest; +import com.deftdevs.bootstrapi.commons.model.MailServerSmtpModel; import it.com.deftdevs.bootstrapi.commons.rest.AbstractMailServerSmtpResourceFuncTest; -// TODO: Make them run by fixing test and then removing 'abstract' -public abstract class MailServerSmtpResourceFuncTest extends AbstractMailServerSmtpResourceFuncTest { } +public class MailServerSmtpResourceFuncTest extends AbstractMailServerSmtpResourceFuncTest { + + @Override + protected MailServerSmtpModel getExampleModel() { + return MailServerSmtpModel.builder() + .name("Test SMTP Server") + .from("test@example.com") + .prefix("[Test]") + .protocol("smtp") + .host("localhost") + .port(3025) + .useTls(false) + .timeout(5000L) + .build(); + } +} diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/PermissionsResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/PermissionsResourceFuncTest.java new file mode 100644 index 00000000..d6af12e8 --- /dev/null +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/PermissionsResourceFuncTest.java @@ -0,0 +1,42 @@ +package it.com.deftdevs.bootstrapi.jira.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PermissionsResourceFuncTest { + + private static final String PERMISSIONS_GLOBAL_PATH = BootstrAPI.PERMISSIONS + "/" + BootstrAPI.PERMISSIONS_GLOBAL; + + @Test + void testGetPermissionsGlobal() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + } + + @Test + void testGetPermissionsGlobalUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetPermissionsGlobalUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(PERMISSIONS_GLOBAL_PATH) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +} diff --git a/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/SettingsBannerResourceFuncTest.java b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/SettingsBannerResourceFuncTest.java new file mode 100644 index 00000000..04940856 --- /dev/null +++ b/jira/src/test/java/it/com/deftdevs/bootstrapi/jira/rest/SettingsBannerResourceFuncTest.java @@ -0,0 +1,83 @@ +package it.com.deftdevs.bootstrapi.jira.rest; + +import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import com.deftdevs.bootstrapi.jira.model.SettingsBannerModel; +import com.fasterxml.jackson.databind.ObjectMapper; +import it.com.deftdevs.bootstrapi.commons.rest.HttpRequestHelper; +import org.junit.jupiter.api.Test; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.Response; +import java.net.http.HttpResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class SettingsBannerResourceFuncTest { + + private static final String SETTINGS_BANNER_PATH = BootstrAPI.SETTINGS + "/" + BootstrAPI.SETTINGS_BANNER; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testGetBanner() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .request(); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final SettingsBannerModel bannerModel = objectMapper.readValue(response.body(), SettingsBannerModel.class); + assertNotNull(bannerModel); + } + + @Test + void testSetBanner() throws Exception { + final SettingsBannerModel exampleModel = SettingsBannerModel.EXAMPLE_1; + + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .request(HttpMethod.PUT, exampleModel); + assertEquals(Response.Status.OK.getStatusCode(), response.statusCode(), response.body()); + + final SettingsBannerModel bannerModel = objectMapper.readValue(response.body(), SettingsBannerModel.class); + assertEquals(exampleModel, bannerModel); + } + + @Test + void testGetBannerUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .username("wrong") + .password("password") + .request(); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testSetBannerUnauthenticated() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .username("wrong") + .password("password") + .request(HttpMethod.PUT, SettingsBannerModel.EXAMPLE_1); + + assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), response.statusCode()); + } + + @Test + void testGetBannerUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .username("user") + .password("user") + .request(); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } + + @Test + void testSetBannerUnauthorized() throws Exception { + final HttpResponse response = HttpRequestHelper.builder(SETTINGS_BANNER_PATH) + .username("user") + .password("user") + .request(HttpMethod.PUT, SettingsBannerModel.EXAMPLE_1); + + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), response.statusCode()); + } +}