github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/java/libraries/rest-assured/api.mustache (about)

     1  {{>licenseInfo}}
     2  
     3  package {{package}};
     4  
     5  {{#gson}}
     6  import com.google.gson.reflect.TypeToken;
     7  {{/gson}}
     8  {{#imports}}import {{import}};
     9  {{/imports}}
    10  
    11  {{^fullJavaUtil}}
    12  import java.util.ArrayList;
    13  import java.util.Arrays;
    14  import java.util.HashMap;
    15  import java.util.List;
    16  import java.util.Map;
    17  import io.restassured.RestAssured;
    18  import io.restassured.builder.RequestSpecBuilder;
    19  import io.restassured.builder.ResponseSpecBuilder;
    20  {{#jackson}}
    21  import io.restassured.common.mapper.TypeRef;
    22  {{/jackson}}
    23  import io.restassured.http.Method;
    24  import io.restassured.response.Response;
    25  import io.swagger.annotations.*;
    26  
    27  import java.lang.reflect.Type;
    28  import java.util.function.Consumer;
    29  import java.util.function.Function;
    30  import java.util.function.Supplier;
    31  {{/fullJavaUtil}}
    32  {{#gson}}
    33  import {{invokerPackage}}.JSON;
    34  {{/gson}}
    35  import static io.restassured.http.Method.*;
    36  
    37  @Api(value = "{{{baseName}}}")
    38  public class {{classname}} {
    39  
    40      private Supplier<RequestSpecBuilder> reqSpecSupplier;
    41      private Consumer<RequestSpecBuilder> reqSpecCustomizer;
    42  
    43      private {{classname}}(Supplier<RequestSpecBuilder> reqSpecSupplier) {
    44          this.reqSpecSupplier = reqSpecSupplier;
    45      }
    46  
    47      public static {{classname}} {{classVarName}}(Supplier<RequestSpecBuilder> reqSpecSupplier) {
    48          return new {{classname}}(reqSpecSupplier);
    49      }
    50  
    51      private RequestSpecBuilder createReqSpec() {
    52          RequestSpecBuilder reqSpec = reqSpecSupplier.get();
    53          if(reqSpecCustomizer != null) {
    54              reqSpecCustomizer.accept(reqSpec);
    55          }
    56          return reqSpec;
    57      }
    58  
    59      public List<Oper> getAllOperations() {
    60          return Arrays.asList(
    61  {{#operations}}
    62  {{#operation}}
    63                  {{operationId}}(){{^-last}},{{/-last}}
    64  {{/operation}}
    65  {{/operations}}
    66          );
    67      }
    68  {{#operations}}
    69  {{#operation}}
    70  
    71      @ApiOperation(value = "{{{summary}}}",
    72              notes = "{{{notes}}}",
    73              nickname = "{{{operationId}}}",
    74              tags = { {{#tags}}{{#name}}"{{{name}}}"{{/name}}{{^-last}}, {{/-last}}{{/tags}} })
    75      @ApiResponses(value = { {{#responses}}
    76              @ApiResponse(code = {{{code}}}, message = "{{{message}}}") {{^-last}},{{/-last}}{{/responses}} })
    77      {{#isDeprecated}}
    78      @Deprecated
    79      {{/isDeprecated}}
    80      public {{operationIdCamelCase}}Oper {{operationId}}() {
    81          return new {{operationIdCamelCase}}Oper(createReqSpec());
    82      }
    83  {{/operation}}
    84  {{/operations}}
    85  
    86      /**
    87       * Customize request specification
    88       * @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
    89       * @return api
    90       */
    91      public {{classname}} reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
    92          this.reqSpecCustomizer = reqSpecCustomizer;
    93          return this;
    94      }
    95  
    96      {{#operations}}
    97      {{#operation}}
    98      /**
    99       * {{summary}}
   100       * {{notes}}
   101       *
   102       {{#allParams}}
   103       * @see #{{#isPathParam}}{{paramName}}Path{{/isPathParam}}{{#isQueryParam}}{{paramName}}Query{{/isQueryParam}}{{#isFormParam}}{{^isFile}}{{paramName}}Form{{/isFile}}{{#isFile}}{{paramName}}MultiPart{{/isFile}}{{/isFormParam}}{{#isHeaderParam}}{{paramName}}Header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   104       {{/allParams}}
   105       {{#returnType}}
   106       * return {{returnType}}
   107       {{/returnType}}
   108       {{#isDeprecated}}
   109       * @deprecated
   110       {{/isDeprecated}}
   111       {{#externalDocs}}
   112       * {{description}}
   113       * @see <a href="{{url}}">{{summary}} Documentation</a>
   114      {{/externalDocs}}
   115       */
   116      {{#isDeprecated}}
   117      @Deprecated
   118      {{/isDeprecated}}
   119      public static class {{operationIdCamelCase}}Oper implements Oper {
   120  
   121          public static final Method REQ_METHOD = {{httpMethod}};
   122          public static final String REQ_URI = "{{path}}";
   123  
   124          private RequestSpecBuilder reqSpec;
   125          private ResponseSpecBuilder respSpec;
   126  
   127          public {{operationIdCamelCase}}Oper(RequestSpecBuilder reqSpec) {
   128              this.reqSpec = reqSpec;
   129              {{#vendorExtensions}}
   130              {{#x-contentType}}
   131              reqSpec.setContentType("{{x-contentType}}");
   132              {{/x-contentType}}
   133              {{#x-accepts}}
   134              reqSpec.setAccept("{{x-accepts}}");
   135              {{/x-accepts}}
   136              {{/vendorExtensions}}
   137              this.respSpec = new ResponseSpecBuilder();
   138          }
   139  
   140          /**
   141           * {{httpMethod}} {{path}}
   142           * @param handler handler
   143           * @param <T> type
   144           * @return type
   145           */
   146          @Override
   147          public <T> T execute(Function<Response, T> handler) {
   148              return handler.apply(RestAssured.given().spec(reqSpec.build()).expect().spec(respSpec.build()).when().request(REQ_METHOD, REQ_URI));
   149          }
   150          {{#returnType}}
   151  
   152          /**
   153           * {{httpMethod}} {{path}}
   154           * @param handler handler
   155           * @return {{returnType}}
   156           */
   157          public {{{returnType}}} executeAs(Function<Response, Response> handler) {
   158              {{#gson}}Type type = new TypeToken<{{{returnType}}}>(){}.getType();
   159              {{/gson}}{{#jackson}}TypeRef<{{{returnType}}}> type = new TypeRef<{{{returnType}}}>(){};
   160              {{/jackson}}return execute(handler).as(type);
   161          }
   162          {{/returnType}}
   163          {{#bodyParams}}
   164  
   165           /**
   166           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   167           * @return operation
   168           */
   169          public {{operationIdCamelCase}}Oper body({{{dataType}}} {{paramName}}) {
   170              reqSpec.setBody({{paramName}});
   171              return this;
   172          }
   173          {{/bodyParams}}
   174          {{#headerParams}}
   175  
   176          public static final String {{#convert}}{{paramName}}{{/convert}}_HEADER = "{{baseName}}";
   177  
   178          /**
   179           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   180           * @return operation
   181           */
   182          public {{operationIdCamelCase}}Oper {{paramName}}Header(String {{paramName}}) {
   183              reqSpec.addHeader({{#convert}}{{paramName}}{{/convert}}_HEADER, {{paramName}});
   184              return this;
   185          }
   186          {{/headerParams}}
   187          {{#pathParams}}
   188  
   189          public static final String {{#convert}}{{paramName}}{{/convert}}_PATH = "{{baseName}}";
   190  
   191          /**
   192           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   193           * @return operation
   194           */
   195          public {{operationIdCamelCase}}Oper {{paramName}}Path(Object {{paramName}}) {
   196              reqSpec.addPathParam({{#convert}}{{paramName}}{{/convert}}_PATH, {{paramName}});
   197              return this;
   198          }
   199          {{/pathParams}}
   200          {{#queryParams}}
   201  
   202          public static final String {{#convert}}{{paramName}}{{/convert}}_QUERY = "{{baseName}}";
   203  
   204          /**
   205           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   206           * @return operation
   207           */
   208          public {{operationIdCamelCase}}Oper {{paramName}}Query(Object... {{paramName}}) {
   209              reqSpec.addQueryParam({{#convert}}{{paramName}}{{/convert}}_QUERY, {{paramName}});
   210              return this;
   211          }
   212          {{/queryParams}}
   213          {{#formParams}}
   214          {{^isFile}}
   215  
   216           public static final String {{#convert}}{{paramName}}{{/convert}}_FORM = "{{baseName}}";
   217  
   218           /**
   219           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   220           * @return operation
   221           */
   222           public {{operationIdCamelCase}}Oper {{paramName}}Form(Object... {{paramName}}) {
   223              reqSpec.addFormParam({{#convert}}{{paramName}}{{/convert}}_FORM, {{paramName}});
   224              return this;
   225           }
   226          {{/isFile}}
   227          {{/formParams}}
   228          {{#formParams}}
   229          {{#isFile}}
   230  
   231           /**
   232           * It will assume that the control name is file and the &lt;content-type&gt; is &lt;application/octet-stream&gt;
   233           * @see #reqSpec for customise
   234           * @param {{paramName}} ({{dataType}}) {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
   235           * @return operation
   236           */
   237           public {{operationIdCamelCase}}Oper {{paramName}}MultiPart({{{dataType}}} {{paramName}}) {
   238              reqSpec.addMultiPart({{paramName}});
   239              return this;
   240           }
   241          {{/isFile}}
   242          {{/formParams}}
   243  
   244          /**
   245           * Customize request specification
   246           * @param reqSpecCustomizer consumer to modify the RequestSpecBuilder
   247           * @return operation
   248           */
   249          public {{operationIdCamelCase}}Oper reqSpec(Consumer<RequestSpecBuilder> reqSpecCustomizer) {
   250              reqSpecCustomizer.accept(reqSpec);
   251              return this;
   252          }
   253  
   254          /**
   255           * Customize response specification
   256           * @param respSpecCustomizer consumer to modify the ResponseSpecBuilder
   257           * @return operation
   258           */
   259          public {{operationIdCamelCase}}Oper respSpec(Consumer<ResponseSpecBuilder> respSpecCustomizer) {
   260              respSpecCustomizer.accept(respSpec);
   261              return this;
   262          }
   263      }
   264  {{/operation}}
   265  {{/operations}}
   266  }