diff --git a/tests/src/test/java/io/orkes/conductor/client/http/AuthorizationClientTests.java b/tests/src/test/java/io/orkes/conductor/client/http/AuthorizationClientTests.java index ee30e5d..d40e829 100644 --- a/tests/src/test/java/io/orkes/conductor/client/http/AuthorizationClientTests.java +++ b/tests/src/test/java/io/orkes/conductor/client/http/AuthorizationClientTests.java @@ -63,6 +63,34 @@ public static void setup() { request.setName("test-" + UUID.randomUUID()); ConductorApplication app = authorizationClient.createApplication(request); applicationId = app.getId(); + + // 1) Ensure the external test group exists + UpsertGroupRequest ensureGroup = new UpsertGroupRequest() + .defaultAccess( + Map.of( + TypeEnum.WORKFLOW_DEF.getValue(), List.of("CREATE", "READ", "UPDATE", "EXECUTE", "DELETE"), + TypeEnum.TASK_DEF.getValue(), List.of("CREATE", "READ", "UPDATE", "EXECUTE", "DELETE"))) + .description("Group used for SDK testing") + .roles(List.of(RolesEnum.ADMIN)); + authorizationClient.upsertGroup(ensureGroup, "worker-test-group31dfe7a4-bd85-4ccc-9571-7c0e018ebc32"); + + // 2) Ensure the external test user exists + UpsertUserRequest ensureUser = new UpsertUserRequest(); + ensureUser.setName("SDK Test User"); + ensureUser.setRoles(List.of(UpsertUserRequest.RolesEnum.USER)); + authorizationClient.upsertUser(ensureUser, "conductoruser1@gmail.com"); + + // 3) Ensure the task definition used across tests exists + try { + metadataClient.getTaskDef(Commons.TASK_NAME); + } catch (ConductorClientException e) { + // Register when missing; ignore if already present + if (e.getStatus() == 404) { + metadataClient.registerTaskDefs(List.of(Commons.getTaskDef())); + } else { + throw e; + } + } } @AfterAll @@ -218,7 +246,6 @@ void testGrantPermissionsToDomain() { } @Test - @DisplayName("tag a workflows and task") public void tagWorkflowsAndTasks() { registerWorkflow(); TagObject tagObject = new TagObject(); diff --git a/tests/src/test/java/io/orkes/conductor/client/http/WorkflowStateUpdateTests.java b/tests/src/test/java/io/orkes/conductor/client/http/WorkflowStateUpdateTests.java index 5b7cad1..77d725d 100644 --- a/tests/src/test/java/io/orkes/conductor/client/http/WorkflowStateUpdateTests.java +++ b/tests/src/test/java/io/orkes/conductor/client/http/WorkflowStateUpdateTests.java @@ -23,8 +23,11 @@ import org.junit.jupiter.api.Test; import com.netflix.conductor.client.exception.ConductorClientException; +import com.netflix.conductor.common.metadata.tasks.TaskType; import com.netflix.conductor.common.metadata.tasks.Task; import com.netflix.conductor.common.metadata.tasks.TaskResult; +import com.netflix.conductor.common.metadata.workflow.WorkflowDef; +import com.netflix.conductor.common.metadata.workflow.WorkflowTask; import com.netflix.conductor.common.metadata.workflow.IdempotencyStrategy; import com.netflix.conductor.common.metadata.workflow.StartWorkflowRequest; import com.netflix.conductor.common.run.Workflow; @@ -42,10 +45,39 @@ public class WorkflowStateUpdateTests { private static OrkesWorkflowClient workflowClient; + private static OrkesMetadataClient metadataClient; @BeforeAll public static void init() { workflowClient = ClientTestUtil.getOrkesClients().getWorkflowClient(); + metadataClient = ClientTestUtil.getOrkesClients().getMetadataClient(); + + // Ensure required workflow exists on fresh clusters + try { + metadataClient.getWorkflowDef("sync_task_variable_updates", 1); + } catch (ConductorClientException e) { + if (e.getStatus() == 404) { + WorkflowDef def = new WorkflowDef(); + def.setName("sync_task_variable_updates"); + def.setVersion(1); + def.setOwnerEmail("example@orkes.io"); + + WorkflowTask wait1 = new WorkflowTask(); + wait1.setName(TaskType.WAIT.name()); + wait1.setTaskReferenceName("wait_task_ref"); + wait1.setType(TaskType.WAIT.name()); + + WorkflowTask wait2 = new WorkflowTask(); + wait2.setName(TaskType.WAIT.name()); + wait2.setTaskReferenceName("wait_task_ref_2"); + wait2.setType(TaskType.WAIT.name()); + + def.setTasks(List.of(wait1, wait2)); + metadataClient.registerWorkflowDef(def); + } else { + throw e; + } + } } @SneakyThrows