From d107e79fc09a512528110a8c17ff84430fc7fbd8 Mon Sep 17 00:00:00 2001 From: Maciej Walusiak Date: Tue, 3 Nov 2026 09:11:59 +0100 Subject: [PATCH 1/3] Add Sandbox and Domain names; deprecate Testing, Inbox and SendingDomain names The product calls Email Testing inboxes "sandboxes" and sending domains "domains", and the OpenAPI spec documents only those names. Decisions: - Only entry points are renamed (accessors, methods, parameters, config); model, request and resource types keep their names until the next major, as a full type rename would need ~70 shim classes - Old names stay as @Deprecated(since = "1.11.0") delegates; interface defaults keep each endpoint implemented once in the *Impl classes - API paths stay on /inboxes and /sending_domains, so requests are unchanged - sandboxApi(), sandboxes() and getSandboxId() are handwritten because Javadoc can't see Lombok members, and the deprecation notes {@link} to them - DeprecatedNamesTest checks delegation with Mockito real-method mocks, so a delegate calling the wrong method fails Co-Authored-By: Claude Opus 5.5 --- README.md | 54 +++-- .../DomainsExample.java} | 12 +- .../general/AccountAccessExample.java | 4 +- .../AttachmentsExample.java | 16 +- .../{testing => sandbox}/BatchExample.java | 8 +- .../{testing => sandbox}/EmailExample.java | 8 +- .../examples/sandbox/MessagesExample.java | 67 ++++++ .../{testing => sandbox}/ProjectsExample.java | 10 +- .../examples/sandbox/SandboxesExample.java | 56 +++++ .../examples/testing/InboxesExample.java | 56 ----- .../examples/testing/MessagesExample.java | 67 ------ src/main/java/io/mailtrap/Constants.java | 9 +- .../api/accountaccesses/AccountAccesses.java | 2 +- .../io/mailtrap/api/accounts/Accounts.java | 2 +- .../mailtrap/api/attachments/Attachments.java | 12 +- .../api/attachments/AttachmentsImpl.java | 8 +- .../java/io/mailtrap/api/billing/Billing.java | 2 +- .../mailtrap/api/companyinfo/CompanyInfo.java | 24 +-- .../api/companyinfo/CompanyInfoImpl.java | 16 +- .../java/io/mailtrap/api/inboxes/Inboxes.java | 128 ++++++++---- .../io/mailtrap/api/inboxes/InboxesImpl.java | 36 ++-- .../marketingstats/MarketingStatsFilter.java | 4 +- .../io/mailtrap/api/messages/Messages.java | 56 ++--- .../mailtrap/api/messages/MessagesImpl.java | 52 ++--- .../mailtrap/api/permissions/Permissions.java | 2 +- .../io/mailtrap/api/projects/Projects.java | 14 +- .../api/sendingdomains/SendingDomains.java | 78 +++++-- .../sendingdomains/SendingDomainsImpl.java | 18 +- .../api/testingemails/TestingEmails.java | 10 +- .../api/testingemails/TestingEmailsImpl.java | 10 +- .../api/trackingoptouts/TrackingOptOuts.java | 2 +- .../io/mailtrap/client/MailtrapClient.java | 46 +++-- .../client/api/MailtrapEmailTestingApi.java | 19 +- .../io/mailtrap/config/MailtrapConfig.java | 43 +++- .../factory/MailtrapClientFactory.java | 12 +- .../ListAccountAccessQueryParams.java | 2 +- .../emailcampaigns/CreateEmailCampaign.java | 4 +- .../emailcampaigns/UpdateEmailCampaign.java | 4 +- .../emailcampaigns/EmailCampaign.java | 2 +- .../mailtrap/util/SendingContextHolder.java | 31 ++- .../java/io/mailtrap/DeprecatedNamesTest.java | 194 ++++++++++++++++++ .../api/attachments/AttachmentsImplTest.java | 10 +- .../mailtrap/api/inboxes/InboxesImplTest.java | 66 +++--- .../MarketingStatsImplTest.java | 4 +- .../api/messages/MessagesImplTest.java | 62 +++--- .../api/permissions/PermissionsImplTest.java | 2 +- .../api/projects/ProjectsImplTest.java | 2 +- .../SendingDomainsImplTest.java | 26 +-- .../testingemails/TestingEmailsImplTest.java | 50 ++--- .../mailtrap/client/MailtrapClientTest.java | 14 +- .../io/mailtrap/testutils/BaseSendTest.java | 6 +- .../java/io/mailtrap/testutils/BaseTest.java | 4 +- 52 files changed, 922 insertions(+), 524 deletions(-) rename examples/java/io/mailtrap/examples/{sendingdomains/SendingDomainsExample.java => domains/DomainsExample.java} (84%) rename examples/java/io/mailtrap/examples/{testing => sandbox}/AttachmentsExample.java (51%) rename examples/java/io/mailtrap/examples/{testing => sandbox}/BatchExample.java (85%) rename examples/java/io/mailtrap/examples/{testing => sandbox}/EmailExample.java (81%) create mode 100644 examples/java/io/mailtrap/examples/sandbox/MessagesExample.java rename examples/java/io/mailtrap/examples/{testing => sandbox}/ProjectsExample.java (73%) create mode 100644 examples/java/io/mailtrap/examples/sandbox/SandboxesExample.java delete mode 100644 examples/java/io/mailtrap/examples/testing/InboxesExample.java delete mode 100644 examples/java/io/mailtrap/examples/testing/MessagesExample.java create mode 100644 src/test/java/io/mailtrap/DeprecatedNamesTest.java diff --git a/README.md b/README.md index 31575f9..e3d00e2 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ Example config init: final MailtrapConfig config = new MailtrapConfig.Builder() .token("") .sandbox(true) - .inboxId(123456) + .sandboxId(123456) .build(); ``` @@ -110,13 +110,13 @@ public class MailtrapJavaSDKSandboxTest { private static final String TOKEN = ""; private static final String SENDER_EMAIL = "sender@domain.com"; private static final String RECIPIENT_EMAIL = "recipient@domain.com"; - private static final long INBOX_ID = 1L; + private static final long SANDBOX_ID = 1L; public static void main(String[] args) { final MailtrapConfig config = new MailtrapConfig.Builder() .token(TOKEN) .sandbox(true) - .inboxId(INBOX_ID) + .sandboxId(SANDBOX_ID) .build(); final MailtrapClient client = MailtrapClientFactory.createMailtrapClient(config); @@ -163,7 +163,7 @@ public class SwitchSendFromClient { private static final String TOKEN = ""; private static final String SENDER_EMAIL = "sender@domain.com"; private static final String RECIPIENT_EMAIL = "recipient@domain.com"; - private static final long INBOX_ID = 1L; + private static final long SANDBOX_ID = 1L; public static void main(String[] args) { // Minimal config init, just token @@ -188,7 +188,7 @@ public class SwitchSendFromClient { client.send(mail); // Sandbox send - client.switchToEmailTestingApi(INBOX_ID); + client.switchToEmailSandboxApi(SANDBOX_ID); client.send(mail); } @@ -220,7 +220,7 @@ public class FullFeaturedExample { public static void main(String[] args) { final var config = new MailtrapConfig.Builder() .token(TOKEN) - //by default both `bulk` and `sandbox` are null, `inboxId` is null + //by default both `bulk` and `sandbox` are null, `sandboxId` is null .build(); final var client = MailtrapClientFactory.createMailtrapClient(config); @@ -347,21 +347,21 @@ You can find the [Mailtrap Java API reference](https://mailtrap.github.io/mailtr - [Error handling](examples/java/io/mailtrap/examples/sending/ErrorsExample.java) - [Send using template](examples/java/io/mailtrap/examples/sending/TemplateExample.java) - [Batch](examples/java/io/mailtrap/examples/sending/BatchExample.java) -- [Sending Domains](examples/java/io/mailtrap/examples/sendingdomains/SendingDomainsExample.java) +- [Domains](examples/java/io/mailtrap/examples/domains/DomainsExample.java) - [Company Info](examples/java/io/mailtrap/examples/companyinfo/CompanyInfoExample.java) - [Suppressions](examples/java/io/mailtrap/examples/suppressions/SuppressionsExample.java) - [Tracking Opt-outs](examples/java/io/mailtrap/examples/trackingoptouts/TrackingOptOutsExample.java) - [Stats](examples/java/io/mailtrap/examples/sending/StatsExample.java) - [Email Logs](examples/java/io/mailtrap/examples/emaillogs/EmailLogsExample.java) -### Email Testing API +### Email Sandbox API -- [Attachments](examples/java/io/mailtrap/examples/testing/AttachmentsExample.java) -- [Inboxes](examples/java/io/mailtrap/examples/testing/InboxesExample.java) -- [Messages](examples/java/io/mailtrap/examples/testing/MessagesExample.java) -- [Projects](examples/java/io/mailtrap/examples/testing/ProjectsExample.java) -- [Sandbox send using template](examples/java/io/mailtrap/examples/testing/EmailExample.java) -- [Batch](examples/java/io/mailtrap/examples/testing/BatchExample.java) +- [Attachments](examples/java/io/mailtrap/examples/sandbox/AttachmentsExample.java) +- [Sandboxes](examples/java/io/mailtrap/examples/sandbox/SandboxesExample.java) +- [Messages](examples/java/io/mailtrap/examples/sandbox/MessagesExample.java) +- [Projects](examples/java/io/mailtrap/examples/sandbox/ProjectsExample.java) +- [Sandbox send using template](examples/java/io/mailtrap/examples/sandbox/EmailExample.java) +- [Batch](examples/java/io/mailtrap/examples/sandbox/BatchExample.java) ### Inbound Email API @@ -394,6 +394,32 @@ You can find the [Mailtrap Java API reference](https://mailtrap.github.io/mailtr - [Email Campaigns](examples/java/io/mailtrap/examples/emailcampaigns/EmailCampaignsExample.java) - [Marketing Stats](examples/java/io/mailtrap/examples/marketingstats/MarketingStatsExample.java) +### Renamed APIs + +The SDK now uses the product's names: Email Testing inboxes are **sandboxes** and sending domains are **domains**. The old +entry points still work and call the same endpoints, but they are marked `@Deprecated(since = "1.11.0")` and will be +removed in a future major release. Types such as `MailtrapEmailTestingApi`, `Inboxes`, `InboxResponse`, `SendingDomains` +and `SendingDomainsResponse` keep their names until that release. + +| Old | New | +|-----|-----| +| `client.testingApi()` | `client.sandboxApi()` | +| `client.switchToEmailTestingApi(inboxId)` | `client.switchToEmailSandboxApi(sandboxId)` | +| `new MailtrapConfig.Builder().inboxId(id)` | `new MailtrapConfig.Builder().sandboxId(id)` | +| `config.getInboxId()` | `config.getSandboxId()` | +| `Constants.EMAIL_TESTING_SEND_HOST` | `Constants.EMAIL_SANDBOX_SEND_HOST` | +| `sandboxApi().inboxes()` | `sandboxApi().sandboxes()` | +| `createInbox(accountId, projectId, request)` | `createSandbox(accountId, projectId, request)` | +| `getInboxAttributes(accountId, inboxId)` | `getSandboxAttributes(accountId, sandboxId)` | +| `updateInbox(accountId, inboxId, request)` | `updateSandbox(accountId, sandboxId, request)` | +| `deleteInbox(accountId, inboxId)` | `deleteSandbox(accountId, sandboxId)` | +| `cleanInbox(accountId, inboxId)` | `cleanSandbox(accountId, sandboxId)` | +| `getInboxes(accountId)` | `getSandboxes(accountId)` | +| `sendingApi().domains().getSendingDomains(accountId)` | `sendingApi().domains().getDomains(accountId)` | +| `getSendingDomain(accountId, sendingDomainId)` | `getDomain(accountId, domainId)` | +| `sendSendingDomainsSetupInstructions(accountId, sendingDomainId, request)` | `sendDomainsSetupInstructions(accountId, domainId, request)` | +| `deleteSendingDomain(accountId, sendingDomainId)` | `deleteDomain(accountId, domainId)` | + ## Contributing Bug reports and pull requests are welcome on [GitHub](https://github.com/mailtrap/mailtrap-java). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](CODE_OF_CONDUCT.md). diff --git a/examples/java/io/mailtrap/examples/sendingdomains/SendingDomainsExample.java b/examples/java/io/mailtrap/examples/domains/DomainsExample.java similarity index 84% rename from examples/java/io/mailtrap/examples/sendingdomains/SendingDomainsExample.java rename to examples/java/io/mailtrap/examples/domains/DomainsExample.java index a996231..5c840ae 100644 --- a/examples/java/io/mailtrap/examples/sendingdomains/SendingDomainsExample.java +++ b/examples/java/io/mailtrap/examples/domains/DomainsExample.java @@ -1,4 +1,4 @@ -package io.mailtrap.examples.sendingdomains; +package io.mailtrap.examples.domains; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; @@ -8,7 +8,7 @@ import static io.mailtrap.model.request.sendingdomains.CreateSendingDomainRequest.SendingDomainData; -public class SendingDomainsExample { +public class DomainsExample { private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); @@ -27,10 +27,10 @@ public static void main(String[] args) { final var createdDomain = client.sendingApi().domains().create(ACCOUNT_ID, createRequest); System.out.println(createdDomain); - final var domainById = client.sendingApi().domains().getSendingDomain(ACCOUNT_ID, createdDomain.getId()); + final var domainById = client.sendingApi().domains().getDomain(ACCOUNT_ID, createdDomain.getId()); System.out.println(domainById); - final var allDomains = client.sendingApi().domains().getSendingDomains(ACCOUNT_ID); + final var allDomains = client.sendingApi().domains().getDomains(ACCOUNT_ID); System.out.println(allDomains); final var updateRequest = new UpdateSendingDomainRequest( @@ -46,8 +46,8 @@ public static void main(String[] args) { System.out.println(updatedDomain); final var sendInstructionsRequest = new SendingDomainsSetupInstructionsRequest(DEVOPS_EMAIL); - client.sendingApi().domains().sendSendingDomainsSetupInstructions(ACCOUNT_ID, createdDomain.getId(), sendInstructionsRequest); + client.sendingApi().domains().sendDomainsSetupInstructions(ACCOUNT_ID, createdDomain.getId(), sendInstructionsRequest); - client.sendingApi().domains().deleteSendingDomain(ACCOUNT_ID, createdDomain.getId()); + client.sendingApi().domains().deleteDomain(ACCOUNT_ID, createdDomain.getId()); } } diff --git a/examples/java/io/mailtrap/examples/general/AccountAccessExample.java b/examples/java/io/mailtrap/examples/general/AccountAccessExample.java index fbd79dd..019573c 100644 --- a/examples/java/io/mailtrap/examples/general/AccountAccessExample.java +++ b/examples/java/io/mailtrap/examples/general/AccountAccessExample.java @@ -10,7 +10,7 @@ public class AccountAccessExample { private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); - private static final String INBOX_ID = System.getenv("MAILTRAP_INBOX_ID"); + private static final String SANDBOX_ID = System.getenv("MAILTRAP_SANDBOX_ID"); public static void main(String[] args) { final var config = new MailtrapConfig.Builder() @@ -20,7 +20,7 @@ public static void main(String[] args) { final var client = MailtrapClientFactory.createMailtrapClient(config); final var queryParams = new ListAccountAccessQueryParams(); - queryParams.setInboxIds(List.of(INBOX_ID)); + queryParams.setInboxIds(List.of(SANDBOX_ID)); final var responses = client.generalApi().accountAccesses().listUserAndInviteAccountAccesses(ACCOUNT_ID, queryParams); diff --git a/examples/java/io/mailtrap/examples/testing/AttachmentsExample.java b/examples/java/io/mailtrap/examples/sandbox/AttachmentsExample.java similarity index 51% rename from examples/java/io/mailtrap/examples/testing/AttachmentsExample.java rename to examples/java/io/mailtrap/examples/sandbox/AttachmentsExample.java index 8b10c8f..89d5807 100644 --- a/examples/java/io/mailtrap/examples/testing/AttachmentsExample.java +++ b/examples/java/io/mailtrap/examples/sandbox/AttachmentsExample.java @@ -1,4 +1,4 @@ -package io.mailtrap.examples.testing; +package io.mailtrap.examples.sandbox; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; @@ -14,24 +14,24 @@ public static void main(String[] args) { .token(TOKEN) .build(); - final var testingClient = MailtrapClientFactory.createMailtrapClient(config).testingApi(); + final var sandboxClient = MailtrapClientFactory.createMailtrapClient(config).sandboxApi(); - final var inboxes = testingClient.inboxes().getInboxes(ACCOUNT_ID); + final var sandboxes = sandboxClient.sandboxes().getSandboxes(ACCOUNT_ID); - if (!inboxes.isEmpty()) { - final var firstInbox = inboxes.get(0); + if (!sandboxes.isEmpty()) { + final var firstSandbox = sandboxes.get(0); - final var messages = testingClient.messages().getMessages(ACCOUNT_ID, firstInbox.getId(), ListMessagesQueryParams.empty()); + final var messages = sandboxClient.messages().getMessages(ACCOUNT_ID, firstSandbox.getId(), ListMessagesQueryParams.empty()); if (!messages.isEmpty()) { final var firstMessage = messages.get(0); - final var attachments = testingClient.attachments().getAttachments(ACCOUNT_ID, firstInbox.getId(), firstMessage.getId(), null); + final var attachments = sandboxClient.attachments().getAttachments(ACCOUNT_ID, firstSandbox.getId(), firstMessage.getId(), null); if (!attachments.isEmpty()) { final var firstAttachment = attachments.get(0); - System.out.println(testingClient.attachments().getSingleAttachment(ACCOUNT_ID, firstInbox.getId(), firstMessage.getId(), firstAttachment.getId())); + System.out.println(sandboxClient.attachments().getSingleAttachment(ACCOUNT_ID, firstSandbox.getId(), firstMessage.getId(), firstAttachment.getId())); } } } diff --git a/examples/java/io/mailtrap/examples/testing/BatchExample.java b/examples/java/io/mailtrap/examples/sandbox/BatchExample.java similarity index 85% rename from examples/java/io/mailtrap/examples/testing/BatchExample.java rename to examples/java/io/mailtrap/examples/sandbox/BatchExample.java index 4208df2..e11557c 100644 --- a/examples/java/io/mailtrap/examples/testing/BatchExample.java +++ b/examples/java/io/mailtrap/examples/sandbox/BatchExample.java @@ -1,4 +1,4 @@ -package io.mailtrap.examples.testing; +package io.mailtrap.examples.sandbox; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; @@ -15,12 +15,12 @@ public class BatchExample { private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); private static final String SENDER_EMAIL = "sender@domain.com"; private static final String RECIPIENT_EMAIL = "recipient@domain.com"; - private static final long INBOX_ID = Long.parseLong(System.getenv("MAILTRAP_INBOX_ID")); + private static final long SANDBOX_ID = Long.parseLong(System.getenv("MAILTRAP_SANDBOX_ID")); public static void main(String[] args) { final var config = new MailtrapConfig.Builder() .token(TOKEN) - .inboxId(INBOX_ID) + .sandboxId(SANDBOX_ID) .build(); final var client = MailtrapClientFactory.createMailtrapClient(config); @@ -42,7 +42,7 @@ public static void main(String[] args) { .requests(List.of(mail)) .build(); - System.out.println(client.testingApi().emails().batchSend(batchMail, config.getInboxId())); + System.out.println(client.sandboxApi().emails().batchSend(batchMail, config.getSandboxId())); } } diff --git a/examples/java/io/mailtrap/examples/testing/EmailExample.java b/examples/java/io/mailtrap/examples/sandbox/EmailExample.java similarity index 81% rename from examples/java/io/mailtrap/examples/testing/EmailExample.java rename to examples/java/io/mailtrap/examples/sandbox/EmailExample.java index d64991e..c02b33f 100644 --- a/examples/java/io/mailtrap/examples/testing/EmailExample.java +++ b/examples/java/io/mailtrap/examples/sandbox/EmailExample.java @@ -1,4 +1,4 @@ -package io.mailtrap.examples.testing; +package io.mailtrap.examples.sandbox; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; @@ -13,12 +13,12 @@ public class EmailExample { private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); private static final String SENDER_EMAIL = "sender@domain.com"; private static final String RECIPIENT_EMAIL = "recipient@domain.com"; - private static final long INBOX_ID = Long.parseLong(System.getenv("MAILTRAP_INBOX_ID")); + private static final long SANDBOX_ID = Long.parseLong(System.getenv("MAILTRAP_SANDBOX_ID")); public static void main(String[] args) { final var config = new MailtrapConfig.Builder() .token(TOKEN) - .inboxId(INBOX_ID) + .sandboxId(SANDBOX_ID) .build(); final var client = MailtrapClientFactory.createMailtrapClient(config); @@ -33,7 +33,7 @@ public static void main(String[] args) { )) .build(); - System.out.println(client.testingApi().emails().send(mail, config.getInboxId())); + System.out.println(client.sandboxApi().emails().send(mail, config.getSandboxId())); } } diff --git a/examples/java/io/mailtrap/examples/sandbox/MessagesExample.java b/examples/java/io/mailtrap/examples/sandbox/MessagesExample.java new file mode 100644 index 0000000..4027534 --- /dev/null +++ b/examples/java/io/mailtrap/examples/sandbox/MessagesExample.java @@ -0,0 +1,67 @@ +package io.mailtrap.examples.sandbox; + +import io.mailtrap.config.MailtrapConfig; +import io.mailtrap.factory.MailtrapClientFactory; +import io.mailtrap.model.request.accountaccesses.ListMessagesQueryParams; +import io.mailtrap.model.request.messages.ForwardMessageRequest; +import io.mailtrap.model.request.messages.UpdateMessageRequest; + +public class MessagesExample { + + private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); + private static final String FORWARD_EMAIL_TO = "recipient@domain.com"; + private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); + + public static void main(String[] args) { + final var config = new MailtrapConfig.Builder() + .token(TOKEN) + .build(); + + final var sandboxClient = MailtrapClientFactory.createMailtrapClient(config).sandboxApi(); + + final var sandboxes = sandboxClient.sandboxes().getSandboxes(ACCOUNT_ID); + + if (!sandboxes.isEmpty()) { + long firstSandboxId = sandboxes.get(0).getId(); + + final var messages = sandboxClient.messages().getMessages(ACCOUNT_ID, firstSandboxId, ListMessagesQueryParams.empty()); + + if (!messages.isEmpty()) { + long firstMessageId = messages.get(0).getId(); + + final var getMessage = sandboxClient.messages().getMessage(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(getMessage); + + final var htmlAnalysis = sandboxClient.messages().getMessageHtmlAnalysis(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(htmlAnalysis); + + String htmlMessage = sandboxClient.messages().getHtmlMessage(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(htmlMessage); + + String textMessage = sandboxClient.messages().getTextMessage(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(textMessage); + + String rawMessage = sandboxClient.messages().getRawMessage(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(rawMessage); + + String messageAsEml = sandboxClient.messages().getMessageAsEml(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(messageAsEml); + + String messageSource = sandboxClient.messages().getMessageSource(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(messageSource); + + final var mailHeaders = sandboxClient.messages().getMailHeaders(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(mailHeaders); + + final var spamScore = sandboxClient.messages().getSpamScore(ACCOUNT_ID, firstSandboxId, firstMessageId); + System.out.println(spamScore); + + final var updateMessage = sandboxClient.messages().updateMessage(ACCOUNT_ID, firstSandboxId, firstMessageId, new UpdateMessageRequest(new UpdateMessageRequest.MessageUpdateData("true"))); + System.out.println(updateMessage); + + final var forwardMessage = sandboxClient.messages().forwardMessage(ACCOUNT_ID, firstSandboxId, firstMessageId, new ForwardMessageRequest(FORWARD_EMAIL_TO)); + System.out.println(forwardMessage); + } + } + } +} diff --git a/examples/java/io/mailtrap/examples/testing/ProjectsExample.java b/examples/java/io/mailtrap/examples/sandbox/ProjectsExample.java similarity index 73% rename from examples/java/io/mailtrap/examples/testing/ProjectsExample.java rename to examples/java/io/mailtrap/examples/sandbox/ProjectsExample.java index 0dcc6f1..ce4b308 100644 --- a/examples/java/io/mailtrap/examples/testing/ProjectsExample.java +++ b/examples/java/io/mailtrap/examples/sandbox/ProjectsExample.java @@ -1,4 +1,4 @@ -package io.mailtrap.examples.testing; +package io.mailtrap.examples.sandbox; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; @@ -14,18 +14,18 @@ public static void main(String[] args) { .token(TOKEN) .build(); - final var testingClient = MailtrapClientFactory.createMailtrapClient(config).testingApi(); + final var sandboxClient = MailtrapClientFactory.createMailtrapClient(config).sandboxApi(); - final var projects = testingClient.projects().getProjects(ACCOUNT_ID); + final var projects = sandboxClient.projects().getProjects(ACCOUNT_ID); if (!projects.isEmpty()) { long firstProjectId = projects.get(0).getId(); final var updatedProject = - testingClient.projects().updateProject(ACCOUNT_ID, firstProjectId, new ProjectRequest(new ProjectRequest.ProjectData("mock project"))); + sandboxClient.projects().updateProject(ACCOUNT_ID, firstProjectId, new ProjectRequest(new ProjectRequest.ProjectData("mock project"))); System.out.println(updatedProject); - final var deletedProject = testingClient.projects().deleteProject(ACCOUNT_ID, firstProjectId); + final var deletedProject = sandboxClient.projects().deleteProject(ACCOUNT_ID, firstProjectId); System.out.println(deletedProject); } } diff --git a/examples/java/io/mailtrap/examples/sandbox/SandboxesExample.java b/examples/java/io/mailtrap/examples/sandbox/SandboxesExample.java new file mode 100644 index 0000000..4f84318 --- /dev/null +++ b/examples/java/io/mailtrap/examples/sandbox/SandboxesExample.java @@ -0,0 +1,56 @@ +package io.mailtrap.examples.sandbox; + +import io.mailtrap.config.MailtrapConfig; +import io.mailtrap.factory.MailtrapClientFactory; +import io.mailtrap.model.request.inboxes.CreateInboxRequest; +import io.mailtrap.model.request.inboxes.UpdateInboxRequest; + +public class SandboxesExample { + + private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); + private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); + + public static void main(String[] args) { + final var config = new MailtrapConfig.Builder() + .token(TOKEN) + .build(); + + final var sandboxClient = MailtrapClientFactory.createMailtrapClient(config).sandboxApi(); + + final var projects = sandboxClient.projects().getProjects(ACCOUNT_ID); + + if (!projects.isEmpty()) { + final var firstProject = projects.get(0); + + final var createdSandbox = sandboxClient.sandboxes().createSandbox(ACCOUNT_ID, firstProject.getId(), new CreateInboxRequest(new CreateInboxRequest.InboxCreateData("test-sandbox"))); + System.out.println(createdSandbox); + + final var sandboxes = sandboxClient.sandboxes().getSandboxes(ACCOUNT_ID); + + if (!sandboxes.isEmpty()) { + long firstSandboxId = sandboxes.get(0).getId(); + + final var sandboxAttributes = sandboxClient.sandboxes().getSandboxAttributes(ACCOUNT_ID, firstSandboxId); + System.out.println(sandboxAttributes); + + final var sandboxUpdate = sandboxClient.sandboxes().updateSandbox(ACCOUNT_ID, firstSandboxId, new UpdateInboxRequest(new UpdateInboxRequest.InboxUpdateData("updated-test-sandbox", "mock"))); + System.out.println(sandboxUpdate); + + final var markAsRead = sandboxClient.sandboxes().markAsRead(ACCOUNT_ID, firstSandboxId); + System.out.println(markAsRead); + + final var cleanSandbox = sandboxClient.sandboxes().cleanSandbox(ACCOUNT_ID, firstSandboxId); + System.out.println(cleanSandbox); + + final var resetCredentials = sandboxClient.sandboxes().resetCredentials(ACCOUNT_ID, firstSandboxId); + System.out.println(resetCredentials); + + final var enableEmailAddress = sandboxClient.sandboxes().enableEmailAddress(ACCOUNT_ID, firstSandboxId); + System.out.println(enableEmailAddress); + + final var resetEmailAddresses = sandboxClient.sandboxes().resetEmailAddresses(ACCOUNT_ID, firstSandboxId); + System.out.println(resetEmailAddresses); + } + } + } +} diff --git a/examples/java/io/mailtrap/examples/testing/InboxesExample.java b/examples/java/io/mailtrap/examples/testing/InboxesExample.java deleted file mode 100644 index 6787226..0000000 --- a/examples/java/io/mailtrap/examples/testing/InboxesExample.java +++ /dev/null @@ -1,56 +0,0 @@ -package io.mailtrap.examples.testing; - -import io.mailtrap.config.MailtrapConfig; -import io.mailtrap.factory.MailtrapClientFactory; -import io.mailtrap.model.request.inboxes.CreateInboxRequest; -import io.mailtrap.model.request.inboxes.UpdateInboxRequest; - -public class InboxesExample { - - private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); - private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); - - public static void main(String[] args) { - final var config = new MailtrapConfig.Builder() - .token(TOKEN) - .build(); - - final var testingClient = MailtrapClientFactory.createMailtrapClient(config).testingApi(); - - final var projects = testingClient.projects().getProjects(ACCOUNT_ID); - - if (!projects.isEmpty()) { - final var firstProject = projects.get(0); - - final var createdInbox = testingClient.inboxes().createInbox(ACCOUNT_ID, firstProject.getId(), new CreateInboxRequest(new CreateInboxRequest.InboxCreateData("test-inbox"))); - System.out.println(createdInbox); - - final var inboxes = testingClient.inboxes().getInboxes(ACCOUNT_ID); - - if (!inboxes.isEmpty()) { - long firstInboxId = inboxes.get(0).getId(); - - final var inboxAttributes = testingClient.inboxes().getInboxAttributes(ACCOUNT_ID, firstInboxId); - System.out.println(inboxAttributes); - - final var inboxUpdate = testingClient.inboxes().updateInbox(ACCOUNT_ID, firstInboxId, new UpdateInboxRequest(new UpdateInboxRequest.InboxUpdateData("updated-test-inbox", "mock"))); - System.out.println(inboxUpdate); - - final var markAsRead = testingClient.inboxes().markAsRead(ACCOUNT_ID, firstInboxId); - System.out.println(markAsRead); - - final var cleanInbox = testingClient.inboxes().cleanInbox(ACCOUNT_ID, firstInboxId); - System.out.println(cleanInbox); - - final var resetCredentials = testingClient.inboxes().resetCredentials(ACCOUNT_ID, firstInboxId); - System.out.println(resetCredentials); - - final var enableEmailAddress = testingClient.inboxes().enableEmailAddress(ACCOUNT_ID, firstInboxId); - System.out.println(enableEmailAddress); - - final var resetEmailAddresses = testingClient.inboxes().resetEmailAddresses(ACCOUNT_ID, firstInboxId); - System.out.println(resetEmailAddresses); - } - } - } -} diff --git a/examples/java/io/mailtrap/examples/testing/MessagesExample.java b/examples/java/io/mailtrap/examples/testing/MessagesExample.java deleted file mode 100644 index 963ce50..0000000 --- a/examples/java/io/mailtrap/examples/testing/MessagesExample.java +++ /dev/null @@ -1,67 +0,0 @@ -package io.mailtrap.examples.testing; - -import io.mailtrap.config.MailtrapConfig; -import io.mailtrap.factory.MailtrapClientFactory; -import io.mailtrap.model.request.accountaccesses.ListMessagesQueryParams; -import io.mailtrap.model.request.messages.ForwardMessageRequest; -import io.mailtrap.model.request.messages.UpdateMessageRequest; - -public class MessagesExample { - - private static final String TOKEN = System.getenv("MAILTRAP_API_KEY"); - private static final String FORWARD_EMAIL_TO = "recipient@domain.com"; - private static final long ACCOUNT_ID = Long.parseLong(System.getenv("MAILTRAP_ACCOUNT_ID")); - - public static void main(String[] args) { - final var config = new MailtrapConfig.Builder() - .token(TOKEN) - .build(); - - final var testingClient = MailtrapClientFactory.createMailtrapClient(config).testingApi(); - - final var inboxes = testingClient.inboxes().getInboxes(ACCOUNT_ID); - - if (!inboxes.isEmpty()) { - long firstInboxId = inboxes.get(0).getId(); - - final var messages = testingClient.messages().getMessages(ACCOUNT_ID, firstInboxId, ListMessagesQueryParams.empty()); - - if (!messages.isEmpty()) { - long firstMessageId = messages.get(0).getId(); - - final var getMessage = testingClient.messages().getMessage(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(getMessage); - - final var htmlAnalysis = testingClient.messages().getMessageHtmlAnalysis(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(htmlAnalysis); - - String htmlMessage = testingClient.messages().getHtmlMessage(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(htmlMessage); - - String textMessage = testingClient.messages().getTextMessage(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(textMessage); - - String rawMessage = testingClient.messages().getRawMessage(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(rawMessage); - - String messageAsEml = testingClient.messages().getMessageAsEml(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(messageAsEml); - - String messageSource = testingClient.messages().getMessageSource(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(messageSource); - - final var mailHeaders = testingClient.messages().getMailHeaders(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(mailHeaders); - - final var spamScore = testingClient.messages().getSpamScore(ACCOUNT_ID, firstInboxId, firstMessageId); - System.out.println(spamScore); - - final var updateMessage = testingClient.messages().updateMessage(ACCOUNT_ID, firstInboxId, firstMessageId, new UpdateMessageRequest(new UpdateMessageRequest.MessageUpdateData("true"))); - System.out.println(updateMessage); - - final var forwardMessage = testingClient.messages().forwardMessage(ACCOUNT_ID, firstInboxId, firstMessageId, new ForwardMessageRequest(FORWARD_EMAIL_TO)); - System.out.println(forwardMessage); - } - } - } -} diff --git a/src/main/java/io/mailtrap/Constants.java b/src/main/java/io/mailtrap/Constants.java index d263b07..57b1e48 100644 --- a/src/main/java/io/mailtrap/Constants.java +++ b/src/main/java/io/mailtrap/Constants.java @@ -7,7 +7,14 @@ public final class Constants { private Constants() { } - public static final String EMAIL_TESTING_SEND_HOST = "https://sandbox.api.mailtrap.io"; + public static final String EMAIL_SANDBOX_SEND_HOST = "https://sandbox.api.mailtrap.io"; + + /** + * @deprecated Use {@link #EMAIL_SANDBOX_SEND_HOST} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public static final String EMAIL_TESTING_SEND_HOST = EMAIL_SANDBOX_SEND_HOST; + public static final String EMAIL_SENDING_SEND_HOST = "https://send.api.mailtrap.io"; public static final String BULK_SENDING_HOST = "https://bulk.api.mailtrap.io"; public static final String GENERAL_HOST = "https://mailtrap.io"; diff --git a/src/main/java/io/mailtrap/api/accountaccesses/AccountAccesses.java b/src/main/java/io/mailtrap/api/accountaccesses/AccountAccesses.java index e4588e7..23fd390 100644 --- a/src/main/java/io/mailtrap/api/accountaccesses/AccountAccesses.java +++ b/src/main/java/io/mailtrap/api/accountaccesses/AccountAccesses.java @@ -7,7 +7,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with account accesses + * Interface representing the Mailtrap General API for interaction with account accesses */ public interface AccountAccesses { diff --git a/src/main/java/io/mailtrap/api/accounts/Accounts.java b/src/main/java/io/mailtrap/api/accounts/Accounts.java index 59fed04..2e79c8e 100644 --- a/src/main/java/io/mailtrap/api/accounts/Accounts.java +++ b/src/main/java/io/mailtrap/api/accounts/Accounts.java @@ -5,7 +5,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with accounts + * Interface representing the Mailtrap General API for interaction with accounts */ public interface Accounts { diff --git a/src/main/java/io/mailtrap/api/attachments/Attachments.java b/src/main/java/io/mailtrap/api/attachments/Attachments.java index de001ea..bafff91 100644 --- a/src/main/java/io/mailtrap/api/attachments/Attachments.java +++ b/src/main/java/io/mailtrap/api/attachments/Attachments.java @@ -6,7 +6,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with email message attachments. + * Interface representing the Mailtrap Sandbox API for interaction with email message attachments. */ public interface Attachments { @@ -14,22 +14,22 @@ public interface Attachments { * Get message single attachment by ID * * @param accountId - unique account ID - * @param inboxId - unique inbox ID + * @param sandboxId - unique sandbox ID * @param messageId - unique message ID * @param attachmentId - unique attachment ID * @return attachment details and download path */ - AttachmentResponse getSingleAttachment(long accountId, long inboxId, long messageId, long attachmentId); + AttachmentResponse getSingleAttachment(long accountId, long sandboxId, long messageId, long attachmentId); /** - * Get message attachments by inboxId and messageId + * Get message attachments by sandboxId and messageId * * @param accountId - unique account ID - * @param inboxId - unique inbox ID + * @param sandboxId - unique sandbox ID * @param messageId - unique message ID * @param attachmentType - attachment type; optional query param * @return attachments with their details and download paths */ - List getAttachments(long accountId, long inboxId, long messageId, @Nullable String attachmentType); + List getAttachments(long accountId, long sandboxId, long messageId, @Nullable String attachmentType); } diff --git a/src/main/java/io/mailtrap/api/attachments/AttachmentsImpl.java b/src/main/java/io/mailtrap/api/attachments/AttachmentsImpl.java index 50fc47c..3a4c45c 100644 --- a/src/main/java/io/mailtrap/api/attachments/AttachmentsImpl.java +++ b/src/main/java/io/mailtrap/api/attachments/AttachmentsImpl.java @@ -19,20 +19,20 @@ public AttachmentsImpl(final MailtrapConfig config) { } @Override - public AttachmentResponse getSingleAttachment(final long accountId, final long inboxId, final long messageId, final long attachmentId) { + public AttachmentResponse getSingleAttachment(final long accountId, final long sandboxId, final long messageId, final long attachmentId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/attachments/%d", accountId, inboxId, messageId, attachmentId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/attachments/%d", accountId, sandboxId, messageId, attachmentId), new RequestData(), AttachmentResponse.class); } @Override - public List getAttachments(final long accountId, final long inboxId, final long messageId, final String attachmentType) { + public List getAttachments(final long accountId, final long sandboxId, final long messageId, final String attachmentType) { final var queryParams = RequestData.buildQueryParams( entry("attachment_type", Optional.ofNullable(attachmentType))); return httpClient.getList( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/attachments", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/attachments", accountId, sandboxId, messageId), new RequestData(queryParams), AttachmentResponse.class); } diff --git a/src/main/java/io/mailtrap/api/billing/Billing.java b/src/main/java/io/mailtrap/api/billing/Billing.java index 7e2d0d3..e9f3857 100644 --- a/src/main/java/io/mailtrap/api/billing/Billing.java +++ b/src/main/java/io/mailtrap/api/billing/Billing.java @@ -3,7 +3,7 @@ import io.mailtrap.model.response.billing.BillingResponse; /** - * Interface representing the Mailtrap Testing API for interaction with billing + * Interface representing the Mailtrap General API for interaction with billing */ public interface Billing { diff --git a/src/main/java/io/mailtrap/api/companyinfo/CompanyInfo.java b/src/main/java/io/mailtrap/api/companyinfo/CompanyInfo.java index 4b11dde..fdd1c7a 100644 --- a/src/main/java/io/mailtrap/api/companyinfo/CompanyInfo.java +++ b/src/main/java/io/mailtrap/api/companyinfo/CompanyInfo.java @@ -7,29 +7,29 @@ public interface CompanyInfo { /** - * Get the company info associated with a sending domain + * Get the company info associated with a domain * - * @param sendingDomainId unique domain ID - * @return company info of the sending domain + * @param domainId unique domain ID + * @return company info of the domain */ - CompanyInfoResponse getCompanyInfo(long sendingDomainId); + CompanyInfoResponse getCompanyInfo(long domainId); /** - * Create the company info for a sending domain. Company info is required for + * Create the company info for a domain. Company info is required for * domain compliance verification. * - * @param sendingDomainId unique domain ID - * @param request request data + * @param domainId unique domain ID + * @param request request data * @return created company info */ - CompanyInfoResponse createCompanyInfo(long sendingDomainId, CreateCompanyInfoRequest request); + CompanyInfoResponse createCompanyInfo(long domainId, CreateCompanyInfoRequest request); /** - * Update the company info for a sending domain + * Update the company info for a domain * - * @param sendingDomainId unique domain ID - * @param request request data, only the fields set are sent + * @param domainId unique domain ID + * @param request request data, only the fields set are sent * @return updated company info */ - CompanyInfoResponse updateCompanyInfo(long sendingDomainId, UpdateCompanyInfoRequest request); + CompanyInfoResponse updateCompanyInfo(long domainId, UpdateCompanyInfoRequest request); } diff --git a/src/main/java/io/mailtrap/api/companyinfo/CompanyInfoImpl.java b/src/main/java/io/mailtrap/api/companyinfo/CompanyInfoImpl.java index a191d06..14807d6 100644 --- a/src/main/java/io/mailtrap/api/companyinfo/CompanyInfoImpl.java +++ b/src/main/java/io/mailtrap/api/companyinfo/CompanyInfoImpl.java @@ -16,18 +16,18 @@ public CompanyInfoImpl(final MailtrapConfig config) { } @Override - public CompanyInfoResponse getCompanyInfo(final long sendingDomainId) { + public CompanyInfoResponse getCompanyInfo(final long domainId) { return httpClient.get( - companyInfoPath(sendingDomainId), + companyInfoPath(domainId), new RequestData(), CompanyInfoResponse.class ); } @Override - public CompanyInfoResponse createCompanyInfo(final long sendingDomainId, final CreateCompanyInfoRequest request) { + public CompanyInfoResponse createCompanyInfo(final long domainId, final CreateCompanyInfoRequest request) { return httpClient.post( - companyInfoPath(sendingDomainId), + companyInfoPath(domainId), request, new RequestData(), CompanyInfoResponse.class @@ -35,16 +35,16 @@ public CompanyInfoResponse createCompanyInfo(final long sendingDomainId, final C } @Override - public CompanyInfoResponse updateCompanyInfo(final long sendingDomainId, final UpdateCompanyInfoRequest request) { + public CompanyInfoResponse updateCompanyInfo(final long domainId, final UpdateCompanyInfoRequest request) { return httpClient.patch( - companyInfoPath(sendingDomainId), + companyInfoPath(domainId), request, new RequestData(), CompanyInfoResponse.class ); } - private String companyInfoPath(final long sendingDomainId) { - return String.format(apiHost + "/api/domains/%d/company_info", sendingDomainId); + private String companyInfoPath(final long domainId) { + return String.format(apiHost + "/api/domains/%d/company_info", domainId); } } diff --git a/src/main/java/io/mailtrap/api/inboxes/Inboxes.java b/src/main/java/io/mailtrap/api/inboxes/Inboxes.java index 30cf4ad..dbcae5c 100644 --- a/src/main/java/io/mailtrap/api/inboxes/Inboxes.java +++ b/src/main/java/io/mailtrap/api/inboxes/Inboxes.java @@ -7,98 +7,146 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with inboxes + * Interface representing the Mailtrap Sandbox API for interaction with sandboxes */ public interface Inboxes { /** - * Create an inbox in a project + * Create a sandbox in a project * * @param accountId unique account ID * @param projectId unique project ID - * @param request inbox request data - * @return the newly created inbox with its attributes + * @param request sandbox request data + * @return the newly created sandbox with its attributes */ - InboxResponse createInbox(long accountId, long projectId, CreateInboxRequest request); + InboxResponse createSandbox(long accountId, long projectId, CreateInboxRequest request); /** - * Get inbox attributes by inbox ID + * Get sandbox attributes by sandbox ID * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox */ - InboxResponse getInboxAttributes(long accountId, long inboxId); + InboxResponse getSandboxAttributes(long accountId, long sandboxId); /** - * Delete an inbox with all its emails + * Delete a sandbox with all its emails * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the deleted inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the deleted sandbox */ - InboxResponse deleteInbox(long accountId, long inboxId); + InboxResponse deleteSandbox(long accountId, long sandboxId); /** - * Update inbox name, inbox email username + * Update sandbox name, sandbox email username * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param request request data - * @return the attributes of the updated inbox + * @return the attributes of the updated sandbox */ - InboxResponse updateInbox(long accountId, long inboxId, UpdateInboxRequest request); + InboxResponse updateSandbox(long accountId, long sandboxId, UpdateInboxRequest request); /** - * Delete all messages (emails) from inbox + * Delete all messages (emails) from sandbox * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox. permissions returns the permissions of the token for the inbox. + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox. permissions returns the permissions of the token for the sandbox. */ - InboxResponse cleanInbox(long accountId, long inboxId); + InboxResponse cleanSandbox(long accountId, long sandboxId); /** - * Mark all messages in the inbox as read + * Mark all messages in the sandbox as read * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox. permissions returns the permissions of the token for the inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox. permissions returns the permissions of the token for the sandbox */ - InboxResponse markAsRead(long accountId, long inboxId); + InboxResponse markAsRead(long accountId, long sandboxId); /** - * Reset SMTP credentials of the inbox + * Reset SMTP credentials of the sandbox * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox. permissions returns the permissions of the token for the inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox. permissions returns the permissions of the token for the sandbox */ - InboxResponse resetCredentials(long accountId, long inboxId); + InboxResponse resetCredentials(long accountId, long sandboxId); /** - * Turn the email address of the inbox on/off + * Turn the email address of the sandbox on/off * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox. permissions returns the permissions of the token for the inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox. permissions returns the permissions of the token for the sandbox */ - InboxResponse enableEmailAddress(long accountId, long inboxId); + InboxResponse enableEmailAddress(long accountId, long sandboxId); /** - * Reset username of email address per inbox + * Reset username of email address per sandbox * * @param accountId unique account ID - * @param inboxId unique inbox ID - * @return the attributes of the inbox. permissions returns the permissions of the token for the inbox + * @param sandboxId unique sandbox ID + * @return the attributes of the sandbox. permissions returns the permissions of the token for the sandbox */ - InboxResponse resetEmailAddresses(long accountId, long inboxId); + InboxResponse resetEmailAddresses(long accountId, long sandboxId); /** - * Get a list of inboxes + * Get a list of sandboxes * * @param accountId unique account ID - * @return the list of inboxes in the account to which the API token has access. permissions returns the permissions of the token for the inbox + * @return the list of sandboxes in the account to which the API token has access. permissions returns the permissions of the token for the sandbox */ - List getInboxes(long accountId); + List getSandboxes(long accountId); + + /** + * @deprecated Use {@link #createSandbox(long, long, CreateInboxRequest)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default InboxResponse createInbox(final long accountId, final long projectId, final CreateInboxRequest request) { + return createSandbox(accountId, projectId, request); + } + + /** + * @deprecated Use {@link #getSandboxAttributes(long, long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default InboxResponse getInboxAttributes(final long accountId, final long inboxId) { + return getSandboxAttributes(accountId, inboxId); + } + + /** + * @deprecated Use {@link #deleteSandbox(long, long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default InboxResponse deleteInbox(final long accountId, final long inboxId) { + return deleteSandbox(accountId, inboxId); + } + + /** + * @deprecated Use {@link #updateSandbox(long, long, UpdateInboxRequest)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default InboxResponse updateInbox(final long accountId, final long inboxId, final UpdateInboxRequest request) { + return updateSandbox(accountId, inboxId, request); + } + + /** + * @deprecated Use {@link #cleanSandbox(long, long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default InboxResponse cleanInbox(final long accountId, final long inboxId) { + return cleanSandbox(accountId, inboxId); + } + + /** + * @deprecated Use {@link #getSandboxes(long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default List getInboxes(final long accountId) { + return getSandboxes(accountId); + } } diff --git a/src/main/java/io/mailtrap/api/inboxes/InboxesImpl.java b/src/main/java/io/mailtrap/api/inboxes/InboxesImpl.java index 67d22f7..af5aa43 100644 --- a/src/main/java/io/mailtrap/api/inboxes/InboxesImpl.java +++ b/src/main/java/io/mailtrap/api/inboxes/InboxesImpl.java @@ -19,7 +19,7 @@ public InboxesImpl(final MailtrapConfig config, final MailtrapValidator validato } @Override - public InboxResponse createInbox(final long accountId, final long projectId, final CreateInboxRequest request) { + public InboxResponse createSandbox(final long accountId, final long projectId, final CreateInboxRequest request) { validateRequestBodyAndThrowException(request); @@ -32,30 +32,30 @@ public InboxResponse createInbox(final long accountId, final long projectId, fin } @Override - public InboxResponse getInboxAttributes(final long accountId, final long inboxId) { + public InboxResponse getSandboxAttributes(final long accountId, final long sandboxId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, sandboxId), new RequestData(), InboxResponse.class ); } @Override - public InboxResponse deleteInbox(final long accountId, final long inboxId) { + public InboxResponse deleteSandbox(final long accountId, final long sandboxId) { return httpClient.delete( - String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, sandboxId), new RequestData(), InboxResponse.class ); } @Override - public InboxResponse updateInbox(final long accountId, final long inboxId, final UpdateInboxRequest request) { + public InboxResponse updateSandbox(final long accountId, final long sandboxId, final UpdateInboxRequest request) { validateRequestBodyAndThrowException(request); return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d", accountId, sandboxId), request, new RequestData(), InboxResponse.class @@ -63,9 +63,9 @@ public InboxResponse updateInbox(final long accountId, final long inboxId, final } @Override - public InboxResponse cleanInbox(final long accountId, final long inboxId) { + public InboxResponse cleanSandbox(final long accountId, final long sandboxId) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/clean", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/clean", accountId, sandboxId), null, new RequestData(), InboxResponse.class @@ -73,9 +73,9 @@ public InboxResponse cleanInbox(final long accountId, final long inboxId) { } @Override - public InboxResponse markAsRead(final long accountId, final long inboxId) { + public InboxResponse markAsRead(final long accountId, final long sandboxId) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/all_read", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/all_read", accountId, sandboxId), null, new RequestData(), InboxResponse.class @@ -83,9 +83,9 @@ public InboxResponse markAsRead(final long accountId, final long inboxId) { } @Override - public InboxResponse resetCredentials(final long accountId, final long inboxId) { + public InboxResponse resetCredentials(final long accountId, final long sandboxId) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/reset_credentials", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/reset_credentials", accountId, sandboxId), null, new RequestData(), InboxResponse.class @@ -93,9 +93,9 @@ public InboxResponse resetCredentials(final long accountId, final long inboxId) } @Override - public InboxResponse enableEmailAddress(final long accountId, final long inboxId) { + public InboxResponse enableEmailAddress(final long accountId, final long sandboxId) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/toggle_email_username", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/toggle_email_username", accountId, sandboxId), null, new RequestData(), InboxResponse.class @@ -103,9 +103,9 @@ public InboxResponse enableEmailAddress(final long accountId, final long inboxId } @Override - public InboxResponse resetEmailAddresses(final long accountId, final long inboxId) { + public InboxResponse resetEmailAddresses(final long accountId, final long sandboxId) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/reset_email_username", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/reset_email_username", accountId, sandboxId), null, new RequestData(), InboxResponse.class @@ -113,7 +113,7 @@ public InboxResponse resetEmailAddresses(final long accountId, final long inboxI } @Override - public List getInboxes(final long accountId) { + public List getSandboxes(final long accountId) { return httpClient.getList( String.format(apiHost + "/api/accounts/%d/inboxes", accountId), new RequestData(), diff --git a/src/main/java/io/mailtrap/api/marketingstats/MarketingStatsFilter.java b/src/main/java/io/mailtrap/api/marketingstats/MarketingStatsFilter.java index a1c7cf2..d575e80 100644 --- a/src/main/java/io/mailtrap/api/marketingstats/MarketingStatsFilter.java +++ b/src/main/java/io/mailtrap/api/marketingstats/MarketingStatsFilter.java @@ -29,8 +29,8 @@ public class MarketingStatsFilter { private String endDate; /** - * IDs of the sending domains to include, as returned by the Sending Domains API. If omitted, - * every sending domain of the account is included. + * IDs of the domains to include, as returned by the Domains API. If omitted, + * every domain of the account is included. */ private List sendingDomainIds; diff --git a/src/main/java/io/mailtrap/api/messages/Messages.java b/src/main/java/io/mailtrap/api/messages/Messages.java index 865f0d6..9fc8999 100644 --- a/src/main/java/io/mailtrap/api/messages/Messages.java +++ b/src/main/java/io/mailtrap/api/messages/Messages.java @@ -8,7 +8,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with email messages + * Interface representing the Mailtrap Sandbox API for interaction with email messages */ public interface Messages { @@ -16,130 +16,130 @@ public interface Messages { * Get email message by ID * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return email message with its attributes */ - MessageResponse getMessage(long accountId, long inboxId, long messageId); + MessageResponse getMessage(long accountId, long sandboxId, long messageId); /** * Update message attributes * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @param request attributes to update * @return email message with its updated attributes */ - MessageResponse updateMessage(long accountId, long inboxId, long messageId, UpdateMessageRequest request); + MessageResponse updateMessage(long accountId, long sandboxId, long messageId, UpdateMessageRequest request); /** - * Delete message from inbox + * Delete message from sandbox * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return attributes of the deleted message */ - MessageResponse deleteMessage(long accountId, long inboxId, long messageId); + MessageResponse deleteMessage(long accountId, long sandboxId, long messageId); /** * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param queryParams additional query parameters * @return list of messages */ - List getMessages(long accountId, long inboxId, ListMessagesQueryParams queryParams); + List getMessages(long accountId, long sandboxId, ListMessagesQueryParams queryParams); /** * Forward message to an email address. The email address must be confirmed by the recipient in advance * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @param request email where to forward message * @return confirmation about forwarding */ - ForwardMessageResponse forwardMessage(long accountId, long inboxId, long messageId, ForwardMessageRequest request); + ForwardMessageResponse forwardMessage(long accountId, long sandboxId, long messageId, ForwardMessageRequest request); /** * Get a brief spam report by message ID * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return message spam analysis report */ - MessageSpamScoreResponse getSpamScore(long accountId, long inboxId, long messageId); + MessageSpamScoreResponse getSpamScore(long accountId, long sandboxId, long messageId); /** * Get a brief HTML report by message ID * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return message HTML analysis report */ - MessageHtmlAnalysisResponse getMessageHtmlAnalysis(long accountId, long inboxId, long messageId); + MessageHtmlAnalysisResponse getMessageHtmlAnalysis(long accountId, long sandboxId, long messageId); /** * Get text email body, if it exists * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return message body in txt format */ - String getTextMessage(long accountId, long inboxId, long messageId); + String getTextMessage(long accountId, long sandboxId, long messageId); /** * Get raw email body * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return raw message body */ - String getRawMessage(long accountId, long inboxId, long messageId); + String getRawMessage(long accountId, long sandboxId, long messageId); /** * Get HTML source of email * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return HTML source of a message */ - String getMessageSource(long accountId, long inboxId, long messageId); + String getMessageSource(long accountId, long sandboxId, long messageId); /** * Get formatted HTML email body. Not applicable for plain text emails * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return message body in html format */ - String getHtmlMessage(long accountId, long inboxId, long messageId); + String getHtmlMessage(long accountId, long sandboxId, long messageId); /** * Get email message in .eml format * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return .eml of the message */ - String getMessageAsEml(long accountId, long inboxId, long messageId); + String getMessageAsEml(long accountId, long sandboxId, long messageId); /** * Get mail headers of a message * * @param accountId unique account ID - * @param inboxId unique inbox ID + * @param sandboxId unique sandbox ID * @param messageId unique message ID * @return mail headers of the message */ - MessageHeadersResponse getMailHeaders(long accountId, long inboxId, long messageId); + MessageHeadersResponse getMailHeaders(long accountId, long sandboxId, long messageId); } diff --git a/src/main/java/io/mailtrap/api/messages/MessagesImpl.java b/src/main/java/io/mailtrap/api/messages/MessagesImpl.java index c0b5a4c..5ce4eb5 100644 --- a/src/main/java/io/mailtrap/api/messages/MessagesImpl.java +++ b/src/main/java/io/mailtrap/api/messages/MessagesImpl.java @@ -23,18 +23,18 @@ public MessagesImpl(final MailtrapConfig config) { } @Override - public MessageResponse getMessage(final long accountId, final long inboxId, final long messageId) { + public MessageResponse getMessage(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, sandboxId, messageId), new RequestData(), MessageResponse.class ); } @Override - public MessageResponse updateMessage(final long accountId, final long inboxId, final long messageId, final UpdateMessageRequest request) { + public MessageResponse updateMessage(final long accountId, final long sandboxId, final long messageId, final UpdateMessageRequest request) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, sandboxId, messageId), request, new RequestData(), MessageResponse.class @@ -42,32 +42,32 @@ public MessageResponse updateMessage(final long accountId, final long inboxId, f } @Override - public MessageResponse deleteMessage(final long accountId, final long inboxId, final long messageId) { + public MessageResponse deleteMessage(final long accountId, final long sandboxId, final long messageId) { return httpClient.delete( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d", accountId, sandboxId, messageId), new RequestData(), MessageResponse.class ); } @Override - public List getMessages(final long accountId, final long inboxId, @NonNull final ListMessagesQueryParams listMessagesQueryParams) { + public List getMessages(final long accountId, final long sandboxId, @NonNull final ListMessagesQueryParams listMessagesQueryParams) { final var queryParams = RequestData.buildQueryParams( entry("last_id", Optional.ofNullable(listMessagesQueryParams.getLastId())), entry("page", Optional.ofNullable(listMessagesQueryParams.getPage())), entry("search", Optional.ofNullable(listMessagesQueryParams.getSearch()))); return httpClient.getList( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages", accountId, inboxId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages", accountId, sandboxId), new RequestData(queryParams), MessageResponse.class ); } @Override - public ForwardMessageResponse forwardMessage(final long accountId, final long inboxId, final long messageId, final ForwardMessageRequest request) { + public ForwardMessageResponse forwardMessage(final long accountId, final long sandboxId, final long messageId, final ForwardMessageRequest request) { return httpClient.post( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/forward", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/forward", accountId, sandboxId, messageId), request, new RequestData(), ForwardMessageResponse.class @@ -75,72 +75,72 @@ public ForwardMessageResponse forwardMessage(final long accountId, final long in } @Override - public MessageSpamScoreResponse getSpamScore(final long accountId, final long inboxId, final long messageId) { + public MessageSpamScoreResponse getSpamScore(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/spam_report", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/spam_report", accountId, sandboxId, messageId), new RequestData(), MessageSpamScoreResponse.class ); } @Override - public MessageHtmlAnalysisResponse getMessageHtmlAnalysis(final long accountId, final long inboxId, final long messageId) { + public MessageHtmlAnalysisResponse getMessageHtmlAnalysis(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/analyze", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/analyze", accountId, sandboxId, messageId), new RequestData(), MessageHtmlAnalysisResponse.class ); } @Override - public String getTextMessage(final long accountId, final long inboxId, final long messageId) { + public String getTextMessage(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.txt", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.txt", accountId, sandboxId, messageId), new RequestData(), String.class ); } @Override - public String getRawMessage(final long accountId, final long inboxId, final long messageId) { + public String getRawMessage(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.raw", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.raw", accountId, sandboxId, messageId), new RequestData(), String.class ); } @Override - public String getMessageSource(final long accountId, final long inboxId, final long messageId) { + public String getMessageSource(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.htmlsource", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.htmlsource", accountId, sandboxId, messageId), new RequestData(), String.class ); } @Override - public String getHtmlMessage(final long accountId, final long inboxId, final long messageId) { + public String getHtmlMessage(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.html", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.html", accountId, sandboxId, messageId), new RequestData(), String.class ); } @Override - public String getMessageAsEml(final long accountId, final long inboxId, final long messageId) { + public String getMessageAsEml(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.eml", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/body.eml", accountId, sandboxId, messageId), new RequestData(), String.class ); } @Override - public MessageHeadersResponse getMailHeaders(final long accountId, final long inboxId, final long messageId) { + public MessageHeadersResponse getMailHeaders(final long accountId, final long sandboxId, final long messageId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/mail_headers", accountId, inboxId, messageId), + String.format(apiHost + "/api/accounts/%d/inboxes/%d/messages/%d/mail_headers", accountId, sandboxId, messageId), new RequestData(), MessageHeadersResponse.class ); diff --git a/src/main/java/io/mailtrap/api/permissions/Permissions.java b/src/main/java/io/mailtrap/api/permissions/Permissions.java index 855ef87..40d42dd 100644 --- a/src/main/java/io/mailtrap/api/permissions/Permissions.java +++ b/src/main/java/io/mailtrap/api/permissions/Permissions.java @@ -7,7 +7,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with permissions + * Interface representing the Mailtrap General API for interaction with permissions */ public interface Permissions { diff --git a/src/main/java/io/mailtrap/api/projects/Projects.java b/src/main/java/io/mailtrap/api/projects/Projects.java index 6f6fba3..fc0dc03 100644 --- a/src/main/java/io/mailtrap/api/projects/Projects.java +++ b/src/main/java/io/mailtrap/api/projects/Projects.java @@ -7,7 +7,7 @@ import java.util.List; /** - * Interface representing the Mailtrap Testing API for interaction with projects + * Interface representing the Mailtrap Sandbox API for interaction with projects */ public interface Projects { @@ -21,19 +21,19 @@ public interface Projects { ProjectsResponse createProject(long accountId, ProjectRequest request); /** - * List projects and their inboxes to which the API token has access. + * List projects and their sandboxes to which the API token has access. * * @param accountId unique account ID - * @return the list of projects with nested inboxes. permissions returns the permissions of the token for the project + * @return the list of projects with nested sandboxes. permissions returns the permissions of the token for the project */ List getProjects(long accountId); /** - * Get the project and its inboxes + * Get the project and its sandboxes * * @param accountId unique account ID * @param projectId unique project ID - * @return project attributes and inboxes of this project with their attributes. permissions returns the permissions of the token for the project + * @return project attributes and sandboxes of this project with their attributes. permissions returns the permissions of the token for the project */ ProjectsResponse getProject(long accountId, long projectId); @@ -43,12 +43,12 @@ public interface Projects { * @param accountId unique account ID * @param projectId unique project ID * @param updateRequest request data - * @return project attributes and inboxes of this project with their attributes. permissions returns the permissions of the token for the project + * @return project attributes and sandboxes of this project with their attributes. permissions returns the permissions of the token for the project */ ProjectsResponse updateProject(long accountId, long projectId, ProjectRequest updateRequest); /** - * Delete project and its inboxes + * Delete project and its sandboxes * * @param accountId unique account ID * @param projectId unique project ID diff --git a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java index a072f07..ade5394 100644 --- a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java +++ b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java @@ -7,58 +7,94 @@ import java.util.List; +/** + * Interface representing the Mailtrap Sending API for interaction with domains + */ public interface SendingDomains { /** - * Create a sending domain + * Create a domain * * @param accountId unique account ID * @param request request data - * @return Attributes of created sending domain + * @return Attributes of created domain */ SendingDomainsResponse create(long accountId, CreateSendingDomainRequest request); /** - * Get sending domains and their statuses + * Get domains and their statuses * * @param accountId unique account ID * @return domains with their attributes, DNS records, statuses */ - List getSendingDomains(long accountId); + List getDomains(long accountId); /** * Get domain data and it's status * - * @param accountId unique account ID - * @param sendingDomainId unique domain ID + * @param accountId unique account ID + * @param domainId unique domain ID * @return domain attributes, DNS records, status */ - SendingDomainsResponse getSendingDomain(long accountId, long sendingDomainId); + SendingDomainsResponse getDomain(long accountId, long domainId); /** - * Update configuration settings for a sending domain + * Update configuration settings for a domain * - * @param accountId unique account ID - * @param sendingDomainId unique domain ID - * @param request request data, only the fields set are sent + * @param accountId unique account ID + * @param domainId unique domain ID + * @param request request data, only the fields set are sent * @return updated domain attributes, DNS records, status */ - SendingDomainsResponse update(long accountId, long sendingDomainId, UpdateSendingDomainRequest request); + SendingDomainsResponse update(long accountId, long domainId, UpdateSendingDomainRequest request); /** - * Send sending domain setup instructions + * Send domain setup instructions * - * @param accountId unique account ID - * @param sendingDomainId unique domain ID - * @param request request data + * @param accountId unique account ID + * @param domainId unique domain ID + * @param request request data */ - void sendSendingDomainsSetupInstructions(long accountId, long sendingDomainId, SendingDomainsSetupInstructionsRequest request); + void sendDomainsSetupInstructions(long accountId, long domainId, SendingDomainsSetupInstructionsRequest request); /** - * Delete a sending domain + * Delete a domain * - * @param accountId unique account ID - * @param sendingDomainId unique domain ID + * @param accountId unique account ID + * @param domainId unique domain ID + */ + void deleteDomain(long accountId, long domainId); + + /** + * @deprecated Use {@link #getDomains(long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default List getSendingDomains(final long accountId) { + return getDomains(accountId); + } + + /** + * @deprecated Use {@link #getDomain(long, long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default SendingDomainsResponse getSendingDomain(final long accountId, final long sendingDomainId) { + return getDomain(accountId, sendingDomainId); + } + + /** + * @deprecated Use {@link #sendDomainsSetupInstructions(long, long, SendingDomainsSetupInstructionsRequest)} instead. + * Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + default void sendSendingDomainsSetupInstructions(final long accountId, final long sendingDomainId, final SendingDomainsSetupInstructionsRequest request) { + sendDomainsSetupInstructions(accountId, sendingDomainId, request); + } + + /** + * @deprecated Use {@link #deleteDomain(long, long)} instead. Will be removed in a future major release. */ - void deleteSendingDomain(long accountId, long sendingDomainId); + @Deprecated(since = "1.11.0") + default void deleteSendingDomain(final long accountId, final long sendingDomainId) { + deleteDomain(accountId, sendingDomainId); + } } diff --git a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java index 8917702..472d8b3 100644 --- a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java +++ b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java @@ -29,7 +29,7 @@ public SendingDomainsResponse create(final long accountId, final CreateSendingDo } @Override - public List getSendingDomains(final long accountId) { + public List getDomains(final long accountId) { return httpClient.getList( String.format(apiHost + "/api/accounts/%d/sending_domains", accountId), new RequestData(), @@ -38,18 +38,18 @@ public List getSendingDomains(final long accountId) { } @Override - public SendingDomainsResponse getSendingDomain(final long accountId, final long sendingDomainId) { + public SendingDomainsResponse getDomain(final long accountId, final long domainId) { return httpClient.get( - String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, sendingDomainId), + String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, domainId), new RequestData(), SendingDomainsResponse.class ); } @Override - public SendingDomainsResponse update(final long accountId, final long sendingDomainId, final UpdateSendingDomainRequest request) { + public SendingDomainsResponse update(final long accountId, final long domainId, final UpdateSendingDomainRequest request) { return httpClient.patch( - String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, sendingDomainId), + String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, domainId), request, new RequestData(), SendingDomainsResponse.class @@ -57,9 +57,9 @@ public SendingDomainsResponse update(final long accountId, final long sendingDom } @Override - public void sendSendingDomainsSetupInstructions(final long accountId, final long sendingDomainId, final SendingDomainsSetupInstructionsRequest request) { + public void sendDomainsSetupInstructions(final long accountId, final long domainId, final SendingDomainsSetupInstructionsRequest request) { httpClient.post( - String.format(apiHost + "/api/accounts/%d/sending_domains/%d/send_setup_instructions", accountId, sendingDomainId), + String.format(apiHost + "/api/accounts/%d/sending_domains/%d/send_setup_instructions", accountId, domainId), request, new RequestData(), Void.class @@ -67,10 +67,10 @@ public void sendSendingDomainsSetupInstructions(final long accountId, final long } @Override - public void deleteSendingDomain(final long accountId, final long sendingDomainId) { + public void deleteDomain(final long accountId, final long domainId) { httpClient .delete( - String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, sendingDomainId), + String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, domainId), new RequestData(), Void.class ); diff --git a/src/main/java/io/mailtrap/api/testingemails/TestingEmails.java b/src/main/java/io/mailtrap/api/testingemails/TestingEmails.java index 63d207a..acdcc2b 100644 --- a/src/main/java/io/mailtrap/api/testingemails/TestingEmails.java +++ b/src/main/java/io/mailtrap/api/testingemails/TestingEmails.java @@ -8,21 +8,21 @@ import io.mailtrap.model.response.emails.SendResponse; /** - * Interface representing the Mailtrap Testing API for sending emails. + * Interface representing the Mailtrap Sandbox API for sending emails. */ public interface TestingEmails { /** * Sends an email * - * @param mail The email message to be sent. - * @param inboxId ID of the testing inbox, where to send an email. + * @param mail The email message to be sent. + * @param sandboxId ID of the sandbox, where to send an email. * @return A response indicating the result of the send operation. *

