Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SELC-2865] fix: add logging onboardingsOrchestrator function #117

Merged
merged 3 commits into from
Jan 25, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
add log error to onboardingsOrchestrator
  • Loading branch information
manuraf committed Jan 25, 2024
commit 151edbc64103a280f01193f5f35090c9bc67950c
Original file line number Diff line number Diff line change
@@ -92,7 +92,8 @@ public HttpResponseMessage startOrchestration(
*/
@FunctionName("Onboardings")
public void onboardingsOrchestrator(
@DurableOrchestrationTrigger(name = "taskOrchestrationContext") TaskOrchestrationContext ctx) {
@DurableOrchestrationTrigger(name = "taskOrchestrationContext") TaskOrchestrationContext ctx,
ExecutionContext functionContext) {
String onboardingId = ctx.getInput(String.class);
Onboarding onboarding = service.getOnboarding(onboardingId)
.orElseThrow(() -> new ResourceNotFoundException(String.format("Onboarding with id %s not found!", onboardingId)));
@@ -111,6 +112,7 @@ public void onboardingsOrchestrator(
Optional<OnboardingStatus> optNextStatus = workflowExecutor.execute(ctx, onboarding);
optNextStatus.ifPresent(onboardingStatus -> service.updateOnboardingStatus(onboardingId, onboardingStatus));
} catch (Exception ex) {
functionContext.getLogger().warning("Error during workflowExecutor execute, msg: " + ex.getMessage());
service.updateOnboardingStatusAndInstanceId(onboardingId, OnboardingStatus.FAILED, ctx.getInstanceId());
}
}
Original file line number Diff line number Diff line change
@@ -97,9 +97,10 @@ public HttpResponseMessage.Builder answer(InvocationOnMock invocation) {
void onboardingsOrchestrator_throwExceptionIfOnboardingNotPresent() {
final String onboardingId = "onboardingId";
TaskOrchestrationContext orchestrationContext = mock(TaskOrchestrationContext.class);
ExecutionContext executionContext = mock(ExecutionContext.class);
when(orchestrationContext.getInput(String.class)).thenReturn(onboardingId);
when(service.getOnboarding(onboardingId)).thenReturn(Optional.empty());
assertThrows(ResourceNotFoundException.class, () -> function.onboardingsOrchestrator(orchestrationContext));
assertThrows(ResourceNotFoundException.class, () -> function.onboardingsOrchestrator(orchestrationContext, executionContext));
}

@Test
@@ -111,13 +112,14 @@ void onboardingsOrchestrator_throwExceptionActivity() {
final String instanceId = "instanceId";

TaskOrchestrationContext orchestrationContext = mock(TaskOrchestrationContext.class);
ExecutionContext executionContext = mock(ExecutionContext.class);
when(orchestrationContext.getInput(String.class)).thenReturn(onboarding.getOnboardingId());
when(orchestrationContext.getInstanceId()).thenReturn(instanceId);
when(service.getOnboarding(onboarding.getOnboardingId())).thenReturn(Optional.of(onboarding));

when(orchestrationContext.callActivity(any(),any(),any(),any())).thenThrow(new RuntimeException());

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

Mockito.verify(service, times(1))
.updateOnboardingStatusAndInstanceId(onboarding.getOnboardingId(), OnboardingStatus.FAILED, instanceId);
@@ -131,8 +133,9 @@ void onboardingsOrchestratorContractRegistration() {
onboarding.setWorkflowType(WorkflowType.CONTRACT_REGISTRATION);

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(3))
@@ -153,8 +156,9 @@ void onboardingsOrchestratorForApprove() {
onboarding.setWorkflowType(WorkflowType.FOR_APPROVE);

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(1))
@@ -173,8 +177,9 @@ void onboardingsOrchestratorForApproveWhenToBeValidated() {
onboarding.setWorkflowType(WorkflowType.FOR_APPROVE);

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(3))
@@ -196,8 +201,9 @@ void onboardingsOrchestratorConfirmation() {
onboarding.setInstitution(new Institution());

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(3))
@@ -218,8 +224,9 @@ void onboardingsOrchestratorRegistrationRequestApprove() {
onboarding.setWorkflowType(WorkflowType.FOR_APPROVE_PT);

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(2))
@@ -336,8 +343,9 @@ void onboardingCompletionOrchestrator() {
onboarding.setInstitution(new Institution());

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext);
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(3))
@@ -351,6 +359,27 @@ void onboardingCompletionOrchestrator() {
}




@Test
void onboardingRejectedOrchestrator() {
Onboarding onboarding = new Onboarding();
onboarding.setOnboardingId("onboardingId");
onboarding.setStatus(OnboardingStatus.REJECTED);
onboarding.setWorkflowType(WorkflowType.CONTRACT_REGISTRATION);
onboarding.setInstitution(new Institution());

TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding);
ExecutionContext executionContext = mock(ExecutionContext.class);

function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
Mockito.verify(orchestrationContext, times(1))
.callActivity(captorActivity.capture(), any(), any(),any());
assertEquals(SEND_MAIL_REJECTION_ACTIVITY, captorActivity.getAllValues().get(0));
}

@Test
void createInstitutionAndPersistInstitutionId() {
ExecutionContext executionContext = mock(ExecutionContext.class);