@Test public void testInvalidNonHeader() { for (String paramId : ImmutableList.of("AB", "123", "foo_bar", "foo-bar", "foo.bar")) { ParameterType parameterType = ParameterType.query(QueryParameterType.of(ParameterId.of(paramId))); assertThatThrownBy(() -> createEndpoint(parameterType)) .isInstanceOf(IllegalStateException.class) .hasMessage("Parameter ids with type %s must match pattern %s: %s", parameterType, EndpointDefinitionValidator.ANCHORED_PATTERN, paramId); } }
@Test @SuppressWarnings("CheckReturnValue") public void testValidNonHeader() { for (String paramId : ImmutableList.of("f", "foo", "fooBar", "fooBar1", "a1Foo234")) { // Passes validation createEndpoint(ParameterType.query(QueryParameterType.of(ParameterId.of(paramId)))); } }
private static ParameterType parseParameterType( com.palantir.conjure.parser.services.ArgumentDefinition argumentDef, ArgumentName argName, HttpPath httpPath) { Set<ArgumentName> args = HttpPathValidator.pathArgs(httpPath.get()); switch (argumentDef.paramType()) { case AUTO: // AUTO type if (args.contains(argName)) { // argument exists in request line -- it is a path arg return ParameterType.path(PathParameterType.of()); } else { // argument does not exist in request line -- it is a body arg return ParameterType.body(BodyParameterType.of()); } case HEADER: String headerParamId = argumentDef.paramId().map(id -> id.name()).orElse(argName.get()); return ParameterType.header(HeaderParameterType.of(ParameterId.of(headerParamId))); case PATH: return ParameterType.path(PathParameterType.of()); case BODY: return ParameterType.body(BodyParameterType.of()); case QUERY: String queryParamId = argumentDef.paramId().map(id -> id.name()).orElse(argName.get()); return ParameterType.query(QueryParameterType.of(ParameterId.of(queryParamId))); default: throw new IllegalArgumentException("Unknown parameter type: " + argumentDef.paramType()); } }