### Question:
ProgramStarter extends BaseStepExecutor<ProgramStarter.Arguments> { @Override public void execute(Arguments arguments) throws Exception { ProgramId programId = arguments.getId(); Preconditions.checkArgument(programLifecycleService.getProgramSpecification(programId) != null, "Cannot start %s because it does not exist.", programId); try { ProgramStatus currentStatus = programLifecycleService.getProgramStatus(programId); if (currentStatus != ProgramStatus.STOPPED) { LOG.info("Program {} is in the {} state, skipping start program bootstrap step.", programId, currentStatus); return; } programLifecycleService.run(programId, Collections.emptyMap(), false); } catch (ConflictException e) { } catch (NotFoundException e) { throw new IllegalArgumentException(String.format("Cannot start %s because it does not exist.", programId), e); } } @Inject  ProgramStarter(ProgramLifecycleService programLifecycleService); @Override void execute(Arguments arguments);  }### Answer:
@Test public void invalidStructureFails() throws Exception { JsonObject argumentsObj = new JsonObject(); argumentsObj.addProperty("namespace", "ns"); argumentsObj.addProperty("application", "app"); argumentsObj.addProperty("type", "WORKFLOW"); argumentsObj.add("name", new JsonObject()); BootstrapStepResult result = programStarter.execute("label", argumentsObj); Assert.assertEquals(BootstrapStepResult.Status.FAILED, result.getStatus()); }