### Question:
AppCreator extends BaseStepExecutor<AppCreator.Arguments> { @Override public void execute(Arguments arguments) throws Exception { ApplicationId appId = arguments.getId(); ArtifactSummary artifactSummary = arguments.getArtifact(); if (appExists(appId) && !arguments.overwrite) { return; } KerberosPrincipalId ownerPrincipalId = arguments.getOwnerPrincipal() == null ? null : new KerberosPrincipalId(arguments.getOwnerPrincipal()); String configString = arguments.getConfig() == null ? null : GSON.toJson(arguments.getConfig()); try { appLifecycleService.deployApp(appId.getParent(), appId.getApplication(), appId.getVersion(), artifactSummary, configString, x -> { }, ownerPrincipalId, arguments.canUpdateSchedules()); } catch (NotFoundException | UnauthorizedException | InvalidArtifactException e) { throw e; } catch (DatasetManagementException e) { if (e.getCause() instanceof UnauthorizedException) { throw (UnauthorizedException) e.getCause(); } else { throw new RetryableException(e); } } catch (Exception e) { throw new RetryableException(e); } } @Inject  AppCreator(ApplicationLifecycleService appLifecycleService); @Override void execute(Arguments arguments);  }### Answer:
@Test public void invalidStructureFails() throws Exception { JsonObject argumentsObj = new JsonObject(); argumentsObj.addProperty("namespace", "ns"); argumentsObj.addProperty("name", "app"); argumentsObj.addProperty("artifact", "name-1.0.0"); BootstrapStepResult result = appCreator.execute("label", argumentsObj); Assert.assertEquals(BootstrapStepResult.Status.FAILED, result.getStatus()); }