diff --git a/pom.xml b/pom.xml index e8cb351..77bcdf2 100644 --- a/pom.xml +++ b/pom.xml @@ -134,6 +134,12 @@ 2.14.1 provided + + software.amazon.awssdk + ses + ${aws.sdkv2.version} + provided + diff --git a/src/test/java/cloud/localstack/awssdkv1/SESMessagingTest.java b/src/test/java/cloud/localstack/awssdkv1/SESMessagingTest.java index 5d1da2a..aa3de08 100644 --- a/src/test/java/cloud/localstack/awssdkv1/SESMessagingTest.java +++ b/src/test/java/cloud/localstack/awssdkv1/SESMessagingTest.java @@ -3,6 +3,7 @@ import cloud.localstack.LocalstackTestRunner; import cloud.localstack.awssdkv1.TestUtils; +import java.net.URI; import java.util.UUID; import com.amazonaws.services.simpleemail.AmazonSimpleEmailService; @@ -12,6 +13,13 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.ses.SesClient; +import software.amazon.awssdk.services.ses.model.CreateTemplateResponse; +import software.amazon.awssdk.services.ses.model.GetSendStatisticsResponse; +import software.amazon.awssdk.services.ses.model.SendTemplatedEmailResponse; /** * Test integration of SES messaging with LocalStack @@ -129,4 +137,62 @@ public void testSendTemplatedEmail() throws Throwable { SendTemplatedEmailResult result = client.sendTemplatedEmail(request); Assert.assertNotNull(result); } + + @Test + public void testSendTemplatedEmailV2() throws Throwable { + SesClient client = SesClient.builder() + .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create("access", "secret"))) + .region(Region.of(Localstack.INSTANCE.getDefaultRegion())) + .endpointOverride(new URI(Localstack.INSTANCE.getEndpointSES())) + .build(); + + software.amazon.awssdk.services.ses.model.VerifyEmailAddressRequest verifyEmailAddressRequestTo = software.amazon.awssdk.services.ses.model.VerifyEmailAddressRequest.builder().emailAddress(TO).build(); + client.verifyEmailAddress(verifyEmailAddressRequestTo); + + software.amazon.awssdk.services.ses.model.VerifyEmailAddressRequest verifyEmailAddressRequestFrom = software.amazon.awssdk.services.ses.model.VerifyEmailAddressRequest.builder().emailAddress(FROM).build(); + client.verifyEmailAddress(verifyEmailAddressRequestFrom); + + try { + this.testCreateTemplateV2(client); + } catch (Exception e) { + throw new Throwable("Error creating template to send"); + } + + String templateData = "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }"; + + software.amazon.awssdk.services.ses.model.SendTemplatedEmailRequest request = software.amazon.awssdk.services.ses.model.SendTemplatedEmailRequest.builder() + .configurationSetName(CONFIGSET) + .source(FROM) + .destination(software.amazon.awssdk.services.ses.model.Destination.builder().toAddresses(TO).build()) + .template(templateName) + .templateData(templateData) + .build(); + + SendTemplatedEmailResponse result = client.sendTemplatedEmail(request); + + // this call is throwing exception + GetSendStatisticsResponse statistics = client.getSendStatistics(); + + Assert.assertNotNull(result); + } + + private void testCreateTemplateV2(SesClient client) { + templateName = "test-s-" + UUID.randomUUID().toString(); + String subjectPart = "Greetings, {{name}}!"; + String htmlPart = "

Hello {{name}},

Your favorite animal is {{favoriteanimal}}.

"; + String textPart = "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}."; + + software.amazon.awssdk.services.ses.model.Template template = software.amazon.awssdk.services.ses.model.Template.builder() + .htmlPart(htmlPart) + .textPart(textPart) + .subjectPart(subjectPart) + .templateName(templateName) + .build(); + + software.amazon.awssdk.services.ses.model.CreateTemplateRequest request = software.amazon.awssdk.services.ses.model.CreateTemplateRequest.builder().template(template).build(); + CreateTemplateResponse result = client.createTemplate(request); + + Assert.assertNotNull(result); + } + }