Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@ public class MailServerPopModel extends AbstractMailServerProtocolModel {
.host("mail.example.com")
.build();

// greenmail-compatible so functional tests can apply it against the integration
// test environment (see ci.yaml)
public static final MailServerPopModel EXAMPLE_2 = MailServerPopModel.builder()
.name("Example")
.host("mail.example.com")
.port(110)
.protocol("pop3")
.host("localhost")
.port(3110)
.timeout(5000L)
.build();

}
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,17 @@ public boolean getUseTls() {
.host("mail.example.com")
.build();

// greenmail-compatible so functional tests can apply it against the integration
// test environment (see ci.yaml); only fields that products echo back are set
public static final MailServerSmtpModel EXAMPLE_2 = MailServerSmtpModel.builder()
.name("Example")
.adminContact(null)
.from("mail@example.com")
.prefix("[Example]")
.host("mail.example.com")
.description("test smtp server")
.port(25)
.protocol("smtp")
.timeout(2000L)
.username("admin")
.password("password")
.host("localhost")
.port(3025)
.useTls(false)
.timeout(5000L)
.build();

}
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,16 @@ public Response setMailServerPop(
final MailServerPopModel updatedPopModel = mailServerService.setMailServerPop(bean);
return Response.ok(updatedPopModel).build();
}

@Override
public Response deleteMailServerSmtp() {
mailServerService.deleteMailServerSmtp();
return Response.noContent().build();
}

@Override
public Response deleteMailServerPop() {
mailServerService.deleteMailServerPop();
return Response.noContent().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.swagger.v3.oas.annotations.responses.ApiResponse;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
Expand Down Expand Up @@ -62,4 +63,23 @@ public interface MailServerPopResource {
Response setMailServerPop(
final MailServerPopModel bean);

@DELETE
@Path(BootstrAPI.MAIL_SERVER_POP)
@Operation(
tags = { BootstrAPI.MAIL_SERVER },
summary = "Remove the default POP mail server",
description = "Removes the default POP mail server if one is configured; does nothing otherwise.",
responses = {
@ApiResponse(
responseCode = "204",
description = "The default POP mail server has been removed or none was configured."
),
@ApiResponse(
responseCode = "default", content = @Content(schema = @Schema(implementation = ErrorCollection.class)),
description = "Returns a list of error messages."
),
}
)
Response deleteMailServerPop();

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import io.swagger.v3.oas.annotations.responses.ApiResponse;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
Expand Down Expand Up @@ -62,4 +63,23 @@ public interface MailServerSmtpResource {
Response setMailServerSmtp(
final MailServerSmtpModel bean);

@DELETE
@Path(BootstrAPI.MAIL_SERVER_SMTP)
@Operation(
tags = { BootstrAPI.MAIL_SERVER },
summary = "Remove the default SMTP mail server",
description = "Removes the default SMTP mail server if one is configured; does nothing otherwise.",
responses = {
@ApiResponse(
responseCode = "204",
description = "The default SMTP mail server has been removed or none was configured."
),
@ApiResponse(
responseCode = "default", content = @Content(schema = @Schema(implementation = ErrorCollection.class)),
description = "Returns a list of error messages."
),
}
)
Response deleteMailServerSmtp();

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ public interface MailServerService {
MailServerSmtpModel setMailServerSmtp(
final MailServerSmtpModel smtpModel);

/**
* Removes the default smtp mailserver if one is configured; does nothing otherwise.
*/
void deleteMailServerSmtp();

/**
* Get the pop mailserver settings.
*
Expand All @@ -37,4 +42,9 @@ MailServerSmtpModel setMailServerSmtp(
*/
MailServerPopModel setMailServerPop(
final MailServerPopModel popModel);

/**
* Removes the default pop mailserver if one is configured; does nothing otherwise.
*/
void deleteMailServerPop();
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;

@ExtendWith(MockitoExtension.class)
class MailServerResourceTest {
Expand Down Expand Up @@ -78,4 +79,20 @@ void testSetMailServerPopSettings() {

assertEquals(popModel, bean);
}

@Test
void testDeleteMailServerSmtp() {
final Response response = resource.deleteMailServerSmtp();

assertEquals(204, response.getStatus());
verify(mailServerService).deleteMailServerSmtp();
}

@Test
void testDeleteMailServerPop() {
final Response response = resource.deleteMailServerPop();

assertEquals(204, response.getStatus());
verify(mailServerService).deleteMailServerPop();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ public abstract class AbstractMailServerPopResourceFuncTest {
@Test
@Order(1)
protected void testGetMailServerPopNotConfigured() throws Exception {
// delete any existing configuration first so this test does not depend
// on the state left behind by other test classes
final HttpResponse<String> deleteResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP)
.request(HttpMethod.DELETE, null);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.statusCode());

final HttpResponse<String> mailServerPopResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_POP)
.request();
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), mailServerPopResponse.statusCode());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ public abstract class AbstractMailServerSmtpResourceFuncTest {
@Test
@Order(1)
protected void testGetMailServerSmtpNotConfigured() throws Exception {
// delete any existing configuration first so this test does not depend
// on the state left behind by other test classes
final HttpResponse<String> deleteResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_SMTP)
.request(HttpMethod.DELETE, null);
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), deleteResponse.statusCode());

final HttpResponse<String> mailServerSmtpResponse = HttpRequestHelper.builder(BootstrAPI.MAIL_SERVER + "/" + BootstrAPI.MAIL_SERVER_SMTP)
.request();
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), mailServerSmtpResponse.statusCode());
Expand Down
50 changes: 50 additions & 0 deletions confluence/Apis/MailServerApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,62 @@ All URIs are relative to *https://CONFLUENCE_URL/rest/bootstrapi/1*

| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**deleteMailServerPop**](MailServerApi.md#deleteMailServerPop) | **DELETE** /mail-server/pop | Remove the default POP mail server |
| [**deleteMailServerSmtp**](MailServerApi.md#deleteMailServerSmtp) | **DELETE** /mail-server/smtp | Remove the default SMTP mail server |
| [**getMailServerPop**](MailServerApi.md#getMailServerPop) | **GET** /mail-server/pop | Get the default POP mail server |
| [**getMailServerSmtp**](MailServerApi.md#getMailServerSmtp) | **GET** /mail-server/smtp | Get the default SMTP mail server |
| [**setMailServerPop**](MailServerApi.md#setMailServerPop) | **PUT** /mail-server/pop | Set the default POP mail server |
| [**setMailServerSmtp**](MailServerApi.md#setMailServerSmtp) | **PUT** /mail-server/smtp | Set the default SMTP mail server |


<a name="deleteMailServerPop"></a>
# **deleteMailServerPop**
> deleteMailServerPop()

Remove the default POP mail server

Removes the default POP mail server if one is configured; does nothing otherwise.

### Parameters
This endpoint does not need any parameter.

### Return type

null (empty response body)

### Authorization

[basicAuth](../README.md#basicAuth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: */*

<a name="deleteMailServerSmtp"></a>
# **deleteMailServerSmtp**
> deleteMailServerSmtp()

Remove the default SMTP mail server

Removes the default SMTP mail server if one is configured; does nothing otherwise.

### Parameters
This endpoint does not need any parameter.

### Return type

null (empty response body)

### Authorization

[basicAuth](../README.md#basicAuth)

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: */*

<a name="getMailServerPop"></a>
# **getMailServerPop**
> MailServerPopModel getMailServerPop()
Expand Down
4 changes: 3 additions & 1 deletion confluence/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ All URIs are relative to *https://CONFLUENCE_URL/rest/bootstrapi/1*
| *LicenseApi* | [**addLicense**](Apis/LicenseApi.md#addLicense) | **POST** /license | Add a license |
| *LicensesApi* | [**getLicenses**](Apis/LicensesApi.md#getLicenses) | **GET** /licenses | Get all licenses information |
*LicensesApi* | [**setLicenses**](Apis/LicensesApi.md#setLicenses) | **PUT** /licenses | Set a list of licenses |
| *MailServerApi* | [**getMailServerPop**](Apis/MailServerApi.md#getMailServerPop) | **GET** /mail-server/pop | Get the default POP mail server |
| *MailServerApi* | [**deleteMailServerPop**](Apis/MailServerApi.md#deleteMailServerPop) | **DELETE** /mail-server/pop | Remove the default POP mail server |
*MailServerApi* | [**deleteMailServerSmtp**](Apis/MailServerApi.md#deleteMailServerSmtp) | **DELETE** /mail-server/smtp | Remove the default SMTP mail server |
*MailServerApi* | [**getMailServerPop**](Apis/MailServerApi.md#getMailServerPop) | **GET** /mail-server/pop | Get the default POP mail server |
*MailServerApi* | [**getMailServerSmtp**](Apis/MailServerApi.md#getMailServerSmtp) | **GET** /mail-server/smtp | Get the default SMTP mail server |
*MailServerApi* | [**setMailServerPop**](Apis/MailServerApi.md#setMailServerPop) | **PUT** /mail-server/pop | Set the default POP mail server |
*MailServerApi* | [**setMailServerSmtp**](Apis/MailServerApi.md#setMailServerSmtp) | **PUT** /mail-server/smtp | Set the default SMTP mail server |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,34 @@ public MailServerPopModel setMailServerPop(

return getMailServerPop();
}

@Override
public void deleteMailServerSmtp() {
final SMTPMailServer smtpMailServer = mailServerManager.getDefaultSMTPMailServer();

if (smtpMailServer == null) {
return;
}

try {
mailServerManager.delete(smtpMailServer.getId());
} catch (MailException e) {
throw new BadRequestException(e);
}
}

@Override
public void deleteMailServerPop() {
final PopMailServer popMailServer = mailServerManager.getDefaultPopMailServer();

if (popMailServer == null) {
return;
}

try {
mailServerManager.delete(popMailServer.getId());
} catch (MailException e) {
throw new BadRequestException(e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -216,4 +216,44 @@ void testPutPopMaiLServerException() throws Exception {
mailServerService.setMailServerPop(requestMailServerPopModel);
});
}

@Test
void testDeleteMailServerSmtp() throws Exception {
final SMTPMailServer smtpMailServer = new DefaultTestSmtpMailServerImpl();
doReturn(smtpMailServer).when(mailServerManager).getDefaultSMTPMailServer();

mailServerService.deleteMailServerSmtp();

verify(mailServerManager).delete(smtpMailServer.getId());
}

@Test
void testDeleteMailServerSmtpNotConfigured() throws Exception {
doReturn(null).when(mailServerManager).getDefaultSMTPMailServer();

mailServerService.deleteMailServerSmtp();

verify(mailServerManager, never()).delete(any());
}

@Test
void testDeleteMailServerPop() throws Exception {
final PopMailServer popMailServer = new DefaultTestPopMailServerImpl();
doReturn(popMailServer).when(mailServerManager).getDefaultPopMailServer();

mailServerService.deleteMailServerPop();

verify(mailServerManager).delete(popMailServer.getId());
}

@Test
void testDeleteMailServerSmtpException() throws Exception {
final SMTPMailServer smtpMailServer = new DefaultTestSmtpMailServerImpl();
doReturn(smtpMailServer).when(mailServerManager).getDefaultSMTPMailServer();
doThrow(new MailException("delete failed")).when(mailServerManager).delete(smtpMailServer.getId());

assertThrows(BadRequestException.class, () -> {
mailServerService.deleteMailServerSmtp();
});
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,5 @@
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;

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();
}
}
public class MailServerPopResourceFuncTest extends AbstractMailServerPopResourceFuncTest { }
Loading