[BUG][Java][okhttp-gson] RuntimeException with undefined authentication method
Created by: sebastien-rosset
Bug Report Checklist
-
Have you provided a full/minimal spec to reproduce the issue? -
Have you validated the input using an OpenAPI validator (example)? -
What's the version of OpenAPI Generator used? -
Have you search for related issues/PRs? -
What's the actual output vs expected output? -
[Optional] Bounty to sponsor the fix (example)
Description
A RuntimeException may be thrown when invoking an API, provided the OAS document defines more than one security scheme and the client creates the ApiClient class by invoking a constructor with arguments.
Exception in thread "main" java.lang.RuntimeException: Authentication undefined: cookieAuth
at ....client.ApiClient.updateParamsForAuth(ApiClient.java:1294)
at ....client.ApiClient.buildRequest(ApiClient.java:1138)
at ....client.ApiClient.buildCall(ApiClient.java:1108)
at .....client.api.AaaApi.getXYZCall(AaaApi.java:143)
This happens because:
- the Java okhttp-gson mustache template generates the following constructors:
public ApiClient()
public ApiClient(String clientId)
public ApiClient(String clientId, Map<String, String> parameters)
public ApiClient(String clientId, String clientSecret, Map<String, String> parameters)
-
But only the basic constructor ApiClient() initializes all authentication methods.
authentications.put("cookieAuth", new ApiKeyAuth("cookie", "X-My-Token")); authentications.put("oAuth2", new OAuth());
For example, the constructor ApiClient(String clientId, String clientSecret, Map<String, String> parameters) initializes the OAuth2 authentication parameters but not the other ones.
- When invoking an API, the ApiClient.updateParamsForAuth() expects all authentication parameters to be initialized.
openapi-generator version
master Marcch 4th 2020