@Test
 public void addTrait() {
   Raml raml = this.parseRaml("org/raml/traits/single-trait-add.yaml");
   Map<String, QueryParameter> queryParams =
       raml.getResources().get("/media").getAction(GET).getQueryParameters();
   assertThat(queryParams.size(), is(1));
   assertThat(queryParams.get("count").getType(), is(ParamType.INTEGER));
   assertThat(
       raml.getResources().get("/media").getAction(POST).getQueryParameters().size(), is(2));
 }
  private Set<String> run(final Raml raml, final Configuration configuration) throws Exception {
    validate(configuration);

    context = new Context(configuration, raml);
    types = new Types(context);

    for (final Resource resource : raml.getResources().values()) {
      createResourceInterface(resource);
    }

    return context.generate();
  }
 @Test
 public void testTitle() throws InterruptedException {
   WebElement title = console.getTitle();
   assert title.getText().equals(raml.getTitle());
 }
  private void verifyFullDump(Raml source, String dump) {
    Raml target = verifyDump(source, dump);

    // *********** URI PARAMETERS ***********

    UriParameter srcHost = source.getBaseUriParameters().get("host");
    UriParameter tgtHost = target.getBaseUriParameters().get("host");
    assertThat(tgtHost.getDisplayName(), is(srcHost.getDisplayName()));
    assertThat(tgtHost.getDescription(), is(srcHost.getDescription()));
    assertThat(tgtHost.getType(), is(srcHost.getType()));
    assertThat(tgtHost.getMinLength(), is(srcHost.getMinLength()));
    assertThat(tgtHost.getMaxLength(), is(srcHost.getMaxLength()));
    assertThat(tgtHost.getPattern(), is(srcHost.getPattern()));

    UriParameter srcPort = source.getBaseUriParameters().get("port");
    UriParameter tgtPort = target.getBaseUriParameters().get("port");
    assertThat(tgtPort.getType(), is(srcPort.getType()));
    assertThat(tgtPort.getMinimum(), is(srcPort.getMinimum()));
    assertThat(tgtPort.getMaximum(), is(srcPort.getMaximum()));

    UriParameter srcPath = source.getBaseUriParameters().get("path");
    UriParameter tgtPath = target.getBaseUriParameters().get("path");
    assertThat(tgtPath.getType(), is(srcPath.getType()));
    assertThat(tgtPath.getEnumeration().size(), is(srcPath.getEnumeration().size()));
    assertThat(tgtPath.getEnumeration().get(0), is(srcPath.getEnumeration().get(0)));
    assertThat(tgtPath.getEnumeration().get(1), is(srcPath.getEnumeration().get(1)));
    assertThat(tgtPath.getEnumeration().get(2), is(srcPath.getEnumeration().get(2)));

    // *********** DOCUMENTATION ***********

    List<DocumentationItem> srcDoc = source.getDocumentation();
    List<DocumentationItem> tgtDoc = target.getDocumentation();
    assertThat(tgtDoc.get(0).getTitle(), is(srcDoc.get(0).getTitle()));
    assertThat(tgtDoc.get(0).getContent(), is(srcDoc.get(0).getContent()));

    // *********** GLOBAL SCHEMAS ***********

    List<Map<String, String>> srcSchemas = source.getSchemas();
    List<Map<String, String>> tgtSchemas = target.getSchemas();
    assertThat(tgtSchemas.size(), is(srcSchemas.size()));
    assertThat(tgtSchemas.get(0).get("league-json"), is(srcSchemas.get(0).get("league-json")));
    assertThat(tgtSchemas.get(1).get("league-xml"), is(srcSchemas.get(1).get("league-xml")));

    // *********** FORM PARAMETERS ***********

    Map<String, List<FormParameter>> srcFormParams =
        source
            .getResource("/media")
            .getAction(GET)
            .getBody()
            .get("multipart/form-data")
            .getFormParameters();
    Map<String, List<FormParameter>> tgtFormParams =
        target
            .getResource("/media")
            .getAction(GET)
            .getBody()
            .get("multipart/form-data")
            .getFormParameters();
    assertThat(srcFormParams.size(), is(tgtFormParams.size()));
    assertThat(srcFormParams.get("form-1").size(), is(tgtFormParams.get("form-1").size()));
    assertThat(
        srcFormParams.get("form-1").get(0).getDisplayName(),
        is(tgtFormParams.get("form-1").get(0).getDisplayName()));
    assertThat(srcFormParams.get("form-2").size(), is(tgtFormParams.get("form-2").size()));
    assertThat(
        srcFormParams.get("form-2").get(0).getDisplayName(),
        is(tgtFormParams.get("form-2").get(0).getDisplayName()));

    // *********** RESOURCE TYPES ************

    assertThat(target.getResourceTypes().size(), is(source.getResourceTypes().size()));
    assertThat(
        target.getResourceTypes().get(0).get("basic").getDisplayName(),
        is(source.getResourceTypes().get(0).get("basic").getDisplayName()));
    assertThat(
        target.getResourceTypes().get(1).get("complex").getDisplayName(),
        is(source.getResourceTypes().get(1).get("complex").getDisplayName()));

    assertThat(target.getResource("/").getType(), is(source.getResource("/").getType()));
    assertThat(target.getResource("/media").getType(), is(source.getResource("/media").getType()));

    // *********** TRAITS ************

    assertThat(target.getTraits().size(), is(source.getTraits().size()));
    assertThat(
        target.getTraits().get(0).get("simple").getDisplayName(),
        is(source.getTraits().get(0).get("simple").getDisplayName()));
    assertThat(
        target.getTraits().get(1).get("knotty").getDisplayName(),
        is(source.getTraits().get(1).get("knotty").getDisplayName()));

    assertThat(
        target.getResource("/").getAction(HEAD).getIs(),
        is(source.getResource("/").getAction(HEAD).getIs()));

    // *********** SECURITY SCHEMES ************

    assertThat(target.getSecuritySchemes().size(), is(source.getSecuritySchemes().size()));
    SecurityScheme tOauth2 = target.getSecuritySchemes().get(0).get("oauth_2_0");
    SecurityScheme sOauth2 = source.getSecuritySchemes().get(0).get("oauth_2_0");
    assertThat(tOauth2.getDescription(), is(sOauth2.getDescription()));
    assertThat(
        tOauth2.getDescribedBy().getHeaders().size(),
        is(sOauth2.getDescribedBy().getHeaders().size()));
    assertThat(
        tOauth2.getDescribedBy().getHeaders().get("Authorization").getDescription(),
        is(sOauth2.getDescribedBy().getHeaders().get("Authorization").getDescription()));
    assertThat(
        tOauth2.getDescribedBy().getQueryParameters().size(),
        is(sOauth2.getDescribedBy().getQueryParameters().size()));
    assertThat(
        tOauth2.getDescribedBy().getQueryParameters().get("access_token").getDescription(),
        is(sOauth2.getDescribedBy().getQueryParameters().get("access_token").getDescription()));
    assertThat(
        tOauth2.getDescribedBy().getResponses().size(),
        is(sOauth2.getDescribedBy().getResponses().size()));
    assertThat(
        tOauth2.getDescribedBy().getResponses().get("401").getDescription(),
        is(sOauth2.getDescribedBy().getResponses().get("401").getDescription()));
    assertThat(tOauth2.getSettings().size(), is(sOauth2.getSettings().size()));
    assertThat(
        tOauth2.getSettings().get("authorizationUrl").size(),
        is(sOauth2.getSettings().get("authorizationUrl").size()));
    assertThat(
        sOauth2.getSettings().get("authorizationUrl").get(0),
        is("https://www.dropbox.com/1/oauth2/authorize"));
    assertThat(
        tOauth2.getSettings().get("authorizationUrl").get(0),
        is(sOauth2.getSettings().get("authorizationUrl").get(0)));

    assertThat(
        target.getResource("/").getSecuredBy().size(),
        is(source.getResource("/").getSecuredBy().size()));
    assertThat(
        target.getResource("/").getSecuredBy().get(0).getName(),
        is(source.getResource("/").getSecuredBy().get(0).getName()));
    assertThat(
        target.getResource("/").getSecuredBy().get(0).getParameters().size(),
        is(source.getResource("/").getSecuredBy().get(0).getParameters().size()));
    assertThat(
        target.getResource("/").getSecuredBy().get(0).getParameters().get("scopes").get(0),
        is(source.getResource("/").getSecuredBy().get(0).getParameters().get("scopes").get(0)));
    assertThat(
        target.getResource("/").getSecuredBy().get(1).getName(),
        is(source.getResource("/").getSecuredBy().get(1).getName()));
    assertThat(
        target.getResource("/").getSecuredBy().get(2).getName(),
        is(source.getResource("/").getSecuredBy().get(2).getName()));

    // *********** PROTOCOLS ************

    assertThat(target.getProtocols().size(), is(source.getProtocols().size()));
    assertThat(target.getProtocols().get(0), is(source.getProtocols().get(0)));
    assertThat(target.getProtocols().get(1), is(source.getProtocols().get(1)));
  }
  private Raml verifyDump(Raml source, String dump) {
    RamlDocumentBuilder verifier = new RamlDocumentBuilder();
    Raml target = verifier.build(dump, "");

    assertThat(target.getTitle(), is(source.getTitle()));
    assertThat(target.getVersion(), is(source.getVersion()));
    assertThat(target.getBaseUri(), is(source.getBaseUri()));
    assertThat(target.getBaseUriParameters().size(), is(source.getBaseUriParameters().size()));
    assertThat(target.getDocumentation().size(), is(source.getDocumentation().size()));
    assertThat(target.getResources().size(), is(source.getResources().size()));

    return target;
  }
 @Test
 public void mergeOptionalTrait() {
   Raml raml = this.parseRaml("org/raml/traits/single-trait-optional-merge.yaml");
   assertThat(raml.getResources().get("/media").getAction(GET).getQueryParameters().size(), is(2));
 }
 @Test
 public void addOptionalTrait() {
   Raml raml = this.parseRaml("org/raml/traits/single-trait-optional-add.yaml");
   assertThat(raml.getResources().get("/media").getAction(GET), nullValue());
 }