* @throws HttpException If there is an HTTP-related error during the send operation. * @throws InvalidRequestBodyException If the request body is invalid. */ - SendResponse send(MailtrapMail mail, long inboxId) throws HttpException, InvalidRequestBodyException; + SendResponse send(MailtrapMail mail, long sandboxId) throws HttpException, InvalidRequestBodyException; - BatchSendResponse batchSend(MailtrapBatchMail mail, long inboxId) throws HttpException, InvalidRequestBodyException; + BatchSendResponse batchSend(MailtrapBatchMail mail, long sandboxId) throws HttpException, InvalidRequestBodyException; } diff --git a/src/main/java/io/mailtrap/api/testingemails/TestingEmailsImpl.java b/src/main/java/io/mailtrap/api/testingemails/TestingEmailsImpl.java index b687aa1..b410674 100644 --- a/src/main/java/io/mailtrap/api/testingemails/TestingEmailsImpl.java +++ b/src/main/java/io/mailtrap/api/testingemails/TestingEmailsImpl.java @@ -19,11 +19,11 @@ public class TestingEmailsImpl extends SendApiResource implements TestingEmails public TestingEmailsImpl(final MailtrapConfig config, final MailtrapValidator mailtrapValidator) { super(config, mailtrapValidator); - this.apiHost = Constants.EMAIL_TESTING_SEND_HOST; + this.apiHost = Constants.EMAIL_SANDBOX_SEND_HOST; } @Override - public SendResponse send(final MailtrapMail mail, final long inboxId) { + public SendResponse send(final MailtrapMail mail, final long sandboxId) { validateMailPayload(mail); RequestData requestData = new RequestData(); if (mail.getHeaders() != null) { @@ -32,7 +32,7 @@ public SendResponse send(final MailtrapMail mail, final long inboxId) { return httpClient.post( - String.format(apiHost + "/api/send/%d", inboxId), + String.format(apiHost + "/api/send/%d", sandboxId), mail, requestData, SendResponse.class @@ -40,12 +40,12 @@ public SendResponse send(final MailtrapMail mail, final long inboxId) { } @Override - public BatchSendResponse batchSend(final MailtrapBatchMail mail, final long inboxId) throws HttpException, InvalidRequestBodyException { + public BatchSendResponse batchSend(final MailtrapBatchMail mail, final long sandboxId) throws HttpException, InvalidRequestBodyException { validateBatchPayload(mail); return httpClient.post( - String.format(apiHost + "/api/batch/%d", inboxId), + String.format(apiHost + "/api/batch/%d", sandboxId), mail, new RequestData(), BatchSendResponse.class ); diff --git a/src/main/java/io/mailtrap/api/trackingoptouts/TrackingOptOuts.java b/src/main/java/io/mailtrap/api/trackingoptouts/TrackingOptOuts.java index 96544a1..65ef52d 100644 --- a/src/main/java/io/mailtrap/api/trackingoptouts/TrackingOptOuts.java +++ b/src/main/java/io/mailtrap/api/trackingoptouts/TrackingOptOuts.java @@ -18,7 +18,7 @@ public interface TrackingOptOuts { TrackingOptOutListResponse getTrackingOptOuts(TrackingOptOutListFilter filter); /** - * Add an email address to the tracking opt-out list for a sending domain. + * Add an email address to the tracking opt-out list for a domain. * * @param request - request data * @return the created tracking opt-out diff --git a/src/main/java/io/mailtrap/client/MailtrapClient.java b/src/main/java/io/mailtrap/client/MailtrapClient.java index 0d5cd5e..756d651 100644 --- a/src/main/java/io/mailtrap/client/MailtrapClient.java +++ b/src/main/java/io/mailtrap/client/MailtrapClient.java @@ -27,10 +27,9 @@ public class MailtrapClient { private final MailtrapEmailSendingApi sendingApi; /** - * API for Mailtrap.io Testing functionality + * API for Mailtrap.io Email Sandbox functionality */ - @Getter - private final MailtrapEmailTestingApi testingApi; + private final MailtrapEmailTestingApi sandboxApi; /** * API for Mailtrap.io Bulk Sending functionality @@ -90,10 +89,25 @@ public class MailtrapClient { /** * Utility class which holds sending context (which API to use: Email Sending API, Bulk Sending API or - * Email Testing API, inbox id for Email Testing API) to make it possible to perform send directly from MailtrapClient + * Email Sandbox API, sandbox ID for Email Sandbox API) to make it possible to perform send directly from MailtrapClient */ private final SendingContextHolder sendingContextHolder; + /** + * @return API for Mailtrap.io Email Sandbox functionality + */ + public MailtrapEmailTestingApi sandboxApi() { + return sandboxApi; + } + + /** + * @deprecated Use {@link #sandboxApi()} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public MailtrapEmailTestingApi testingApi() { + return sandboxApi(); + } + /** * Sends an email based on the specified sending configuration. * @@ -104,7 +118,7 @@ public SendResponse send(final MailtrapMail mailtrapMail) { if (sendingContextHolder.isBulk()) { return bulkSendingApi.emails().send(mailtrapMail); } else if (sendingContextHolder.isSandbox()) { - return testingApi.emails().send(mailtrapMail, sendingContextHolder.getInboxId()); + return sandboxApi.emails().send(mailtrapMail, sendingContextHolder.getSandboxId()); } else { return sendingApi.emails().send(mailtrapMail); } @@ -120,7 +134,7 @@ public BatchSendResponse batchSend(final MailtrapBatchMail mailtrapBatchMail) { if (sendingContextHolder.isBulk()) { return bulkSendingApi.emails().batchSend(mailtrapBatchMail); } else if (sendingContextHolder.isSandbox()) { - return testingApi.emails().batchSend(mailtrapBatchMail, sendingContextHolder.getInboxId()); + return sandboxApi.emails().batchSend(mailtrapBatchMail, sendingContextHolder.getSandboxId()); } else { return sendingApi.emails().batchSend(mailtrapBatchMail); } @@ -131,26 +145,34 @@ public BatchSendResponse batchSend(final MailtrapBatchMail mailtrapBatchMail) { */ public void switchToBulkSendingApi() { this.sendingContextHolder.setBulk(true); - this.sendingContextHolder.setInboxId(null); + this.sendingContextHolder.setSandboxId(null); this.sendingContextHolder.setSandbox(false); } /** - * Configures `send` method to use Email Testing API + * Configures `send` method to use Email Sandbox API * - * @param inboxId the inbox ID to use for testing + * @param sandboxId the sandbox ID to send emails to */ - public void switchToEmailTestingApi(final Long inboxId) { - this.sendingContextHolder.setInboxId(inboxId); + public void switchToEmailSandboxApi(final Long sandboxId) { + this.sendingContextHolder.setSandboxId(sandboxId); this.sendingContextHolder.setSandbox(true); this.sendingContextHolder.setBulk(false); } + /** + * @deprecated Use {@link #switchToEmailSandboxApi(Long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public void switchToEmailTestingApi(final Long inboxId) { + switchToEmailSandboxApi(inboxId); + } + /** * Configures `send` method to use Email Sending API. */ public void switchToEmailSendingApi() { - this.sendingContextHolder.setInboxId(null); + this.sendingContextHolder.setSandboxId(null); this.sendingContextHolder.setSandbox(false); this.sendingContextHolder.setBulk(false); } diff --git a/src/main/java/io/mailtrap/client/api/MailtrapEmailTestingApi.java b/src/main/java/io/mailtrap/client/api/MailtrapEmailTestingApi.java index 7d85cc7..d079661 100644 --- a/src/main/java/io/mailtrap/client/api/MailtrapEmailTestingApi.java +++ b/src/main/java/io/mailtrap/client/api/MailtrapEmailTestingApi.java @@ -10,7 +10,7 @@ import lombok.experimental.Accessors; /** - * Represents an API for Mailtrap Testing functionality + * Represents an API for Mailtrap Email Sandbox functionality */ @Getter @Accessors(fluent = true) @@ -18,7 +18,22 @@ public class MailtrapEmailTestingApi { private final TestingEmails emails; private final Attachments attachments; - private final Inboxes inboxes; + private final Inboxes sandboxes; private final Projects projects; private final Messages messages; + + /** + * @return API for managing sandboxes + */ + public Inboxes sandboxes() { + return sandboxes; + } + + /** + * @deprecated Use {@link #sandboxes()} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public Inboxes inboxes() { + return sandboxes(); + } } diff --git a/src/main/java/io/mailtrap/config/MailtrapConfig.java b/src/main/java/io/mailtrap/config/MailtrapConfig.java index 7ff7494..e628d68 100644 --- a/src/main/java/io/mailtrap/config/MailtrapConfig.java +++ b/src/main/java/io/mailtrap/config/MailtrapConfig.java @@ -29,7 +29,7 @@ public class MailtrapConfig { private final CustomHttpClient httpClient; /** - * Indicates whether to use Email Testing API + * Indicates whether to use Email Sandbox API */ private final boolean sandbox; @@ -39,16 +39,16 @@ public class MailtrapConfig { private final boolean bulk; /** - * Inbox ID. Should be used alongside with {@link #sandbox}, as Email Testing API requires inbox ID + * Sandbox ID. Should be used alongside with {@link #sandbox}, as Email Sandbox API requires sandbox ID */ - private final Long inboxId; + private final Long sandboxId; private MailtrapConfig(final Builder builder) { if (builder.sandbox && builder.bulk) { - throw new BaseMailtrapException("Bulk mode is not applicable for Testing API"); + throw new BaseMailtrapException("Bulk mode is not applicable for Sandbox API"); } - if (builder.sandbox && Objects.isNull(builder.inboxId)) { - throw new BaseMailtrapException("Testing API requires inbox ID"); + if (builder.sandbox && Objects.isNull(builder.sandboxId)) { + throw new BaseMailtrapException("Sandbox API requires sandbox ID"); } this.connectionTimeout = builder.connectionTimeout; @@ -56,7 +56,22 @@ private MailtrapConfig(final Builder builder) { this.httpClient = builder.httpClient; this.sandbox = builder.sandbox; this.bulk = builder.bulk; - this.inboxId = builder.inboxId; + this.sandboxId = builder.sandboxId; + } + + /** + * @return the sandbox ID the Email Sandbox API sends to + */ + public Long getSandboxId() { + return sandboxId; + } + + /** + * @deprecated Use {@link #getSandboxId()} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public Long getInboxId() { + return getSandboxId(); } public static class Builder { @@ -65,7 +80,7 @@ public static class Builder { private CustomHttpClient httpClient; private boolean sandbox; private boolean bulk; - private Long inboxId; + private Long sandboxId; public Builder connectionTimeout(final Duration connectionTimeout) { this.connectionTimeout = connectionTimeout; @@ -92,11 +107,19 @@ public Builder bulk(final boolean bulk) { return this; } - public Builder inboxId(final Long inboxId) { - this.inboxId = inboxId; + public Builder sandboxId(final Long sandboxId) { + this.sandboxId = sandboxId; return this; } + /** + * @deprecated Use {@link #sandboxId(Long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public Builder inboxId(final Long inboxId) { + return sandboxId(inboxId); + } + public MailtrapConfig build() { return new MailtrapConfig(this); } diff --git a/src/main/java/io/mailtrap/factory/MailtrapClientFactory.java b/src/main/java/io/mailtrap/factory/MailtrapClientFactory.java index cbbceea..7255856 100644 --- a/src/main/java/io/mailtrap/factory/MailtrapClientFactory.java +++ b/src/main/java/io/mailtrap/factory/MailtrapClientFactory.java @@ -77,7 +77,7 @@ private MailtrapClientFactory() { */ public static MailtrapClient createMailtrapClient(final MailtrapConfig config) { final var sendingApi = createSendingApi(config); - final var testingApi = createTestingApi(config); + final var sandboxApi = createSandboxApi(config); final var bulkSendingApi = createBulkSendingApi(config); final var generalApi = createGeneralApi(config); final var contactsApi = createContactsApi(config); @@ -90,7 +90,7 @@ public static MailtrapClient createMailtrapClient(final MailtrapConfig config) { final var sendingContextHolder = configureSendingContext(config); - return new MailtrapClient(sendingApi, testingApi, bulkSendingApi, generalApi, contactsApi, emailTemplatesApi, + return new MailtrapClient(sendingApi, sandboxApi, bulkSendingApi, generalApi, contactsApi, emailTemplatesApi, templatesApi, organizationsApi, inboundApi, emailCampaignsApi, marketingApi, sendingContextHolder); } @@ -158,14 +158,14 @@ private static MailtrapEmailSendingApi createSendingApi(final MailtrapConfig con emailLogs); } - private static MailtrapEmailTestingApi createTestingApi(final MailtrapConfig config) { + private static MailtrapEmailTestingApi createSandboxApi(final MailtrapConfig config) { final var emails = new TestingEmailsImpl(config, VALIDATOR); final var attachments = new AttachmentsImpl(config); - final var inboxes = new InboxesImpl(config, VALIDATOR); + final var sandboxes = new InboxesImpl(config, VALIDATOR); final var projects = new ProjectsImpl(config, VALIDATOR); final var messages = new MessagesImpl(config); - return new MailtrapEmailTestingApi(emails, attachments, inboxes, projects, messages); + return new MailtrapEmailTestingApi(emails, attachments, sandboxes, projects, messages); } private static MailtrapBulkSendingApi createBulkSendingApi(final MailtrapConfig config) { @@ -190,7 +190,7 @@ private static SendingContextHolder configureSendingContext(final MailtrapConfig return SendingContextHolder.builder() .sandbox(config.isSandbox()) - .inboxId(config.getInboxId()) + .sandboxId(config.getSandboxId()) .bulk(config.isBulk()) .build(); } diff --git a/src/main/java/io/mailtrap/model/request/accountaccesses/ListAccountAccessQueryParams.java b/src/main/java/io/mailtrap/model/request/accountaccesses/ListAccountAccessQueryParams.java index 59d57e7..75d17ae 100644 --- a/src/main/java/io/mailtrap/model/request/accountaccesses/ListAccountAccessQueryParams.java +++ b/src/main/java/io/mailtrap/model/request/accountaccesses/ListAccountAccessQueryParams.java @@ -19,7 +19,7 @@ public class ListAccountAccessQueryParams { private List domainUuids; /** - * The identifiers of the inboxes for which to include the results + * The identifiers of the sandboxes for which to include the results */ private List inboxIds; diff --git a/src/main/java/io/mailtrap/model/request/emailcampaigns/CreateEmailCampaign.java b/src/main/java/io/mailtrap/model/request/emailcampaigns/CreateEmailCampaign.java index 76a4c57..7d284fe 100644 --- a/src/main/java/io/mailtrap/model/request/emailcampaigns/CreateEmailCampaign.java +++ b/src/main/java/io/mailtrap/model/request/emailcampaigns/CreateEmailCampaign.java @@ -29,8 +29,8 @@ public class CreateEmailCampaign extends AbstractModel { private String name; /** - * ID of the verified sending domain used for the campaign, as returned by the Sending - * Domains endpoints. + * ID of the verified domain used for the campaign, as returned by the Domains + * endpoints. */ @JsonProperty("domain_id") private Long domainId; diff --git a/src/main/java/io/mailtrap/model/request/emailcampaigns/UpdateEmailCampaign.java b/src/main/java/io/mailtrap/model/request/emailcampaigns/UpdateEmailCampaign.java index 7f04b27..7c4dce4 100644 --- a/src/main/java/io/mailtrap/model/request/emailcampaigns/UpdateEmailCampaign.java +++ b/src/main/java/io/mailtrap/model/request/emailcampaigns/UpdateEmailCampaign.java @@ -27,8 +27,8 @@ public class UpdateEmailCampaign extends AbstractModel { private String name; /** - * ID of the verified sending domain used for the campaign, as returned by the Sending - * Domains endpoints. + * ID of the verified domain used for the campaign, as returned by the Domains + * endpoints. */ @JsonProperty("domain_id") private Long domainId; diff --git a/src/main/java/io/mailtrap/model/response/emailcampaigns/EmailCampaign.java b/src/main/java/io/mailtrap/model/response/emailcampaigns/EmailCampaign.java index 8f4386a..ad9164f 100644 --- a/src/main/java/io/mailtrap/model/response/emailcampaigns/EmailCampaign.java +++ b/src/main/java/io/mailtrap/model/response/emailcampaigns/EmailCampaign.java @@ -23,7 +23,7 @@ public class EmailCampaign { private Long id; /** - * ID of the sending domain used for the campaign, as returned by the Sending Domains + * ID of the domain used for the campaign, as returned by the Domains * endpoints. */ @JsonProperty("domain_id") diff --git a/src/main/java/io/mailtrap/util/SendingContextHolder.java b/src/main/java/io/mailtrap/util/SendingContextHolder.java index 3b4ebd4..596aedc 100644 --- a/src/main/java/io/mailtrap/util/SendingContextHolder.java +++ b/src/main/java/io/mailtrap/util/SendingContextHolder.java @@ -7,13 +7,40 @@ /** * Utility class which holds sending context (which API to use: Email Sending API, Bulk Sending API or - * Email Testing API, inbox id for Email Testing API) to make it possible to perform send directly from {@link MailtrapClient} + * Email Sandbox API, sandbox ID for Email Sandbox API) to make it possible to perform send directly from {@link MailtrapClient} */ @Getter @Builder @Setter public class SendingContextHolder { private boolean sandbox; - private Long inboxId; + private Long sandboxId; private boolean bulk; + + /** + * @deprecated Use {@code getSandboxId()} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public Long getInboxId() { + return getSandboxId(); + } + + /** + * @deprecated Use {@code setSandboxId(Long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public void setInboxId(final Long inboxId) { + setSandboxId(inboxId); + } + + public static class SendingContextHolderBuilder { + + /** + * @deprecated Use {@code sandboxId(Long)} instead. Will be removed in a future major release. + */ + @Deprecated(since = "1.11.0") + public SendingContextHolderBuilder inboxId(final Long inboxId) { + return sandboxId(inboxId); + } + } } diff --git a/src/test/java/io/mailtrap/DeprecatedNamesTest.java b/src/test/java/io/mailtrap/DeprecatedNamesTest.java new file mode 100644 index 0000000..6eb2faf --- /dev/null +++ b/src/test/java/io/mailtrap/DeprecatedNamesTest.java @@ -0,0 +1,194 @@ +package io.mailtrap; + +import io.mailtrap.api.inboxes.Inboxes; +import io.mailtrap.api.sendingdomains.SendingDomains; +import io.mailtrap.client.MailtrapClient; +import io.mailtrap.client.api.MailtrapEmailTestingApi; +import io.mailtrap.config.MailtrapConfig; +import io.mailtrap.factory.MailtrapClientFactory; +import io.mailtrap.model.request.emails.MailtrapBatchMail; +import io.mailtrap.model.request.inboxes.CreateInboxRequest; +import io.mailtrap.model.request.inboxes.UpdateInboxRequest; +import io.mailtrap.model.request.sendingdomains.SendingDomainsSetupInstructionsRequest; +import io.mailtrap.model.response.inboxes.InboxResponse; +import io.mailtrap.model.response.sendingdomains.SendingDomainsResponse; +import io.mailtrap.testutils.BaseSendTest; +import io.mailtrap.testutils.DataMock; +import io.mailtrap.testutils.TestHttpClient; +import io.mailtrap.util.SendingContextHolder; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.lang.reflect.AnnotatedElement; +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * The old Testing, Inbox and SendingDomain entry points still work, delegate to their + * Sandbox and Domain replacements, and are marked {@link Deprecated}. + */ +@SuppressWarnings("deprecation") +class DeprecatedNamesTest extends BaseSendTest { + + private static final long ACCOUNT_ID = 1L; + private static final long PROJECT_ID = 2L; + private static final long DOMAIN_ID = 6L; + private static final String DEPRECATED_SINCE = "1.11.0"; + + private MailtrapClient client; + + @BeforeEach + void init() { + final TestHttpClient httpClient = new TestHttpClient(List.of( + DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/send/" + SANDBOX_ID, "POST", + "api/emails/sendRequest.json", "api/emails/sendResponse.json"), + DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", + "api/emails/batchSendRequest.json", "api/emails/batchSendResponse.json") + )); + + client = MailtrapClientFactory.createMailtrapClient(new MailtrapConfig.Builder() + .httpClient(httpClient) + .token("dummy_token") + .build()); + } + + @Test + void testingApi_returnsSandboxApi() { + assertSame(client.sandboxApi(), client.testingApi()); + } + + @Test + void inboxes_returnsSandboxes() { + assertSame(client.sandboxApi().sandboxes(), client.sandboxApi().inboxes()); + } + + @Test + void switchToEmailTestingApi_sendsToSandbox() { + client.switchToEmailTestingApi(SANDBOX_ID); + + assertEquals("11111", client.send(createValidTestMail()).getMessageIds().get(0)); + assertEquals("22222", client.batchSend(MailtrapBatchMail.builder().requests(List.of(createValidTestMail())).build()) + .getResponses().get(0).getMessageIds().get(0)); + } + + @Test + void configInboxId_setsSandboxId() { + final MailtrapConfig config = new MailtrapConfig.Builder() + .sandbox(true) + .inboxId(SANDBOX_ID) + .build(); + + assertEquals(SANDBOX_ID, config.getSandboxId()); + assertEquals(SANDBOX_ID, config.getInboxId()); + } + + @Test + void sendingContextHolderInboxId_isSandboxId() { + final SendingContextHolder holder = SendingContextHolder.builder().inboxId(SANDBOX_ID).build(); + assertEquals(SANDBOX_ID, holder.getSandboxId()); + assertEquals(SANDBOX_ID, holder.getInboxId()); + + holder.setInboxId(5L); + assertEquals(5L, holder.getSandboxId()); + } + + @Test + void emailTestingSendHost_isSandboxSendHost() { + assertEquals(Constants.EMAIL_SANDBOX_SEND_HOST, Constants.EMAIL_TESTING_SEND_HOST); + } + + @Test + void inboxMethods_delegateToSandboxMethods() { + final Inboxes sandboxes = mock(Inboxes.class, CALLS_REAL_METHODS); + final CreateInboxRequest createRequest = new CreateInboxRequest(new CreateInboxRequest.InboxCreateData("Test inbox")); + final UpdateInboxRequest updateRequest = new UpdateInboxRequest( + new UpdateInboxRequest.InboxUpdateData("Updated Inbox Name", "updated-email-username")); + final InboxResponse response = new InboxResponse(); + final List responses = List.of(response); + + doReturn(response).when(sandboxes).createSandbox(ACCOUNT_ID, PROJECT_ID, createRequest); + assertSame(response, sandboxes.createInbox(ACCOUNT_ID, PROJECT_ID, createRequest)); + verify(sandboxes).createSandbox(ACCOUNT_ID, PROJECT_ID, createRequest); + + doReturn(response).when(sandboxes).getSandboxAttributes(ACCOUNT_ID, SANDBOX_ID); + assertSame(response, sandboxes.getInboxAttributes(ACCOUNT_ID, SANDBOX_ID)); + verify(sandboxes).getSandboxAttributes(ACCOUNT_ID, SANDBOX_ID); + + doReturn(response).when(sandboxes).deleteSandbox(ACCOUNT_ID, SANDBOX_ID); + assertSame(response, sandboxes.deleteInbox(ACCOUNT_ID, SANDBOX_ID)); + verify(sandboxes).deleteSandbox(ACCOUNT_ID, SANDBOX_ID); + + doReturn(response).when(sandboxes).updateSandbox(ACCOUNT_ID, SANDBOX_ID, updateRequest); + assertSame(response, sandboxes.updateInbox(ACCOUNT_ID, SANDBOX_ID, updateRequest)); + verify(sandboxes).updateSandbox(ACCOUNT_ID, SANDBOX_ID, updateRequest); + + doReturn(response).when(sandboxes).cleanSandbox(ACCOUNT_ID, SANDBOX_ID); + assertSame(response, sandboxes.cleanInbox(ACCOUNT_ID, SANDBOX_ID)); + verify(sandboxes).cleanSandbox(ACCOUNT_ID, SANDBOX_ID); + + doReturn(responses).when(sandboxes).getSandboxes(ACCOUNT_ID); + assertSame(responses, sandboxes.getInboxes(ACCOUNT_ID)); + } + + @Test + void sendingDomainMethods_delegateToDomainMethods() { + final SendingDomains domains = mock(SendingDomains.class, CALLS_REAL_METHODS); + final SendingDomainsResponse response = new SendingDomainsResponse(); + final List responses = List.of(response); + final SendingDomainsSetupInstructionsRequest instructionsRequest = new SendingDomainsSetupInstructionsRequest("devops@test.io"); + + doReturn(responses).when(domains).getDomains(ACCOUNT_ID); + assertSame(responses, domains.getSendingDomains(ACCOUNT_ID)); + + doReturn(response).when(domains).getDomain(ACCOUNT_ID, DOMAIN_ID); + assertSame(response, domains.getSendingDomain(ACCOUNT_ID, DOMAIN_ID)); + verify(domains).getDomain(ACCOUNT_ID, DOMAIN_ID); + + domains.sendSendingDomainsSetupInstructions(ACCOUNT_ID, DOMAIN_ID, instructionsRequest); + verify(domains).sendDomainsSetupInstructions(ACCOUNT_ID, DOMAIN_ID, instructionsRequest); + + domains.deleteSendingDomain(ACCOUNT_ID, DOMAIN_ID); + verify(domains).deleteDomain(ACCOUNT_ID, DOMAIN_ID); + } + + @ParameterizedTest(name = "{0}") + @MethodSource("deprecatedMembers") + void oldNames_areMarkedDeprecated(final String name, final AnnotatedElement member) { + final Deprecated deprecated = member.getAnnotation(Deprecated.class); + + assertNotNull(deprecated, name + " should be @Deprecated"); + assertEquals(DEPRECATED_SINCE, deprecated.since(), name); + } + + static Stream deprecatedMembers() throws ReflectiveOperationException { + return Stream.of( + Arguments.of("MailtrapClient#testingApi", MailtrapClient.class.getMethod("testingApi")), + Arguments.of("MailtrapClient#switchToEmailTestingApi", MailtrapClient.class.getMethod("switchToEmailTestingApi", Long.class)), + Arguments.of("MailtrapConfig#getInboxId", MailtrapConfig.class.getMethod("getInboxId")), + Arguments.of("MailtrapConfig.Builder#inboxId", MailtrapConfig.Builder.class.getMethod("inboxId", Long.class)), + Arguments.of("SendingContextHolder#getInboxId", SendingContextHolder.class.getMethod("getInboxId")), + Arguments.of("SendingContextHolder#setInboxId", SendingContextHolder.class.getMethod("setInboxId", Long.class)), + Arguments.of("SendingContextHolderBuilder#inboxId", + SendingContextHolder.SendingContextHolderBuilder.class.getMethod("inboxId", Long.class)), + Arguments.of("Constants#EMAIL_TESTING_SEND_HOST", Constants.class.getField("EMAIL_TESTING_SEND_HOST")), + Arguments.of("MailtrapEmailTestingApi#inboxes", MailtrapEmailTestingApi.class.getMethod("inboxes")), + Arguments.of("Inboxes#createInbox", Inboxes.class.getMethod("createInbox", long.class, long.class, CreateInboxRequest.class)), + Arguments.of("Inboxes#getInboxAttributes", Inboxes.class.getMethod("getInboxAttributes", long.class, long.class)), + Arguments.of("Inboxes#deleteInbox", Inboxes.class.getMethod("deleteInbox", long.class, long.class)), + Arguments.of("Inboxes#updateInbox", Inboxes.class.getMethod("updateInbox", long.class, long.class, UpdateInboxRequest.class)), + Arguments.of("Inboxes#cleanInbox", Inboxes.class.getMethod("cleanInbox", long.class, long.class)), + Arguments.of("Inboxes#getInboxes", Inboxes.class.getMethod("getInboxes", long.class)), + Arguments.of("SendingDomains#getSendingDomains", SendingDomains.class.getMethod("getSendingDomains", long.class)), + Arguments.of("SendingDomains#getSendingDomain", SendingDomains.class.getMethod("getSendingDomain", long.class, long.class)), + Arguments.of("SendingDomains#sendSendingDomainsSetupInstructions", SendingDomains.class.getMethod( + "sendSendingDomainsSetupInstructions", long.class, long.class, SendingDomainsSetupInstructionsRequest.class)), + Arguments.of("SendingDomains#deleteSendingDomain", SendingDomains.class.getMethod("deleteSendingDomain", long.class, long.class)) + ); + } +} diff --git a/src/test/java/io/mailtrap/api/attachments/AttachmentsImplTest.java b/src/test/java/io/mailtrap/api/attachments/AttachmentsImplTest.java index deb0fdc..9e13ac3 100644 --- a/src/test/java/io/mailtrap/api/attachments/AttachmentsImplTest.java +++ b/src/test/java/io/mailtrap/api/attachments/AttachmentsImplTest.java @@ -21,10 +21,10 @@ class AttachmentsImplTest extends BaseTest { @BeforeEach public void init() { final TestHttpClient httpClient = new TestHttpClient(List.of( - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/attachments", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/attachments", "GET", null, "api/attachments/getAttachmentsResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/attachments/" + attachmentId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/attachments/" + attachmentId, "GET", null, "api/attachments/getAttachmentResponse.json") )); @@ -33,12 +33,12 @@ public void init() { .token("dummy_token") .build(); - api = MailtrapClientFactory.createMailtrapClient(testConfig).testingApi().attachments(); + api = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().attachments(); } @Test public void test_getAttachments() { - final List attachments = api.getAttachments(accountId, inboxId, messageId, null); + final List attachments = api.getAttachments(accountId, sandboxId, messageId, null); assertEquals(1, attachments.size()); @@ -48,7 +48,7 @@ public void test_getAttachments() { @Test public void test_getAttachment() { - final AttachmentResponse attachment = api.getSingleAttachment(accountId, inboxId, messageId, attachmentId); + final AttachmentResponse attachment = api.getSingleAttachment(accountId, sandboxId, messageId, attachmentId); assertNotNull(attachment); assertEquals(attachmentId, attachment.getId()); diff --git a/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java b/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java index 9d349ca..51aa419 100644 --- a/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java +++ b/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java @@ -28,28 +28,28 @@ public void init() { DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/projects/" + projectId + "/inboxes", "POST", "api/inbox/createInboxRequest.json", "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId, "GET", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId, "DELETE", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId, "PATCH", "api/inbox/updateInboxRequest.json", "api/inbox/updateInboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/clean", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/clean", "PATCH", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/all_read", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/all_read", "PATCH", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/reset_credentials", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/reset_credentials", "PATCH", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/toggle_email_username", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/toggle_email_username", "PATCH", null, "api/inbox/inboxResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/reset_email_username", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/reset_email_username", "PATCH", null, "api/inbox/inboxResponse.json"), DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes", @@ -61,12 +61,12 @@ public void init() { .token("dummy_token") .build(); - api = MailtrapClientFactory.createMailtrapClient(testConfig).testingApi().inboxes(); + api = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().sandboxes(); } @Test - void test_createInbox() { - final InboxResponse createdInbox = api.createInbox(accountId, projectId, new CreateInboxRequest(new InboxCreateData("Test inbox"))); + void test_createSandbox() { + final InboxResponse createdInbox = api.createSandbox(accountId, projectId, new CreateInboxRequest(new InboxCreateData("Test inbox"))); assertNotNull(createdInbox); assertEquals(createdInbox.getProjectId(), projectId); @@ -74,8 +74,8 @@ void test_createInbox() { } @Test - void test_getInboxAttributes() { - final InboxResponse inboxAttributes = api.getInboxAttributes(accountId, inboxId); + void test_getSandboxAttributes() { + final InboxResponse inboxAttributes = api.getSandboxAttributes(accountId, sandboxId); assertNotNull(inboxAttributes); assertTrue(inboxAttributes.getPermission().isCanRead()); @@ -84,84 +84,84 @@ void test_getInboxAttributes() { } @Test - void test_deleteInbox() { - final InboxResponse deletedInbox = api.deleteInbox(accountId, inboxId); + void test_deleteSandbox() { + final InboxResponse deletedInbox = api.deleteSandbox(accountId, sandboxId); assertNotNull(deletedInbox); assertTrue(deletedInbox.getPermission().isCanRead()); - assertEquals(deletedInbox.getId(), inboxId); + assertEquals(deletedInbox.getId(), sandboxId); assertEquals("Test inbox", deletedInbox.getName()); } @Test - void test_updateInbox() { - final InboxResponse updatedInbox = api.updateInbox(accountId, inboxId, new UpdateInboxRequest(new InboxUpdateData("Updated Inbox Name", "updated-email-username"))); + void test_updateSandbox() { + final InboxResponse updatedInbox = api.updateSandbox(accountId, sandboxId, new UpdateInboxRequest(new InboxUpdateData("Updated Inbox Name", "updated-email-username"))); assertNotNull(updatedInbox); assertTrue(updatedInbox.getPermission().isCanRead()); - assertEquals(updatedInbox.getId(), inboxId); + assertEquals(updatedInbox.getId(), sandboxId); assertEquals("Updated Inbox Name", updatedInbox.getName()); assertEquals("updated-email-username", updatedInbox.getEmailUsername()); } @Test - void test_cleanInbox() { - final InboxResponse cleanedInbox = api.cleanInbox(accountId, inboxId); + void test_cleanSandbox() { + final InboxResponse cleanedInbox = api.cleanSandbox(accountId, sandboxId); assertNotNull(cleanedInbox); assertTrue(cleanedInbox.getPermission().isCanRead()); - assertEquals(cleanedInbox.getId(), inboxId); + assertEquals(cleanedInbox.getId(), sandboxId); assertEquals("Test inbox", cleanedInbox.getName()); } @Test void test_markAsRead() { - final InboxResponse markedAsRead = api.markAsRead(accountId, inboxId); + final InboxResponse markedAsRead = api.markAsRead(accountId, sandboxId); assertNotNull(markedAsRead); assertTrue(markedAsRead.getPermission().isCanRead()); - assertEquals(markedAsRead.getId(), inboxId); + assertEquals(markedAsRead.getId(), sandboxId); assertEquals("Test inbox", markedAsRead.getName()); } @Test void test_resetCredentials() { - final InboxResponse resetCredentials = api.resetCredentials(accountId, inboxId); + final InboxResponse resetCredentials = api.resetCredentials(accountId, sandboxId); assertNotNull(resetCredentials); assertTrue(resetCredentials.getPermission().isCanRead()); - assertEquals(resetCredentials.getId(), inboxId); + assertEquals(resetCredentials.getId(), sandboxId); assertEquals("Test inbox", resetCredentials.getName()); } @Test void test_enableEmailAddress() { - final InboxResponse enableEmailAddress = api.enableEmailAddress(accountId, inboxId); + final InboxResponse enableEmailAddress = api.enableEmailAddress(accountId, sandboxId); assertNotNull(enableEmailAddress); assertTrue(enableEmailAddress.getPermission().isCanRead()); - assertEquals(enableEmailAddress.getId(), inboxId); + assertEquals(enableEmailAddress.getId(), sandboxId); assertEquals("Test inbox", enableEmailAddress.getName()); } @Test void test_resetEmailAddresses() { - final InboxResponse resetEmailAddresses = api.resetEmailAddresses(accountId, inboxId); + final InboxResponse resetEmailAddresses = api.resetEmailAddresses(accountId, sandboxId); assertNotNull(resetEmailAddresses); assertTrue(resetEmailAddresses.getPermission().isCanRead()); - assertEquals(resetEmailAddresses.getId(), inboxId); + assertEquals(resetEmailAddresses.getId(), sandboxId); assertEquals("Test inbox", resetEmailAddresses.getName()); } @Test - void test_getInboxes() { - final List inboxes = api.getInboxes(accountId); + void test_getSandboxes() { + final List inboxes = api.getSandboxes(accountId); assertNotNull(inboxes); assertEquals(1, inboxes.size()); assertTrue(inboxes.get(0).getPermission().isCanRead()); - assertEquals(inboxes.get(0).getId(), inboxId); + assertEquals(inboxes.get(0).getId(), sandboxId); assertEquals("Test inbox", inboxes.get(0).getName()); } diff --git a/src/test/java/io/mailtrap/api/marketingstats/MarketingStatsImplTest.java b/src/test/java/io/mailtrap/api/marketingstats/MarketingStatsImplTest.java index 8ccc2e0..6b2ee49 100644 --- a/src/test/java/io/mailtrap/api/marketingstats/MarketingStatsImplTest.java +++ b/src/test/java/io/mailtrap/api/marketingstats/MarketingStatsImplTest.java @@ -39,7 +39,7 @@ public void init() { Map.of( "start_date", startDate, "end_date", endDate, - "sending_domain_ids[]", List.of(sendingDomainId), + "sending_domain_ids[]", List.of(domainId), "sources[]", List.of(MarketingStatsSource.CAMPAIGNS), "email_service_providers[]", List.of("Google", "Yahoo") )) @@ -82,7 +82,7 @@ void test_getMarketingStats_withFilters() { final MarketingStatsResponse response = api.getMarketingStats(MarketingStatsFilter.builder() .startDate(startDate) .endDate(endDate) - .sendingDomainIds(List.of(sendingDomainId)) + .sendingDomainIds(List.of(domainId)) .sources(List.of(MarketingStatsSource.CAMPAIGNS)) .emailServiceProviders(List.of("Google", "Yahoo")) .build()); diff --git a/src/test/java/io/mailtrap/api/messages/MessagesImplTest.java b/src/test/java/io/mailtrap/api/messages/MessagesImplTest.java index c0e038d..695869a 100644 --- a/src/test/java/io/mailtrap/api/messages/MessagesImplTest.java +++ b/src/test/java/io/mailtrap/api/messages/MessagesImplTest.java @@ -25,49 +25,49 @@ class MessagesImplTest extends BaseTest { @BeforeEach public void init() { final TestHttpClient httpClient = new TestHttpClient(List.of( - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId, "GET", null, "api/messages/messageResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId, "PATCH", "api/messages/updateMessageRequest.json", "api/messages/updatedMessageResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId, + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId, "DELETE", null, "api/messages/messageResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages", "GET", null, "api/messages/listMessagesResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages", "GET", null, "api/messages/listMessagesWithSearchEmptyResponse.json", Map.of("search", "qqqqqqqq")), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages", "GET", null, "api/messages/listMessagesWithSearchSingleEmailResponse.json", Map.of("search", "mary")), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/forward", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/forward", "POST", "api/messages/forwardMessageRequest.json", "api/messages/forwardMessageResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/spam_report", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/spam_report", "GET", null, "api/messages/spamScoreResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/analyze", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/analyze", "GET", null, "api/messages/htmlAnalysisResponse.json"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/body.txt", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/body.txt", "GET", null, "api/messages/textMessageResponse.txt"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/body.raw", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/body.raw", "GET", null, "api/messages/rawMessageResponse.txt"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/body.htmlsource", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/body.htmlsource", "GET", null, "api/messages/messageSourceResponse.txt"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/body.html", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/body.html", "GET", null, "api/messages/htmlMessageResponse.txt"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/body.eml", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/body.eml", "GET", null, "api/messages/emlResponse.txt"), - DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + inboxId + "/messages/" + messageId + "/mail_headers", + DataMock.build(Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/inboxes/" + sandboxId + "/messages/" + messageId + "/mail_headers", "GET", null, "api/messages/messageHeadersResponse.json") )); @@ -76,12 +76,12 @@ public void init() { .token("dummy_token") .build(); - api = MailtrapClientFactory.createMailtrapClient(testConfig).testingApi().messages(); + api = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().messages(); } @Test void test_getMessage() { - final MessageResponse message = api.getMessage(accountId, inboxId, messageId); + final MessageResponse message = api.getMessage(accountId, sandboxId, messageId); assertNotNull(message); assertEquals(messageId, message.getId()); @@ -90,7 +90,7 @@ void test_getMessage() { @Test void test_updateMessage() { - final MessageResponse message = api.updateMessage(accountId, inboxId, messageId, new UpdateMessageRequest(new UpdateMessageRequest.MessageUpdateData("true"))); + final MessageResponse message = api.updateMessage(accountId, sandboxId, messageId, new UpdateMessageRequest(new UpdateMessageRequest.MessageUpdateData("true"))); assertNotNull(message); assertEquals(messageId, message.getId()); @@ -99,7 +99,7 @@ void test_updateMessage() { @Test void test_deleteMessage() { - final MessageResponse message = api.deleteMessage(accountId, inboxId, messageId); + final MessageResponse message = api.deleteMessage(accountId, sandboxId, messageId); assertNotNull(message); assertEquals(messageId, message.getId()); @@ -107,7 +107,7 @@ void test_deleteMessage() { @Test void test_getMessages() { - final List messages = api.getMessages(accountId, inboxId, ListMessagesQueryParams.empty()); + final List messages = api.getMessages(accountId, sandboxId, ListMessagesQueryParams.empty()); assertNotNull(messages); assertEquals(1, messages.size()); @@ -119,7 +119,7 @@ void test_getMessagesWithSearchQueryParam_emptyResponse() { final ListMessagesQueryParams queryParams = new ListMessagesQueryParams(); queryParams.setSearch("qqqqqqqq"); - final List messages = api.getMessages(accountId, inboxId, queryParams); + final List messages = api.getMessages(accountId, sandboxId, queryParams); assertNotNull(messages); assertTrue(messages.isEmpty()); @@ -130,7 +130,7 @@ void test_getMessagesWithSearchQueryParam_notEmptyResponse() { final ListMessagesQueryParams queryParams = new ListMessagesQueryParams(); queryParams.setSearch("mary"); - final List messages = api.getMessages(accountId, inboxId, queryParams); + final List messages = api.getMessages(accountId, sandboxId, queryParams); assertNotNull(messages); assertEquals(1, messages.size()); @@ -139,7 +139,7 @@ void test_getMessagesWithSearchQueryParam_notEmptyResponse() { @Test void test_forwardMessage() { - final ForwardMessageResponse forwardMessageResponse = api.forwardMessage(accountId, inboxId, messageId, new ForwardMessageRequest("jack@mailtrap.io")); + final ForwardMessageResponse forwardMessageResponse = api.forwardMessage(accountId, sandboxId, messageId, new ForwardMessageRequest("jack@mailtrap.io")); assertNotNull(forwardMessageResponse); assertEquals("Your email message has been successfully forwarded", forwardMessageResponse.getMessage()); @@ -147,7 +147,7 @@ void test_forwardMessage() { @Test void test_getSpamScore() { - final MessageSpamScoreResponse spamScore = api.getSpamScore(accountId, inboxId, messageId); + final MessageSpamScoreResponse spamScore = api.getSpamScore(accountId, sandboxId, messageId); assertNotNull(spamScore); assertEquals("Not spam", spamScore.getReport().getResponseMessage()); @@ -155,7 +155,7 @@ void test_getSpamScore() { @Test void test_getMessageHtmlAnalysis() { - final MessageHtmlAnalysisResponse htmlAnalysis = api.getMessageHtmlAnalysis(accountId, inboxId, messageId); + final MessageHtmlAnalysisResponse htmlAnalysis = api.getMessageHtmlAnalysis(accountId, sandboxId, messageId); assertNotNull(htmlAnalysis); assertEquals("success", htmlAnalysis.getReport().getStatus()); @@ -164,42 +164,42 @@ void test_getMessageHtmlAnalysis() { @Test void test_getTextMessage() { - final String textMessage = api.getTextMessage(accountId, inboxId, messageId); + final String textMessage = api.getTextMessage(accountId, sandboxId, messageId); assertNotNull(textMessage); } @Test void test_getRawMessage() { - final String rawMessage = api.getRawMessage(accountId, inboxId, messageId); + final String rawMessage = api.getRawMessage(accountId, sandboxId, messageId); assertNotNull(rawMessage); } @Test void test_getMessageSource() { - final String messageSource = api.getMessageSource(accountId, inboxId, messageId); + final String messageSource = api.getMessageSource(accountId, sandboxId, messageId); assertNotNull(messageSource); } @Test void test_getHtmlMessage() { - final String htmlMessage = api.getHtmlMessage(accountId, inboxId, messageId); + final String htmlMessage = api.getHtmlMessage(accountId, sandboxId, messageId); assertNotNull(htmlMessage); } @Test void test_getMessageAsEml() { - final String messageAsEml = api.getMessageAsEml(accountId, inboxId, messageId); + final String messageAsEml = api.getMessageAsEml(accountId, sandboxId, messageId); assertNotNull(messageAsEml); } @Test void test_getMailHeaders() { - final MessageHeadersResponse mailHeaders = api.getMailHeaders(accountId, inboxId, messageId); + final MessageHeadersResponse mailHeaders = api.getMailHeaders(accountId, sandboxId, messageId); assertNotNull(mailHeaders); assertEquals(5, mailHeaders.getHeaders().size()); diff --git a/src/test/java/io/mailtrap/api/permissions/PermissionsImplTest.java b/src/test/java/io/mailtrap/api/permissions/PermissionsImplTest.java index 8809124..f31f4c5 100644 --- a/src/test/java/io/mailtrap/api/permissions/PermissionsImplTest.java +++ b/src/test/java/io/mailtrap/api/permissions/PermissionsImplTest.java @@ -45,7 +45,7 @@ public void init() { void managePermissions() { final ManagePermissionsRequest request = new ManagePermissionsRequest(List.of( new Permission(String.valueOf(accountId), ResourceType.ACCOUNT, AccessLevel.VIEWER, false), - new Permission(String.valueOf(inboxId), ResourceType.INBOX, AccessLevel.ADMIN, true) + new Permission(String.valueOf(sandboxId), ResourceType.INBOX, AccessLevel.ADMIN, true) )); final ManagePermissionsResponse response = api.managePermissions(accountAccessId, accountId, request); diff --git a/src/test/java/io/mailtrap/api/projects/ProjectsImplTest.java b/src/test/java/io/mailtrap/api/projects/ProjectsImplTest.java index 7e71c50..6a0faf2 100644 --- a/src/test/java/io/mailtrap/api/projects/ProjectsImplTest.java +++ b/src/test/java/io/mailtrap/api/projects/ProjectsImplTest.java @@ -46,7 +46,7 @@ public void init() { .token("dummy_token") .build(); - api = MailtrapClientFactory.createMailtrapClient(testConfig).testingApi().projects(); + api = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().projects(); } @Test diff --git a/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java b/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java index de4004c..0de57c7 100644 --- a/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java +++ b/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java @@ -33,19 +33,19 @@ public void init() { "GET", null, "api/sending_domains/sendingDomainsResponse.json" ), DataMock.build( - Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + sendingDomainId, + Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + domainId, "GET", null, "api/sending_domains/sendingDomainResponse.json" ), DataMock.build( - Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + sendingDomainId, + Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + domainId, "PATCH", "api/sending_domains/updateSendingDomainRequest.json", "api/sending_domains/sendingDomainResponse.json" ), DataMock.build( - Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + sendingDomainId + "/send_setup_instructions", + Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + domainId + "/send_setup_instructions", "POST", "api/sending_domains/sendSetupInstructionsRequest.json", null ), DataMock.build( - Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + sendingDomainId, + Constants.GENERAL_HOST + "/api/accounts/" + accountId + "/sending_domains/" + domainId, "DELETE", null, null ) )); @@ -68,8 +68,8 @@ void test_create() { } @Test - void test_getSendingDomains() { - final List response = domains.getSendingDomains(accountId); + void test_getDomains() { + final List response = domains.getDomains(accountId); assertFalse(response.isEmpty()); assertEquals(1, response.size()); @@ -79,8 +79,8 @@ void test_getSendingDomains() { } @Test - void test_getSendingDomain() { - final SendingDomainsResponse response = domains.getSendingDomain(accountId, sendingDomainId); + void test_getDomain() { + final SendingDomainsResponse response = domains.getDomain(accountId, domainId); assertNotNull(response); assertEquals("test.io", response.getDomainName()); @@ -93,7 +93,7 @@ void test_getSendingDomain() { void test_update() { final SendingDomainsResponse response = domains.update( accountId, - sendingDomainId, + domainId, new UpdateSendingDomainRequest( UpdateSendingDomainRequest.SendingDomainData.builder() .openTrackingEnabled(true) @@ -111,12 +111,12 @@ void test_update() { } @Test - void test_sendSendingDomainsSetupInstructions() { - domains.sendSendingDomainsSetupInstructions(accountId, sendingDomainId, new SendingDomainsSetupInstructionsRequest("devops@test.io")); + void test_sendDomainsSetupInstructions() { + domains.sendDomainsSetupInstructions(accountId, domainId, new SendingDomainsSetupInstructionsRequest("devops@test.io")); } @Test - void test_deleteSendingDomain() { - assertDoesNotThrow(() -> domains.deleteSendingDomain(accountId, sendingDomainId)); + void test_deleteDomain() { + assertDoesNotThrow(() -> domains.deleteDomain(accountId, domainId)); } } diff --git a/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java b/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java index 369c0f4..aa82014 100644 --- a/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java +++ b/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java @@ -21,33 +21,33 @@ class TestingEmailsImplTest extends BaseSendTest { - private TestingEmails testingApi; + private TestingEmails sandboxApi; @BeforeEach public void init() { final TestHttpClient httpClient = new TestHttpClient(List.of( DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/send/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/send/" + SANDBOX_ID, "POST", "api/emails/sendRequest.json", "api/emails/sendResponse.json" ), DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/send/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/send/" + SANDBOX_ID, "POST", "api/emails/sendRequestFromTemplate.json", "api/emails/sendResponse.json" ), DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/batch/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", "api/emails/batchSendRequest.json", "api/emails/batchSendResponse.json" ), DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/batch/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", "api/emails/batchSendWithBaseSubjectRequest.json", "api/emails/batchSendResponse.json" ), DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/batch/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", "api/emails/batchSendWithBaseSubjectAndTextRequest.json", "api/emails/batchSendResponse.json" ), DataMock.build( - Constants.EMAIL_TESTING_SEND_HOST + "/api/batch/" + INBOX_ID, + Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", "api/emails/batchSendRequestFromTemplate.json", "api/emails/batchSendResponse.json" ) )); @@ -56,10 +56,10 @@ public void init() { .httpClient(httpClient) .token("dummy_token") .sandbox(true) - .inboxId(INBOX_ID) + .sandboxId(SANDBOX_ID) .build(); - testingApi = MailtrapClientFactory.createMailtrapClient(testConfig).testingApi().emails(); + sandboxApi = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().emails(); } @Test @@ -68,7 +68,7 @@ void send_InvalidMailEmptyFromEmail_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createInvalidTestMail(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(INVALID_REQUEST_EMPTY_BODY_FROM_EMAIL, exception.getMessage()); } @@ -78,7 +78,7 @@ void send_MailWithoutTemplateUuidAndTextAndHtml_ThrowsInvalidRequestBodyExceptio final MailtrapMail mail = createTestMailWithoutTemplateUuidAndSubjectAndTextAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(MAIL_MUST_HAVE_SUBJECT_AND_EITHER_TEXT_OR_HTML, exception.getMessage()); } @@ -88,7 +88,7 @@ void send_MailWithTemplateUuidAndText_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateUuidAndText(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } @@ -98,7 +98,7 @@ void send_MailWithTemplateUuidAndHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateUuidAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } @@ -108,7 +108,7 @@ void send_MailWithTemplateVariablesAndHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateVariablesAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_VARIABLES_SHOULD_BE_USED_WITH_TEMPLATE_UUID, exception.getMessage()); } @@ -118,14 +118,14 @@ void send_MailWithSubjectAndNoTextNoHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithSubjectAndNoTextAndNoHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(mail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); assertEquals(MAIL_MUST_HAVE_SUBJECT_AND_EITHER_TEXT_OR_HTML, exception.getMessage()); } @Test void send_NullableMail_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.send(null, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(null, SANDBOX_ID)); assertEquals(MAIL_MUST_NOT_BE_NULL, exception.getMessage()); } @@ -135,7 +135,7 @@ void send_ValidMail_SuccessResponse() { final var mail = createValidTestMail(); // Perform call - final SendResponse response = testingApi.send(mail, INBOX_ID); + final SendResponse response = sandboxApi.send(mail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -148,7 +148,7 @@ void send_ValidMailFromTemplate_SuccessResponse() { final var mail = createTestMailFromTemplate(); // Perform call - final SendResponse response = testingApi.send(mail, INBOX_ID); + final SendResponse response = sandboxApi.send(mail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -161,7 +161,7 @@ void batchSend_ValidMail_SuccessResponse() { final MailtrapBatchMail batchMail = MailtrapBatchMail.builder().requests(List.of(createValidTestMail())).build(); // Perform call - final BatchSendResponse response = testingApi.batchSend(batchMail, INBOX_ID); + final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -174,7 +174,7 @@ void batchSend_ValidMailFromTemplate_SuccessResponse() { final MailtrapBatchMail batchMail = MailtrapBatchMail.builder().requests(List.of(createTestMailFromTemplate())).build(); // Perform call - final BatchSendResponse response = testingApi.batchSend(batchMail, INBOX_ID); + final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -189,7 +189,7 @@ void batchSend_ValidMailWithSubjectFromBase_SuccessResponse() { .requests(List.of(createValidTestMailForBatchWithNoSubject())).build(); // Perform call - final BatchSendResponse response = testingApi.batchSend(batchMail, INBOX_ID); + final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -204,7 +204,7 @@ void batchSend_ValidMailWithSubjectAndTextFromBase_SuccessResponse() { .requests(List.of(createTestMailForBatchWithNoSubjectAndText())).build(); // Perform call - final BatchSendResponse response = testingApi.batchSend(batchMail, INBOX_ID); + final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -219,14 +219,14 @@ void batchSend_InvalidMailWithNoSubjectAndTextNoBase_ThrowsInvalidRequestBodyExc .requests(List.of(createTestMailForBatchWithNoSubjectAndText())).build(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.batchSend(batchMail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(batchMail, SANDBOX_ID)); assertEquals(SUBJECT_MUST_NOT_BE_NULL, exception.getMessage()); } @Test void batchSend_NullableMail_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.batchSend(null, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(null, SANDBOX_ID)); assertEquals(BATCH_MAIL_MUST_NOT_BE_NULL, exception.getMessage()); } @@ -237,7 +237,7 @@ void batchSend_MailWithTemplateUuidAndText_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> testingApi.batchSend(batchMail, INBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(batchMail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } diff --git a/src/test/java/io/mailtrap/client/MailtrapClientTest.java b/src/test/java/io/mailtrap/client/MailtrapClientTest.java index 902d14a..ed32f04 100644 --- a/src/test/java/io/mailtrap/client/MailtrapClientTest.java +++ b/src/test/java/io/mailtrap/client/MailtrapClientTest.java @@ -26,7 +26,7 @@ class MailtrapClientTest extends BaseSendTest { @BeforeEach void setUp() { final TestHttpClient httpClient = new TestHttpClient(List.of( - DataMock.build(Constants.EMAIL_TESTING_SEND_HOST + "/api/send/" + INBOX_ID, "POST", + DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/send/" + SANDBOX_ID, "POST", "api/emails/sendRequest.json", "api/emails/sendResponse.json"), DataMock.build(Constants.BULK_SENDING_HOST + "/api/send", "POST", @@ -35,7 +35,7 @@ void setUp() { DataMock.build(Constants.EMAIL_SENDING_SEND_HOST + "/api/send", "POST", "api/emails/sendRequest.json", "api/emails/sendResponse.json"), - DataMock.build(Constants.EMAIL_TESTING_SEND_HOST + "/api/batch/" + INBOX_ID, "POST", + DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", "api/emails/batchSendRequest.json", "api/emails/batchSendResponse.json"), DataMock.build(Constants.BULK_SENDING_HOST + "/api/batch", "POST", @@ -72,7 +72,7 @@ void test_sendSandbox_success() { // Set up test data final MailtrapMail mailtrapMail = createValidTestMail(); - mailtrapClient.switchToEmailTestingApi(INBOX_ID); + mailtrapClient.switchToEmailSandboxApi(SANDBOX_ID); // Call final SendResponse response = mailtrapClient.send(mailtrapMail); @@ -113,7 +113,7 @@ void test_batchSendSandbox_success() { // Set up test data final MailtrapBatchMail batchMail = MailtrapBatchMail.builder().requests(List.of(createValidTestMail())).build(); - mailtrapClient.switchToEmailTestingApi(INBOX_ID); + mailtrapClient.switchToEmailSandboxApi(SANDBOX_ID); // Call final BatchSendResponse response = mailtrapClient.batchSend(batchMail); @@ -149,15 +149,15 @@ void test_bulkAndSandboxTrue_ThrowsBaseMailtrapException() { } @Test - void test_sandboxTrueAndInboxIdIsNull_ThrowsBaseMailtrapException() { + void test_sandboxTrueAndSandboxIdIsNull_ThrowsBaseMailtrapException() { // Set up test data and call final BaseMailtrapException exception = assertThrows(BaseMailtrapException.class, () -> new MailtrapConfig.Builder() .sandbox(true) - .inboxId(null) + .sandboxId(null) .build()); // Assert - assertEquals(INBOX_ID_REQUIRED, exception.getMessage()); + assertEquals(SANDBOX_ID_REQUIRED, exception.getMessage()); } } diff --git a/src/test/java/io/mailtrap/testutils/BaseSendTest.java b/src/test/java/io/mailtrap/testutils/BaseSendTest.java index daf1f49..0e224bd 100644 --- a/src/test/java/io/mailtrap/testutils/BaseSendTest.java +++ b/src/test/java/io/mailtrap/testutils/BaseSendTest.java @@ -10,9 +10,9 @@ public class BaseSendTest { - protected final long INBOX_ID = 4308; - protected final String BULK_AND_SANDBOX_TRUE_IN_SENDING_CONFIG = "Bulk mode is not applicable for Testing API"; - protected final String INBOX_ID_REQUIRED = "Testing API requires inbox ID"; + protected final long SANDBOX_ID = 4308; + protected final String BULK_AND_SANDBOX_TRUE_IN_SENDING_CONFIG = "Bulk mode is not applicable for Sandbox API"; + protected final String SANDBOX_ID_REQUIRED = "Sandbox API requires sandbox ID"; protected final String INVALID_REQUEST_EMPTY_BODY_FROM_EMAIL = "Invalid request body. Violations: from.email=must not be empty"; protected final String TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY = "When templateUuid is used, subject, text, and html must not be used"; protected final String TEMPLATE_VARIABLES_SHOULD_BE_USED_WITH_TEMPLATE_UUID = "Mail templateVariables must only be used with templateUuid"; diff --git a/src/test/java/io/mailtrap/testutils/BaseTest.java b/src/test/java/io/mailtrap/testutils/BaseTest.java index d53222e..a52d701 100644 --- a/src/test/java/io/mailtrap/testutils/BaseTest.java +++ b/src/test/java/io/mailtrap/testutils/BaseTest.java @@ -6,13 +6,13 @@ public class BaseTest { protected final Long accountId = 1L; protected final Long anotherAccountId = 2L; - protected final Long inboxId = 2L; + protected final Long sandboxId = 2L; protected final Long projectId = 2L; protected final Long anotherProjectId = 2L; protected final Long messageId = 3L; protected final Long attachmentId = 4L; protected final Long accountAccessId = 5L; - protected final Long sendingDomainId = 6L; + protected final Long domainId = 6L; protected final String email = "email@mailtrap.io"; protected final String emailEncoded = URLEncoder.encode(email, StandardCharsets.UTF_8); protected final String contactUUID = "018dd5e3-f6d2-7c00-8f9b-e5c3f2d8a132"; From 0e6ede921aa5a3d0d2a7621210dec29d9dcf2763 Mon Sep 17 00:00:00 2001 From: Maciej Walusiak Date: Tue, 3 Nov 2026 11:04:34 +0100 Subject: [PATCH 2/3] Simplify the deprecated-name tests and rename leftover inbox variables The alias test for switchToEmailTestingApi now checks the delegation instead of repeating MailtrapClientTest's sandbox send, so the class needs no HTTP mocks and takes its IDs from BaseTest. assertSame on exact-argument stubs already proves delegation, so the extra verify calls are gone, and test labels are derived from the reflected members. Co-Authored-By: Claude Opus 5.5 --- .../java/io/mailtrap/DeprecatedNamesTest.java | 134 ++++++++---------- .../mailtrap/api/inboxes/InboxesImplTest.java | 62 ++++---- .../testingemails/TestingEmailsImplTest.java | 36 ++--- 3 files changed, 111 insertions(+), 121 deletions(-) diff --git a/src/test/java/io/mailtrap/DeprecatedNamesTest.java b/src/test/java/io/mailtrap/DeprecatedNamesTest.java index 6eb2faf..c228ef6 100644 --- a/src/test/java/io/mailtrap/DeprecatedNamesTest.java +++ b/src/test/java/io/mailtrap/DeprecatedNamesTest.java @@ -6,14 +6,12 @@ import io.mailtrap.client.api.MailtrapEmailTestingApi; import io.mailtrap.config.MailtrapConfig; import io.mailtrap.factory.MailtrapClientFactory; -import io.mailtrap.model.request.emails.MailtrapBatchMail; import io.mailtrap.model.request.inboxes.CreateInboxRequest; import io.mailtrap.model.request.inboxes.UpdateInboxRequest; import io.mailtrap.model.request.sendingdomains.SendingDomainsSetupInstructionsRequest; import io.mailtrap.model.response.inboxes.InboxResponse; import io.mailtrap.model.response.sendingdomains.SendingDomainsResponse; -import io.mailtrap.testutils.BaseSendTest; -import io.mailtrap.testutils.DataMock; +import io.mailtrap.testutils.BaseTest; import io.mailtrap.testutils.TestHttpClient; import io.mailtrap.util.SendingContextHolder; import org.junit.jupiter.api.BeforeEach; @@ -34,26 +32,16 @@ * Sandbox and Domain replacements, and are marked {@link Deprecated}. */ @SuppressWarnings("deprecation") -class DeprecatedNamesTest extends BaseSendTest { +class DeprecatedNamesTest extends BaseTest { - private static final long ACCOUNT_ID = 1L; - private static final long PROJECT_ID = 2L; - private static final long DOMAIN_ID = 6L; private static final String DEPRECATED_SINCE = "1.11.0"; private MailtrapClient client; @BeforeEach void init() { - final TestHttpClient httpClient = new TestHttpClient(List.of( - DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/send/" + SANDBOX_ID, "POST", - "api/emails/sendRequest.json", "api/emails/sendResponse.json"), - DataMock.build(Constants.EMAIL_SANDBOX_SEND_HOST + "/api/batch/" + SANDBOX_ID, "POST", - "api/emails/batchSendRequest.json", "api/emails/batchSendResponse.json") - )); - client = MailtrapClientFactory.createMailtrapClient(new MailtrapConfig.Builder() - .httpClient(httpClient) + .httpClient(new TestHttpClient(List.of())) .token("dummy_token") .build()); } @@ -69,30 +57,30 @@ void inboxes_returnsSandboxes() { } @Test - void switchToEmailTestingApi_sendsToSandbox() { - client.switchToEmailTestingApi(SANDBOX_ID); + void switchToEmailTestingApi_switchesToSandboxApi() { + final MailtrapClient spiedClient = spy(client); + + spiedClient.switchToEmailTestingApi(sandboxId); - assertEquals("11111", client.send(createValidTestMail()).getMessageIds().get(0)); - assertEquals("22222", client.batchSend(MailtrapBatchMail.builder().requests(List.of(createValidTestMail())).build()) - .getResponses().get(0).getMessageIds().get(0)); + verify(spiedClient).switchToEmailSandboxApi(sandboxId); } @Test void configInboxId_setsSandboxId() { final MailtrapConfig config = new MailtrapConfig.Builder() .sandbox(true) - .inboxId(SANDBOX_ID) + .inboxId(sandboxId) .build(); - assertEquals(SANDBOX_ID, config.getSandboxId()); - assertEquals(SANDBOX_ID, config.getInboxId()); + assertEquals(sandboxId, config.getSandboxId()); + assertEquals(sandboxId, config.getInboxId()); } @Test void sendingContextHolderInboxId_isSandboxId() { - final SendingContextHolder holder = SendingContextHolder.builder().inboxId(SANDBOX_ID).build(); - assertEquals(SANDBOX_ID, holder.getSandboxId()); - assertEquals(SANDBOX_ID, holder.getInboxId()); + final SendingContextHolder holder = SendingContextHolder.builder().inboxId(sandboxId).build(); + assertEquals(sandboxId, holder.getSandboxId()); + assertEquals(sandboxId, holder.getInboxId()); holder.setInboxId(5L); assertEquals(5L, holder.getSandboxId()); @@ -103,6 +91,8 @@ void emailTestingSendHost_isSandboxSendHost() { assertEquals(Constants.EMAIL_SANDBOX_SEND_HOST, Constants.EMAIL_TESTING_SEND_HOST); } + // Each new method is stubbed with the exact arguments, and the mock answers anything else + // with a default value, so assertSame alone shows the old method delegated to the new one. @Test void inboxMethods_delegateToSandboxMethods() { final Inboxes sandboxes = mock(Inboxes.class, CALLS_REAL_METHODS); @@ -112,28 +102,23 @@ void inboxMethods_delegateToSandboxMethods() { final InboxResponse response = new InboxResponse(); final List responses = List.of(response); - doReturn(response).when(sandboxes).createSandbox(ACCOUNT_ID, PROJECT_ID, createRequest); - assertSame(response, sandboxes.createInbox(ACCOUNT_ID, PROJECT_ID, createRequest)); - verify(sandboxes).createSandbox(ACCOUNT_ID, PROJECT_ID, createRequest); + doReturn(response).when(sandboxes).createSandbox(accountId, projectId, createRequest); + assertSame(response, sandboxes.createInbox(accountId, projectId, createRequest)); - doReturn(response).when(sandboxes).getSandboxAttributes(ACCOUNT_ID, SANDBOX_ID); - assertSame(response, sandboxes.getInboxAttributes(ACCOUNT_ID, SANDBOX_ID)); - verify(sandboxes).getSandboxAttributes(ACCOUNT_ID, SANDBOX_ID); + doReturn(response).when(sandboxes).getSandboxAttributes(accountId, sandboxId); + assertSame(response, sandboxes.getInboxAttributes(accountId, sandboxId)); - doReturn(response).when(sandboxes).deleteSandbox(ACCOUNT_ID, SANDBOX_ID); - assertSame(response, sandboxes.deleteInbox(ACCOUNT_ID, SANDBOX_ID)); - verify(sandboxes).deleteSandbox(ACCOUNT_ID, SANDBOX_ID); + doReturn(response).when(sandboxes).deleteSandbox(accountId, sandboxId); + assertSame(response, sandboxes.deleteInbox(accountId, sandboxId)); - doReturn(response).when(sandboxes).updateSandbox(ACCOUNT_ID, SANDBOX_ID, updateRequest); - assertSame(response, sandboxes.updateInbox(ACCOUNT_ID, SANDBOX_ID, updateRequest)); - verify(sandboxes).updateSandbox(ACCOUNT_ID, SANDBOX_ID, updateRequest); + doReturn(response).when(sandboxes).updateSandbox(accountId, sandboxId, updateRequest); + assertSame(response, sandboxes.updateInbox(accountId, sandboxId, updateRequest)); - doReturn(response).when(sandboxes).cleanSandbox(ACCOUNT_ID, SANDBOX_ID); - assertSame(response, sandboxes.cleanInbox(ACCOUNT_ID, SANDBOX_ID)); - verify(sandboxes).cleanSandbox(ACCOUNT_ID, SANDBOX_ID); + doReturn(response).when(sandboxes).cleanSandbox(accountId, sandboxId); + assertSame(response, sandboxes.cleanInbox(accountId, sandboxId)); - doReturn(responses).when(sandboxes).getSandboxes(ACCOUNT_ID); - assertSame(responses, sandboxes.getInboxes(ACCOUNT_ID)); + doReturn(responses).when(sandboxes).getSandboxes(accountId); + assertSame(responses, sandboxes.getInboxes(accountId)); } @Test @@ -143,18 +128,17 @@ void sendingDomainMethods_delegateToDomainMethods() { final List responses = List.of(response); final SendingDomainsSetupInstructionsRequest instructionsRequest = new SendingDomainsSetupInstructionsRequest("devops@test.io"); - doReturn(responses).when(domains).getDomains(ACCOUNT_ID); - assertSame(responses, domains.getSendingDomains(ACCOUNT_ID)); + doReturn(responses).when(domains).getDomains(accountId); + assertSame(responses, domains.getSendingDomains(accountId)); - doReturn(response).when(domains).getDomain(ACCOUNT_ID, DOMAIN_ID); - assertSame(response, domains.getSendingDomain(ACCOUNT_ID, DOMAIN_ID)); - verify(domains).getDomain(ACCOUNT_ID, DOMAIN_ID); + doReturn(response).when(domains).getDomain(accountId, domainId); + assertSame(response, domains.getSendingDomain(accountId, domainId)); - domains.sendSendingDomainsSetupInstructions(ACCOUNT_ID, DOMAIN_ID, instructionsRequest); - verify(domains).sendDomainsSetupInstructions(ACCOUNT_ID, DOMAIN_ID, instructionsRequest); + domains.sendSendingDomainsSetupInstructions(accountId, domainId, instructionsRequest); + verify(domains).sendDomainsSetupInstructions(accountId, domainId, instructionsRequest); - domains.deleteSendingDomain(ACCOUNT_ID, DOMAIN_ID); - verify(domains).deleteDomain(ACCOUNT_ID, DOMAIN_ID); + domains.deleteSendingDomain(accountId, domainId); + verify(domains).deleteDomain(accountId, domainId); } @ParameterizedTest(name = "{0}") @@ -168,27 +152,33 @@ void oldNames_areMarkedDeprecated(final String name, final AnnotatedElement memb static Stream deprecatedMembers() throws ReflectiveOperationException { return Stream.of( - Arguments.of("MailtrapClient#testingApi", MailtrapClient.class.getMethod("testingApi")), - Arguments.of("MailtrapClient#switchToEmailTestingApi", MailtrapClient.class.getMethod("switchToEmailTestingApi", Long.class)), - Arguments.of("MailtrapConfig#getInboxId", MailtrapConfig.class.getMethod("getInboxId")), - Arguments.of("MailtrapConfig.Builder#inboxId", MailtrapConfig.Builder.class.getMethod("inboxId", Long.class)), - Arguments.of("SendingContextHolder#getInboxId", SendingContextHolder.class.getMethod("getInboxId")), - Arguments.of("SendingContextHolder#setInboxId", SendingContextHolder.class.getMethod("setInboxId", Long.class)), - Arguments.of("SendingContextHolderBuilder#inboxId", - SendingContextHolder.SendingContextHolderBuilder.class.getMethod("inboxId", Long.class)), + deprecatedMethod(MailtrapClient.class, "testingApi"), + deprecatedMethod(MailtrapClient.class, "switchToEmailTestingApi", Long.class), + deprecatedMethod(MailtrapConfig.class, "getInboxId"), + deprecatedMethod(MailtrapConfig.Builder.class, "inboxId", Long.class), + deprecatedMethod(SendingContextHolder.class, "getInboxId"), + deprecatedMethod(SendingContextHolder.class, "setInboxId", Long.class), + deprecatedMethod(SendingContextHolder.SendingContextHolderBuilder.class, "inboxId", Long.class), Arguments.of("Constants#EMAIL_TESTING_SEND_HOST", Constants.class.getField("EMAIL_TESTING_SEND_HOST")), - Arguments.of("MailtrapEmailTestingApi#inboxes", MailtrapEmailTestingApi.class.getMethod("inboxes")), - Arguments.of("Inboxes#createInbox", Inboxes.class.getMethod("createInbox", long.class, long.class, CreateInboxRequest.class)), - Arguments.of("Inboxes#getInboxAttributes", Inboxes.class.getMethod("getInboxAttributes", long.class, long.class)), - Arguments.of("Inboxes#deleteInbox", Inboxes.class.getMethod("deleteInbox", long.class, long.class)), - Arguments.of("Inboxes#updateInbox", Inboxes.class.getMethod("updateInbox", long.class, long.class, UpdateInboxRequest.class)), - Arguments.of("Inboxes#cleanInbox", Inboxes.class.getMethod("cleanInbox", long.class, long.class)), - Arguments.of("Inboxes#getInboxes", Inboxes.class.getMethod("getInboxes", long.class)), - Arguments.of("SendingDomains#getSendingDomains", SendingDomains.class.getMethod("getSendingDomains", long.class)), - Arguments.of("SendingDomains#getSendingDomain", SendingDomains.class.getMethod("getSendingDomain", long.class, long.class)), - Arguments.of("SendingDomains#sendSendingDomainsSetupInstructions", SendingDomains.class.getMethod( - "sendSendingDomainsSetupInstructions", long.class, long.class, SendingDomainsSetupInstructionsRequest.class)), - Arguments.of("SendingDomains#deleteSendingDomain", SendingDomains.class.getMethod("deleteSendingDomain", long.class, long.class)) + deprecatedMethod(MailtrapEmailTestingApi.class, "inboxes"), + deprecatedMethod(Inboxes.class, "createInbox", long.class, long.class, CreateInboxRequest.class), + deprecatedMethod(Inboxes.class, "getInboxAttributes", long.class, long.class), + deprecatedMethod(Inboxes.class, "deleteInbox", long.class, long.class), + deprecatedMethod(Inboxes.class, "updateInbox", long.class, long.class, UpdateInboxRequest.class), + deprecatedMethod(Inboxes.class, "cleanInbox", long.class, long.class), + deprecatedMethod(Inboxes.class, "getInboxes", long.class), + deprecatedMethod(SendingDomains.class, "getSendingDomains", long.class), + deprecatedMethod(SendingDomains.class, "getSendingDomain", long.class, long.class), + deprecatedMethod(SendingDomains.class, "sendSendingDomainsSetupInstructions", + long.class, long.class, SendingDomainsSetupInstructionsRequest.class), + deprecatedMethod(SendingDomains.class, "deleteSendingDomain", long.class, long.class) ); } + + private static Arguments deprecatedMethod(final Class type, final String name, final Class... parameterTypes) + throws NoSuchMethodException { + final String typeName = type.getCanonicalName().substring(type.getPackageName().length() + 1); + + return Arguments.of(typeName + "#" + name, type.getMethod(name, parameterTypes)); + } } diff --git a/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java b/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java index 51aa419..227d595 100644 --- a/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java +++ b/src/test/java/io/mailtrap/api/inboxes/InboxesImplTest.java @@ -66,52 +66,52 @@ public void init() { @Test void test_createSandbox() { - final InboxResponse createdInbox = api.createSandbox(accountId, projectId, new CreateInboxRequest(new InboxCreateData("Test inbox"))); + final InboxResponse createdSandbox = api.createSandbox(accountId, projectId, new CreateInboxRequest(new InboxCreateData("Test inbox"))); - assertNotNull(createdInbox); - assertEquals(createdInbox.getProjectId(), projectId); - assertEquals("Test inbox", createdInbox.getName()); + assertNotNull(createdSandbox); + assertEquals(createdSandbox.getProjectId(), projectId); + assertEquals("Test inbox", createdSandbox.getName()); } @Test void test_getSandboxAttributes() { - final InboxResponse inboxAttributes = api.getSandboxAttributes(accountId, sandboxId); + final InboxResponse sandboxAttributes = api.getSandboxAttributes(accountId, sandboxId); - assertNotNull(inboxAttributes); - assertTrue(inboxAttributes.getPermission().isCanRead()); - assertEquals(inboxAttributes.getProjectId(), projectId); - assertEquals("Test inbox", inboxAttributes.getName()); + assertNotNull(sandboxAttributes); + assertTrue(sandboxAttributes.getPermission().isCanRead()); + assertEquals(sandboxAttributes.getProjectId(), projectId); + assertEquals("Test inbox", sandboxAttributes.getName()); } @Test void test_deleteSandbox() { - final InboxResponse deletedInbox = api.deleteSandbox(accountId, sandboxId); + final InboxResponse deletedSandbox = api.deleteSandbox(accountId, sandboxId); - assertNotNull(deletedInbox); - assertTrue(deletedInbox.getPermission().isCanRead()); - assertEquals(deletedInbox.getId(), sandboxId); - assertEquals("Test inbox", deletedInbox.getName()); + assertNotNull(deletedSandbox); + assertTrue(deletedSandbox.getPermission().isCanRead()); + assertEquals(deletedSandbox.getId(), sandboxId); + assertEquals("Test inbox", deletedSandbox.getName()); } @Test void test_updateSandbox() { - final InboxResponse updatedInbox = api.updateSandbox(accountId, sandboxId, new UpdateInboxRequest(new InboxUpdateData("Updated Inbox Name", "updated-email-username"))); + final InboxResponse updatedSandbox = api.updateSandbox(accountId, sandboxId, new UpdateInboxRequest(new InboxUpdateData("Updated Inbox Name", "updated-email-username"))); - assertNotNull(updatedInbox); - assertTrue(updatedInbox.getPermission().isCanRead()); - assertEquals(updatedInbox.getId(), sandboxId); - assertEquals("Updated Inbox Name", updatedInbox.getName()); - assertEquals("updated-email-username", updatedInbox.getEmailUsername()); + assertNotNull(updatedSandbox); + assertTrue(updatedSandbox.getPermission().isCanRead()); + assertEquals(updatedSandbox.getId(), sandboxId); + assertEquals("Updated Inbox Name", updatedSandbox.getName()); + assertEquals("updated-email-username", updatedSandbox.getEmailUsername()); } @Test void test_cleanSandbox() { - final InboxResponse cleanedInbox = api.cleanSandbox(accountId, sandboxId); + final InboxResponse cleanedSandbox = api.cleanSandbox(accountId, sandboxId); - assertNotNull(cleanedInbox); - assertTrue(cleanedInbox.getPermission().isCanRead()); - assertEquals(cleanedInbox.getId(), sandboxId); - assertEquals("Test inbox", cleanedInbox.getName()); + assertNotNull(cleanedSandbox); + assertTrue(cleanedSandbox.getPermission().isCanRead()); + assertEquals(cleanedSandbox.getId(), sandboxId); + assertEquals("Test inbox", cleanedSandbox.getName()); } @Test @@ -156,13 +156,13 @@ void test_resetEmailAddresses() { @Test void test_getSandboxes() { - final List inboxes = api.getSandboxes(accountId); + final List sandboxes = api.getSandboxes(accountId); - assertNotNull(inboxes); - assertEquals(1, inboxes.size()); - assertTrue(inboxes.get(0).getPermission().isCanRead()); - assertEquals(inboxes.get(0).getId(), sandboxId); - assertEquals("Test inbox", inboxes.get(0).getName()); + assertNotNull(sandboxes); + assertEquals(1, sandboxes.size()); + assertTrue(sandboxes.get(0).getPermission().isCanRead()); + assertEquals(sandboxes.get(0).getId(), sandboxId); + assertEquals("Test inbox", sandboxes.get(0).getName()); } } diff --git a/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java b/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java index aa82014..de67340 100644 --- a/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java +++ b/src/test/java/io/mailtrap/api/testingemails/TestingEmailsImplTest.java @@ -21,7 +21,7 @@ class TestingEmailsImplTest extends BaseSendTest { - private TestingEmails sandboxApi; + private TestingEmails api; @BeforeEach public void init() { @@ -59,7 +59,7 @@ public void init() { .sandboxId(SANDBOX_ID) .build(); - sandboxApi = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().emails(); + api = MailtrapClientFactory.createMailtrapClient(testConfig).sandboxApi().emails(); } @Test @@ -68,7 +68,7 @@ void send_InvalidMailEmptyFromEmail_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createInvalidTestMail(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(INVALID_REQUEST_EMPTY_BODY_FROM_EMAIL, exception.getMessage()); } @@ -78,7 +78,7 @@ void send_MailWithoutTemplateUuidAndTextAndHtml_ThrowsInvalidRequestBodyExceptio final MailtrapMail mail = createTestMailWithoutTemplateUuidAndSubjectAndTextAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(MAIL_MUST_HAVE_SUBJECT_AND_EITHER_TEXT_OR_HTML, exception.getMessage()); } @@ -88,7 +88,7 @@ void send_MailWithTemplateUuidAndText_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateUuidAndText(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } @@ -98,7 +98,7 @@ void send_MailWithTemplateUuidAndHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateUuidAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } @@ -108,7 +108,7 @@ void send_MailWithTemplateVariablesAndHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithTemplateVariablesAndHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(TEMPLATE_VARIABLES_SHOULD_BE_USED_WITH_TEMPLATE_UUID, exception.getMessage()); } @@ -118,14 +118,14 @@ void send_MailWithSubjectAndNoTextNoHtml_ThrowsInvalidRequestBodyException() { final MailtrapMail mail = createTestMailWithSubjectAndNoTextAndNoHtml(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(mail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(mail, SANDBOX_ID)); assertEquals(MAIL_MUST_HAVE_SUBJECT_AND_EITHER_TEXT_OR_HTML, exception.getMessage()); } @Test void send_NullableMail_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.send(null, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.send(null, SANDBOX_ID)); assertEquals(MAIL_MUST_NOT_BE_NULL, exception.getMessage()); } @@ -135,7 +135,7 @@ void send_ValidMail_SuccessResponse() { final var mail = createValidTestMail(); // Perform call - final SendResponse response = sandboxApi.send(mail, SANDBOX_ID); + final SendResponse response = api.send(mail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -148,7 +148,7 @@ void send_ValidMailFromTemplate_SuccessResponse() { final var mail = createTestMailFromTemplate(); // Perform call - final SendResponse response = sandboxApi.send(mail, SANDBOX_ID); + final SendResponse response = api.send(mail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -161,7 +161,7 @@ void batchSend_ValidMail_SuccessResponse() { final MailtrapBatchMail batchMail = MailtrapBatchMail.builder().requests(List.of(createValidTestMail())).build(); // Perform call - final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); + final BatchSendResponse response = api.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -174,7 +174,7 @@ void batchSend_ValidMailFromTemplate_SuccessResponse() { final MailtrapBatchMail batchMail = MailtrapBatchMail.builder().requests(List.of(createTestMailFromTemplate())).build(); // Perform call - final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); + final BatchSendResponse response = api.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -189,7 +189,7 @@ void batchSend_ValidMailWithSubjectFromBase_SuccessResponse() { .requests(List.of(createValidTestMailForBatchWithNoSubject())).build(); // Perform call - final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); + final BatchSendResponse response = api.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -204,7 +204,7 @@ void batchSend_ValidMailWithSubjectAndTextFromBase_SuccessResponse() { .requests(List.of(createTestMailForBatchWithNoSubjectAndText())).build(); // Perform call - final BatchSendResponse response = sandboxApi.batchSend(batchMail, SANDBOX_ID); + final BatchSendResponse response = api.batchSend(batchMail, SANDBOX_ID); // Assert assertTrue(response.isSuccess()); @@ -219,14 +219,14 @@ void batchSend_InvalidMailWithNoSubjectAndTextNoBase_ThrowsInvalidRequestBodyExc .requests(List.of(createTestMailForBatchWithNoSubjectAndText())).build(); // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(batchMail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.batchSend(batchMail, SANDBOX_ID)); assertEquals(SUBJECT_MUST_NOT_BE_NULL, exception.getMessage()); } @Test void batchSend_NullableMail_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(null, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.batchSend(null, SANDBOX_ID)); assertEquals(BATCH_MAIL_MUST_NOT_BE_NULL, exception.getMessage()); } @@ -237,7 +237,7 @@ void batchSend_MailWithTemplateUuidAndText_ThrowsInvalidRequestBodyException() { // Assert - final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> sandboxApi.batchSend(batchMail, SANDBOX_ID)); + final InvalidRequestBodyException exception = assertThrows(InvalidRequestBodyException.class, () -> api.batchSend(batchMail, SANDBOX_ID)); assertEquals(TEMPLATE_UUID_IS_USED_SUBJECT_AND_TEXT_AND_HTML_SHOULD_BE_EMPTY, exception.getMessage()); } From a5cff059651e5ed50085f55fca8ed2bf55bdae70 Mon Sep 17 00:00:00 2001 From: Maciej Walusiak Date: Thu, 5 Nov 2026 10:59:47 +0100 Subject: [PATCH 3/3] Use the singular sendDomainSetupInstructions name Decisions: - Match the OpenAPI operationId sendDomainSetupInstructions and the PHP SDK; the method acts on one domain - The plural name was never released, so it is renamed without a deprecated alias of its own Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- .../java/io/mailtrap/examples/domains/DomainsExample.java | 2 +- .../java/io/mailtrap/api/sendingdomains/SendingDomains.java | 6 +++--- .../io/mailtrap/api/sendingdomains/SendingDomainsImpl.java | 2 +- src/test/java/io/mailtrap/DeprecatedNamesTest.java | 2 +- .../mailtrap/api/sendingdomains/SendingDomainsImplTest.java | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e3d00e2..e8df420 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ and `SendingDomainsResponse` keep their names until that release. | `getInboxes(accountId)` | `getSandboxes(accountId)` | | `sendingApi().domains().getSendingDomains(accountId)` | `sendingApi().domains().getDomains(accountId)` | | `getSendingDomain(accountId, sendingDomainId)` | `getDomain(accountId, domainId)` | -| `sendSendingDomainsSetupInstructions(accountId, sendingDomainId, request)` | `sendDomainsSetupInstructions(accountId, domainId, request)` | +| `sendSendingDomainsSetupInstructions(accountId, sendingDomainId, request)` | `sendDomainSetupInstructions(accountId, domainId, request)` | | `deleteSendingDomain(accountId, sendingDomainId)` | `deleteDomain(accountId, domainId)` | ## Contributing diff --git a/examples/java/io/mailtrap/examples/domains/DomainsExample.java b/examples/java/io/mailtrap/examples/domains/DomainsExample.java index 5c840ae..3e8f1b9 100644 --- a/examples/java/io/mailtrap/examples/domains/DomainsExample.java +++ b/examples/java/io/mailtrap/examples/domains/DomainsExample.java @@ -46,7 +46,7 @@ public static void main(String[] args) { System.out.println(updatedDomain); final var sendInstructionsRequest = new SendingDomainsSetupInstructionsRequest(DEVOPS_EMAIL); - client.sendingApi().domains().sendDomainsSetupInstructions(ACCOUNT_ID, createdDomain.getId(), sendInstructionsRequest); + client.sendingApi().domains().sendDomainSetupInstructions(ACCOUNT_ID, createdDomain.getId(), sendInstructionsRequest); client.sendingApi().domains().deleteDomain(ACCOUNT_ID, createdDomain.getId()); } diff --git a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java index ade5394..9f51e65 100644 --- a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java +++ b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java @@ -55,7 +55,7 @@ public interface SendingDomains { * @param domainId unique domain ID * @param request request data */ - void sendDomainsSetupInstructions(long accountId, long domainId, SendingDomainsSetupInstructionsRequest request); + void sendDomainSetupInstructions(long accountId, long domainId, SendingDomainsSetupInstructionsRequest request); /** * Delete a domain @@ -82,12 +82,12 @@ default SendingDomainsResponse getSendingDomain(final long accountId, final long } /** - * @deprecated Use {@link #sendDomainsSetupInstructions(long, long, SendingDomainsSetupInstructionsRequest)} instead. + * @deprecated Use {@link #sendDomainSetupInstructions(long, long, SendingDomainsSetupInstructionsRequest)} instead. * Will be removed in a future major release. */ @Deprecated(since = "1.11.0") default void sendSendingDomainsSetupInstructions(final long accountId, final long sendingDomainId, final SendingDomainsSetupInstructionsRequest request) { - sendDomainsSetupInstructions(accountId, sendingDomainId, request); + sendDomainSetupInstructions(accountId, sendingDomainId, request); } /** diff --git a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java index 472d8b3..ff21712 100644 --- a/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java +++ b/src/main/java/io/mailtrap/api/sendingdomains/SendingDomainsImpl.java @@ -57,7 +57,7 @@ public SendingDomainsResponse update(final long accountId, final long domainId, } @Override - public void sendDomainsSetupInstructions(final long accountId, final long domainId, final SendingDomainsSetupInstructionsRequest request) { + public void sendDomainSetupInstructions(final long accountId, final long domainId, final SendingDomainsSetupInstructionsRequest request) { httpClient.post( String.format(apiHost + "/api/accounts/%d/sending_domains/%d/send_setup_instructions", accountId, domainId), request, diff --git a/src/test/java/io/mailtrap/DeprecatedNamesTest.java b/src/test/java/io/mailtrap/DeprecatedNamesTest.java index c228ef6..c5e1b1c 100644 --- a/src/test/java/io/mailtrap/DeprecatedNamesTest.java +++ b/src/test/java/io/mailtrap/DeprecatedNamesTest.java @@ -135,7 +135,7 @@ void sendingDomainMethods_delegateToDomainMethods() { assertSame(response, domains.getSendingDomain(accountId, domainId)); domains.sendSendingDomainsSetupInstructions(accountId, domainId, instructionsRequest); - verify(domains).sendDomainsSetupInstructions(accountId, domainId, instructionsRequest); + verify(domains).sendDomainSetupInstructions(accountId, domainId, instructionsRequest); domains.deleteSendingDomain(accountId, domainId); verify(domains).deleteDomain(accountId, domainId); diff --git a/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java b/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java index 0de57c7..7c824de 100644 --- a/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java +++ b/src/test/java/io/mailtrap/api/sendingdomains/SendingDomainsImplTest.java @@ -111,8 +111,8 @@ void test_update() { } @Test - void test_sendDomainsSetupInstructions() { - domains.sendDomainsSetupInstructions(accountId, domainId, new SendingDomainsSetupInstructionsRequest("devops@test.io")); + void test_sendDomainSetupInstructions() { + domains.sendDomainSetupInstructions(accountId, domainId, new SendingDomainsSetupInstructionsRequest("devops@test.io")); } @Test