You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2025/07/29 12:45:47 UTC

(camel-quarkus) branch main updated: Mail-microsoft-oath: clear messages after the test

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new 295c952974 Mail-microsoft-oath: clear messages after the test
295c952974 is described below

commit 295c9529744a56743a940fa8cd3ea91e68ba45bd
Author: JiriOndrusek <on...@gmail.com>
AuthorDate: Tue Jul 29 14:45:41 2025 +0200

    Mail-microsoft-oath: clear messages after the test
---
 .../oauth/it/MailMicrosoftOauthRoute.java          |  3 +-
 .../microsoft/oauth/it/MailMicrosoftOauthTest.java | 28 ++++++-----
 .../microsoft/oauth/it/MailMicrosoftOauthUtil.java | 56 ++++++++++++++++------
 3 files changed, 60 insertions(+), 27 deletions(-)

diff --git a/integration-tests/mail-microsoft-oauth/src/main/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthRoute.java b/integration-tests/mail-microsoft-oauth/src/main/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthRoute.java
index 4c257f3dca..322aad3180 100644
--- a/integration-tests/mail-microsoft-oauth/src/main/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthRoute.java
+++ b/integration-tests/mail-microsoft-oauth/src/main/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthRoute.java
@@ -38,8 +38,7 @@ public class MailMicrosoftOauthRoute extends RouteBuilder {
                     + "&mail.imaps.auth.mechanisms=XOAUTH2"
                     + "&debugMode=true"
                     + "&delete=true"
-                    //search pattern works on contains and not  start with
-                    + "&searchTerm.subject=" + TEST_SUBJECT.substring(1))
+                    + "&searchTerm.subject=" + TEST_SUBJECT)
                     .id("receiverRoute")
                     .autoStartup(false)
                     .to("mock:receivedMessages");
