From 1a2fc77bd3d0d72239833b5fce516fc5297d4120 Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Wed, 25 Feb 2026 08:51:46 -0800 Subject: [PATCH 1/4] initial commit --- .../azurefunctions/HttpManagementPayload.java | 18 +++++ endtoendtests/build.gradle | 4 + .../functions/HttpManagementPayloadTest.java | 77 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java diff --git a/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java b/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java index f78c00f9..e379cc9c 100644 --- a/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java +++ b/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java @@ -94,4 +94,22 @@ public String getRestartPostUri() { return restartPostUri; } + /** + * Gets the HTTP POST instance suspend endpoint. + * + * @return The HTTP URL for posting instance suspend commands. + */ + public String getSuspendPostUri() { + return this.suspendPostUri; + } + + /** + * Gets the HTTP POST instance resume endpoint. + * + * @return The HTTP URL for posting instance resume commands. + */ + public String getResumePostUri() { + return this.resumePostUri; + } + } diff --git a/endtoendtests/build.gradle b/endtoendtests/build.gradle index da369c06..89e16208 100644 --- a/endtoendtests/build.gradle +++ b/endtoendtests/build.gradle @@ -32,6 +32,10 @@ targetCompatibility = '1.8' compileJava.options.encoding = 'UTF-8' +test { + useJUnitPlatform() +} + task endToEndTest(type: Test) { useJUnitPlatform { includeTags 'e2e' diff --git a/endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java b/endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java new file mode 100644 index 00000000..29e72236 --- /dev/null +++ b/endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java @@ -0,0 +1,77 @@ +package com.functions; + +import com.microsoft.durabletask.azurefunctions.HttpManagementPayload; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Unit tests for {@link HttpManagementPayload}. + */ +public class HttpManagementPayloadTest { + + private static final String INSTANCE_ID = "test-instance-id"; + private static final String INSTANCE_STATUS_URL = "http://localhost:7071/runtime/webhooks/durabletask/instances/test-instance-id"; + private static final String QUERY_STRING = "code=abc123"; + + private HttpManagementPayload createPayload() { + return new HttpManagementPayload(INSTANCE_ID, INSTANCE_STATUS_URL, QUERY_STRING); + } + + @Test + @DisplayName("getId should return the instance ID") + public void getId_ReturnsInstanceId() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_ID, payload.getId()); + } + + @Test + @DisplayName("getStatusQueryGetUri should return correct URL") + public void getStatusQueryGetUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "?" + QUERY_STRING, payload.getStatusQueryGetUri()); + } + + @Test + @DisplayName("getSendEventPostUri should return correct URL") + public void getSendEventPostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/raiseEvent/{eventName}?" + QUERY_STRING, payload.getSendEventPostUri()); + } + + @Test + @DisplayName("getTerminatePostUri should return correct URL") + public void getTerminatePostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/terminate?reason={text}&" + QUERY_STRING, payload.getTerminatePostUri()); + } + + @Test + @DisplayName("getPurgeHistoryDeleteUri should return correct URL") + public void getPurgeHistoryDeleteUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "?" + QUERY_STRING, payload.getPurgeHistoryDeleteUri()); + } + + @Test + @DisplayName("getRestartPostUri should return correct URL") + public void getRestartPostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/restart?" + QUERY_STRING, payload.getRestartPostUri()); + } + + @Test + @DisplayName("getSuspendPostUri should return correct URL") + public void getSuspendPostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/suspend?reason={text}&" + QUERY_STRING, payload.getSuspendPostUri()); + } + + @Test + @DisplayName("getResumePostUri should return correct URL") + public void getResumePostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/resume?reason={text}&" + QUERY_STRING, payload.getResumePostUri()); + } +} From cf19bbc46f23ab707e6b64006e5a66916f3eafc3 Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Wed, 25 Feb 2026 09:00:57 -0800 Subject: [PATCH 2/4] updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e17f35f..e96686e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## Unreleased +* Add getSuspendPostUri and getResumePostUri getters to HttpManagementPayload ([#264](https://github.com/microsoft/durabletask-java/pull/264)) + ## v1.7.0 * Add descriptive error when orchestration type is not registered ([#261](https://github.com/microsoft/durabletask-java/pull/261)) * Update all dependencies to latest versions ([#260](https://github.com/microsoft/durabletask-java/pull/260)) From a6a3c5e0766212c5565d871dc6d8257cbbd591ab Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Fri, 27 Feb 2026 09:20:57 -0800 Subject: [PATCH 3/4] updated endtoendtests build.gradle --- endtoendtests/build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/endtoendtests/build.gradle b/endtoendtests/build.gradle index 89e16208..83ac7a74 100644 --- a/endtoendtests/build.gradle +++ b/endtoendtests/build.gradle @@ -33,7 +33,9 @@ targetCompatibility = '1.8' compileJava.options.encoding = 'UTF-8' test { - useJUnitPlatform() + useJUnitPlatform { + excludeTags 'e2e' + } } task endToEndTest(type: Test) { From 0e5b7055559d595774b23b8795d768dfe42246f5 Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Sun, 22 Mar 2026 22:07:57 -0700 Subject: [PATCH 4/4] addressed PR feedback --- azurefunctions/build.gradle | 7 +++++++ .../azurefunctions/HttpManagementPayload.java | 4 ++-- .../azurefunctions}/HttpManagementPayloadTest.java | 10 ++++++++-- endtoendtests/build.gradle | 6 ------ 4 files changed, 17 insertions(+), 10 deletions(-) rename {endtoendtests/src/test/java/com/functions => azurefunctions/src/test/java/com/microsoft/durabletask/azurefunctions}/HttpManagementPayloadTest.java (89%) diff --git a/azurefunctions/build.gradle b/azurefunctions/build.gradle index fc5f86fd..0cfd9959 100644 --- a/azurefunctions/build.gradle +++ b/azurefunctions/build.gradle @@ -22,6 +22,13 @@ dependencies { implementation group: 'com.microsoft.azure.functions', name: 'azure-functions-java-library', version: '3.2.3' implementation "com.google.protobuf:protobuf-java:${protocVersion}" compileOnly "com.microsoft.azure.functions:azure-functions-java-spi:1.1.0" + testImplementation platform('org.junit:junit-bom:5.14.2') + testImplementation 'org.junit.jupiter:junit-jupiter' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +test { + useJUnitPlatform() } sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java b/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java index 663e7eb7..43e16ac9 100644 --- a/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java +++ b/azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayload.java @@ -93,7 +93,7 @@ public String getPurgeHistoryDeleteUri() { * @return The HTTP URL for posting instance restart commands. */ public String getRestartPostUri() { - return restartPostUri; + return this.restartPostUri; } /** @@ -120,7 +120,7 @@ public String getResumePostUri() { * @return The HTTP URL for posting instance rewind commands. */ public String getRewindPostUri() { - return rewindPostUri; + return this.rewindPostUri; } } diff --git a/endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java b/azurefunctions/src/test/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayloadTest.java similarity index 89% rename from endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java rename to azurefunctions/src/test/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayloadTest.java index 29e72236..2798164b 100644 --- a/endtoendtests/src/test/java/com/functions/HttpManagementPayloadTest.java +++ b/azurefunctions/src/test/java/com/microsoft/durabletask/azurefunctions/HttpManagementPayloadTest.java @@ -1,6 +1,5 @@ -package com.functions; +package com.microsoft.durabletask.azurefunctions; -import com.microsoft.durabletask.azurefunctions.HttpManagementPayload; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -74,4 +73,11 @@ public void getResumePostUri_ReturnsCorrectUrl() { HttpManagementPayload payload = createPayload(); assertEquals(INSTANCE_STATUS_URL + "/resume?reason={text}&" + QUERY_STRING, payload.getResumePostUri()); } + + @Test + @DisplayName("getRewindPostUri should return correct URL") + public void getRewindPostUri_ReturnsCorrectUrl() { + HttpManagementPayload payload = createPayload(); + assertEquals(INSTANCE_STATUS_URL + "/rewind?reason={text}&" + QUERY_STRING, payload.getRewindPostUri()); + } } diff --git a/endtoendtests/build.gradle b/endtoendtests/build.gradle index 83ac7a74..da369c06 100644 --- a/endtoendtests/build.gradle +++ b/endtoendtests/build.gradle @@ -32,12 +32,6 @@ targetCompatibility = '1.8' compileJava.options.encoding = 'UTF-8' -test { - useJUnitPlatform { - excludeTags 'e2e' - } -} - task endToEndTest(type: Test) { useJUnitPlatform { includeTags 'e2e'