public void parseStepParameter(
      Map<String, Map<String, Object>> allStepOutputData,
      Map<String, Parameter> workflowParams,
      Map<String, Parameter> stepParams,
      Parameter param,
      String stepId) {
    parseStepParameter(
        allStepOutputData, workflowParams, stepParams, param, stepId, new HashSet<>());
  }
@Test
  public void testParseInjectedStepIdStepParameter() {
    StringParameter bar = StringParameter.builder().name("id").value("test ${step_id}").build();

    // create all the mock instances.
    InstanceWrapper mockInstanceWrapper = mock(InstanceWrapper.class);
    StepInstanceAttributes mockStepAttributes = mock(StepInstanceAttributes.class);
    when(mockStepAttributes.getStepId()).thenReturn("step1");
    when(mockInstanceWrapper.isWorkflowParam()).thenReturn(false);
    when(mockInstanceWrapper.getStepInstanceAttributes()).thenReturn(mockStepAttributes);

    paramExtensionRepo.reset(Collections.emptyMap(), Collections.emptyMap(), mockInstanceWrapper);
    paramEvaluator.parseStepParameter(
        Collections.emptyMap(),
        Collections.emptyMap(),
        Collections.singletonMap(
            "step_id",
            StringParameter.builder()
                .mode(ParamMode.CONSTANT)
                .name("step_id")
                .expression("return params.getFromStep(\"step_id\");")
                .build()),
        bar,
        "step1");
    assertEquals("test step1", bar.getEvaluatedResult());
  }