Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG][Java][okhttp-gson] RuntimeException with undefined authentication method #5529

Closed
2 of 6 tasks
sebastien-rosset opened this issue Mar 5, 2020 · 0 comments · Fixed by #5530
Closed
2 of 6 tasks

Comments

@sebastien-rosset
Copy link
Contributor

sebastien-rosset commented Mar 5, 2020

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:

  1. 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)
  1. 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.

  1. When invoking an API, the ApiClient.updateParamsForAuth() expects all authentication parameters to be initialized.
openapi-generator version

master Marcch 4th 2020

OpenAPI declaration file content or url
Command line used for generation
Steps to reproduce
Related issues/PRs
Suggest a fix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant