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 <content-type> is <application/octet-stream> 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 }