From 23e63dccfa9872e93f14c6eec3a9d5cfbdcba5a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Fri, 28 Jun 2019 11:55:51 +0200 Subject: [PATCH] [java-client][okhttp-gson] support bearer authentication (#3236) --- .../libraries/okhttp-gson/ApiClient.mustache | 5 +++-- .../codegen/java/JavaClientCodegenTest.java | 13 ++++++++++++ .../test/resources/3_0/pingBearerAuth.yaml | 21 +++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/pingBearerAuth.yaml diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 3c4559359c3..a5617334a8e 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -88,8 +88,9 @@ public class ApiClient { public ApiClient() { init(); - // Setup authentications (key: authentication name, value: authentication).{{#authMethods}}{{#isBasic}} - authentications.put("{{name}}", new HttpBasicAuth());{{/isBasic}}{{#isApiKey}} + // Setup authentications (key: authentication name, value: authentication).{{#authMethods}}{{#isBasic}}{{#isBasicBasic}} + authentications.put("{{name}}", new HttpBasicAuth());{{/isBasicBasic}}{{^isBasicBasic}} + authentications.put("{{name}}", new HttpBearerAuth("{{scheme}}"));{{/isBasicBasic}}{{/isBasic}}{{#isApiKey}} authentications.put("{{name}}", new ApiKeyAuth({{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{^isKeyInHeader}}"query"{{/isKeyInHeader}}, "{{keyParamName}}"));{{/isApiKey}}{{#isOAuth}} authentications.put("{{name}}", new OAuth());{{/isOAuth}}{{/authMethods}} // Prevent the authentications from being modified. diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 0f5573450e8..acfd791fd03 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -44,6 +44,7 @@ import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenResponse; +import org.openapitools.codegen.CodegenSecurity; import org.openapitools.codegen.DefaultGenerator; import org.openapitools.codegen.MockDefaultGenerator; import org.openapitools.codegen.MockDefaultGenerator.WrittenTemplateBasedFile; @@ -409,6 +410,18 @@ public class JavaClientCodegenTest { Assert.assertEquals(cm.getClassname(), "OtherObj"); } + @Test + public void testBearerAuth() { + final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/pingBearerAuth.yaml"); + JavaClientCodegen codegen = new JavaClientCodegen(); + + List security = codegen.fromSecurity(openAPI.getComponents().getSecuritySchemes()); + Assert.assertEquals(security.size(), 1); + Assert.assertEquals(security.get(0).isBasic, Boolean.TRUE); + Assert.assertEquals(security.get(0).isBasicBasic, Boolean.FALSE); + Assert.assertEquals(security.get(0).isBasicBearer, Boolean.TRUE); + } + private CodegenProperty codegenPropertyWithArrayOfIntegerValues() { CodegenProperty array = new CodegenProperty(); final CodegenProperty items = new CodegenProperty(); diff --git a/modules/openapi-generator/src/test/resources/3_0/pingBearerAuth.yaml b/modules/openapi-generator/src/test/resources/3_0/pingBearerAuth.yaml new file mode 100644 index 00000000000..a503051829f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/pingBearerAuth.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.1 +info: + title: ping test + version: '1.0' +servers: + - url: 'http://localhost:8080/' +paths: + /ping: + get: + operationId: pingGet + responses: + '201': + description: OK +components: + securitySchemes: + bearerAuth: + scheme: bearer + bearerFormat: token + type: http +security: + - bearerAuth: [] \ No newline at end of file