diff --git a/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthTest.java b/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthTest.java
index fc2b4cb482..bdd73bbd21 100644
--- a/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthTest.java
+++ b/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthTest.java
@@ -49,19 +49,25 @@ class MailMicrosoftOauthTest {
         //send an email
         MailMicrosoftOauthUtil.sendMessage(subject, content);
 
-        //start route
-        startRoute("receiverRoute");
+        try {
+            //start route
+            startRoute("receiverRoute");
 
-        //receive
-        Awaitility.await().pollInterval(2, TimeUnit.SECONDS).atMost(2, TimeUnit.MINUTES).until(() -> {
             //receive
-            return (List<Map<String, String>>) JsonbBuilder.create()
-                    .fromJson(RestAssured.get("/mail-microsoft-oauth/getReceived/")
-                            .then()
-                            .statusCode(200)
-                            .extract().body().asString(), List.class);
-        }, list -> list.size() == 1
-                && list.get(0).get("content").contains(content));
+            Awaitility.await().pollInterval(2, TimeUnit.SECONDS).atMost(2, TimeUnit.MINUTES).until(() -> {
+                //receive
+                return (List<Map<String, String>>) JsonbBuilder.create()
+                        .fromJson(RestAssured.get("/mail-microsoft-oauth/getReceived/")
+                                .then()
+                                .statusCode(200)
+                                .extract().body().asString(), List.class);
+            }, list -> list.size() == 1
+                    && list.get(0).get("content").contains(content));
+
+        } finally {
+            //delete email in case that the route failed
+            MailMicrosoftOauthUtil.deleteMessage(subject);
+        }
     }
 
     private void startRoute(String name) {
diff --git a/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthUtil.java b/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthUtil.java
index 4ad0f2d9c3..6e47b1f38c 100644
--- a/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthUtil.java
+++ b/integration-tests/mail-microsoft-oauth/src/test/java/org/apache/camel/quarkus/component/mail/microsoft/oauth/it/MailMicrosoftOauthUtil.java
@@ -24,8 +24,10 @@ import com.microsoft.graph.models.BodyType;
 import com.microsoft.graph.models.EmailAddress;
 import com.microsoft.graph.models.ItemBody;
 import com.microsoft.graph.models.Message;
+import com.microsoft.graph.models.MessageCollectionResponse;
 import com.microsoft.graph.models.Recipient;
 import com.microsoft.graph.serviceclient.GraphServiceClient;
+import com.microsoft.graph.users.item.UserItemRequestBuilder;
 import com.microsoft.graph.users.item.sendmail.SendMailPostRequestBody;
 import org.eclipse.microprofile.config.Config;
 import org.eclipse.microprofile.config.ConfigProvider;
@@ -35,18 +37,7 @@ public class MailMicrosoftOauthUtil {
     public static void sendMessage(String subject, String content) {
 
         Config config = ConfigProvider.getConfig();
-        String email = config.getValue(MailMicrosoftOauthResource.USERNAME_PROPERTY, String.class);
-        String clientId = config.getValue(MailMicrosoftOauthResource.CLIENT_ID_PROPERTY, String.class);
-        String clientSecret = config.getValue(MailMicrosoftOauthResource.CLIENT_SECRET_PROPERTY, String.class);
-        String tenantId = config.getValue(MailMicrosoftOauthResource.TENANT_ID_PROPERTY, String.class);
-
-        ClientSecretCredential graph = new ClientSecretCredentialBuilder()
-                .clientId(clientId)
-                .clientSecret(clientSecret)
-                .tenantId(tenantId)
-                .build();
-
-        GraphServiceClient graphClient = new GraphServiceClient(graph);
+        UserItemRequestBuilder client = client(config);
 
         SendMailPostRequestBody sendMailPostRequestBody = new SendMailPostRequestBody();
         Message message = new Message();
@@ -58,13 +49,50 @@ public class MailMicrosoftOauthUtil {
         LinkedList<Recipient> toRecipients = new LinkedList<Recipient>();
         Recipient recipient = new Recipient();
         EmailAddress emailAddress = new EmailAddress();
-        emailAddress.setAddress(email);
+        emailAddress.setAddress(config.getValue(MailMicrosoftOauthResource.USERNAME_PROPERTY, String.class));
         recipient.setEmailAddress(emailAddress);
         toRecipients.add(recipient);
         message.setToRecipients(toRecipients);
         sendMailPostRequestBody.setMessage(message);
         sendMailPostRequestBody.setSaveToSentItems(false);
 
-        graphClient.users().byUserId(email).sendMail().post(sendMailPostRequestBody);
+        client.sendMail().post(sendMailPostRequestBody);
+    }
+
+    public static void deleteMessage(String subject) {
+
+        UserItemRequestBuilder client = client(ConfigProvider.getConfig());
+
+        try {
+            MessageCollectionResponse messages = client.messages()
+                    .get(getRequestConfiguration -> getRequestConfiguration.queryParameters.filter = "subject eq '%s'"
+                            .formatted(subject));
+
+            //if there is only 1 message. delete it
+            if (messages.getValue().size() == 1) {
+                client.messages().byMessageId(messages.getValue().get(0).getId()).delete();
+            }
+
+        } catch (Exception e) {
+            //ignore any error
+        }
+    }
+
+    private static UserItemRequestBuilder client(Config config) {
+
+        String email = config.getValue(MailMicrosoftOauthResource.USERNAME_PROPERTY, String.class);
+        String clientId = config.getValue(MailMicrosoftOauthResource.CLIENT_ID_PROPERTY, String.class);
+        String clientSecret = config.getValue(MailMicrosoftOauthResource.CLIENT_SECRET_PROPERTY, String.class);
+        String tenantId = config.getValue(MailMicrosoftOauthResource.TENANT_ID_PROPERTY, String.class);
+
+        ClientSecretCredential graph = new ClientSecretCredentialBuilder()
+                .clientId(clientId)
+                .clientSecret(clientSecret)
+                .tenantId(tenantId)
+                .build();
+
+        GraphServiceClient graphClient = new GraphServiceClient(graph);
+
+        return graphClient.users().byUserId(email);
     }
 }