Skip to content

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

@sebastien-rosset

Description

@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:

  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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions