From 07b52f89f8c99ad2b825926af18ca447fb172a13 Mon Sep 17 00:00:00 2001 From: lnash94 Date: Wed, 26 Jun 2024 11:05:22 +0530 Subject: [PATCH 1/2] Set proper auth value into config --- .../auth/MixedApiKeyAndHTTPAuthTests.java | 18 ++++++++++++++++++ .../generators/common/TestConstants.java | 7 +++++++ .../client/AuthConfigGeneratorImp.java | 4 ++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/openapi-cli/src/test/java/io/ballerina/openapi/generators/auth/MixedApiKeyAndHTTPAuthTests.java b/openapi-cli/src/test/java/io/ballerina/openapi/generators/auth/MixedApiKeyAndHTTPAuthTests.java index 9fffb1606..22f231436 100644 --- a/openapi-cli/src/test/java/io/ballerina/openapi/generators/auth/MixedApiKeyAndHTTPAuthTests.java +++ b/openapi-cli/src/test/java/io/ballerina/openapi/generators/auth/MixedApiKeyAndHTTPAuthTests.java @@ -20,11 +20,16 @@ import io.ballerina.compiler.syntax.tree.Node; import io.ballerina.compiler.syntax.tree.ParameterNode; +import io.ballerina.compiler.syntax.tree.SyntaxTree; import io.ballerina.compiler.syntax.tree.TypeDefinitionNode; import io.ballerina.openapi.core.generators.client.AuthConfigGeneratorImp; +import io.ballerina.openapi.core.generators.client.BallerinaClientGenerator; import io.ballerina.openapi.core.generators.client.exception.ClientException; +import io.ballerina.openapi.core.generators.client.model.OASClientConfig; import io.ballerina.openapi.core.generators.common.GeneratorUtils; +import io.ballerina.openapi.core.generators.common.TypeHandler; import io.ballerina.openapi.core.generators.common.exception.BallerinaOpenApiException; +import io.ballerina.openapi.core.generators.common.model.Filter; import io.ballerina.openapi.generators.common.TestConstants; import io.swagger.v3.oas.models.OpenAPI; import org.testng.Assert; @@ -37,6 +42,8 @@ import java.util.List; import java.util.Optional; +import static io.ballerina.openapi.generators.common.TestConstants.MIXED_AUTH_INIT_STATEMENTS; + /** * All the tests related to the auth related code snippet generation for api key auth mechanism. */ @@ -54,6 +61,17 @@ public void testGetConfigRecord(String yamlFile) throws IOException, BallerinaOp Optional connectionConfig = authRelatedTypeDefinitionNodes.stream() .filter(typeDefinitionNode -> typeDefinitionNode.typeName().text().equals("ConnectionConfig")) .findFirst(); + TypeHandler.createInstance(openAPI, false); + OASClientConfig.Builder clientMetaDataBuilder = new OASClientConfig.Builder(); + OASClientConfig oasClientConfig = clientMetaDataBuilder + .withFilters(new Filter()) + .withOpenAPI(openAPI) + .withResourceMode(false).build(); + BallerinaClientGenerator ballerinaClientGenerator = new BallerinaClientGenerator(oasClientConfig); + SyntaxTree syntaxTree = ballerinaClientGenerator.generateSyntaxTree(); + Assert.assertTrue(syntaxTree.toSourceCode().trim().replaceAll("\\s+", "") + .contains(MIXED_AUTH_INIT_STATEMENTS.trim().replaceAll("\\s+", ""))); + if (connectionConfig.isPresent()) { String expectedRecord = TestConstants.CONNECTION_CONFIG_MIXED_AUTH; String generatedRecord = connectionConfig.get().toString(); diff --git a/openapi-cli/src/test/java/io/ballerina/openapi/generators/common/TestConstants.java b/openapi-cli/src/test/java/io/ballerina/openapi/generators/common/TestConstants.java index 8aceab0e8..ce1c1e1e6 100644 --- a/openapi-cli/src/test/java/io/ballerina/openapi/generators/common/TestConstants.java +++ b/openapi-cli/src/test/java/io/ballerina/openapi/generators/common/TestConstants.java @@ -288,4 +288,11 @@ public class TestConstants { public static final String OAUTH2_REFRESH_TOKEN_GRANT_CONFIG_RECORD = "#OAuth2ClientCredentialsGrantConfigs" + "publictypeOAuth2ClientCredentialsGrantConfigrecord{|*http:OAuth2ClientCredentialsGrantConfig;" + "#TokenURLstringtokenUrl=\"https://domain/services/data/oauth2/token\";|};"; + public static final String MIXED_AUTH_INIT_STATEMENTS = "if config.auth is ApiKeysConfig {\n" + + " self.apiKeyConfig = (config.auth).cloneReadOnly();\n" + + " } else {\n" + + " httpClientConfig.auth = config.auth;\n" + + " self.apiKeyConfig = ();\n" + + " }"; } diff --git a/openapi-core/src/main/java/io/ballerina/openapi/core/generators/client/AuthConfigGeneratorImp.java b/openapi-core/src/main/java/io/ballerina/openapi/core/generators/client/AuthConfigGeneratorImp.java index 8ed04e493..2bd693ef1 100644 --- a/openapi-core/src/main/java/io/ballerina/openapi/core/generators/client/AuthConfigGeneratorImp.java +++ b/openapi-core/src/main/java/io/ballerina/openapi/core/generators/client/AuthConfigGeneratorImp.java @@ -1367,9 +1367,9 @@ public IfElseStatementNode handleInitForMixOfApiKeyAndHTTPOrOAuth() { List clientConfigAssignmentNodes = new ArrayList<>(); - // config.auth = config.auth; + // httpClientConfig.auth = config.auth; FieldAccessExpressionNode clientConfigAuthRef = createFieldAccessExpressionNode( - createSimpleNameReferenceNode(createIdentifierToken(CONFIG)), createToken(DOT_TOKEN), + createSimpleNameReferenceNode(createIdentifierToken(HTTP_CLIENT_CONFIG)), createToken(DOT_TOKEN), createSimpleNameReferenceNode(createIdentifierToken(AUTH))); SimpleNameReferenceNode clientConfigExpr = createSimpleNameReferenceNode( createIdentifierToken("<" + getAuthFieldTypeName() + From 34b95f1e94ca3125e45322091163f3b45013a78f Mon Sep 17 00:00:00 2001 From: lnash94 Date: Wed, 26 Jun 2024 12:00:22 +0530 Subject: [PATCH 2/2] Fix tests --- .../resources/expected_gen/petstore_catch_all_path_client.bal | 2 +- .../src/test/resources/expected_gen/petstore_client_swagger.bal | 2 +- .../client/ballerina/combination_of_apikey_and_http_oauth.bal | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openapi-cli/src/test/resources/expected_gen/petstore_catch_all_path_client.bal b/openapi-cli/src/test/resources/expected_gen/petstore_catch_all_path_client.bal index 7367bd17f..9111a7ccf 100644 --- a/openapi-cli/src/test/resources/expected_gen/petstore_catch_all_path_client.bal +++ b/openapi-cli/src/test/resources/expected_gen/petstore_catch_all_path_client.bal @@ -38,7 +38,7 @@ public isolated client class Client { if config.auth is ApiKeysConfig { self.apiKeyConfig = (config.auth).cloneReadOnly(); } else { - config.auth = config.auth; + httpClientConfig.auth = config.auth; self.apiKeyConfig = (); } http:Client httpEp = check new (serviceUrl, httpClientConfig); diff --git a/openapi-cli/src/test/resources/expected_gen/petstore_client_swagger.bal b/openapi-cli/src/test/resources/expected_gen/petstore_client_swagger.bal index 758c64281..94a4dd4bb 100644 --- a/openapi-cli/src/test/resources/expected_gen/petstore_client_swagger.bal +++ b/openapi-cli/src/test/resources/expected_gen/petstore_client_swagger.bal @@ -39,7 +39,7 @@ public isolated client class Client { if config.auth is ApiKeysConfig { self.apiKeyConfig = (config.auth).cloneReadOnly(); } else { - config.auth = config.auth; + httpClientConfig.auth = config.auth; self.apiKeyConfig = (); } http:Client httpEp = check new (serviceUrl, httpClientConfig); diff --git a/openapi-cli/src/test/resources/generators/client/ballerina/combination_of_apikey_and_http_oauth.bal b/openapi-cli/src/test/resources/generators/client/ballerina/combination_of_apikey_and_http_oauth.bal index 01f653ddf..254cbf75e 100644 --- a/openapi-cli/src/test/resources/generators/client/ballerina/combination_of_apikey_and_http_oauth.bal +++ b/openapi-cli/src/test/resources/generators/client/ballerina/combination_of_apikey_and_http_oauth.bal @@ -34,7 +34,7 @@ public isolated client class Client { if config.auth is ApiKeysConfig { self.apiKeyConfig = (config.auth).cloneReadOnly(); } else { - config.auth = config.auth; + httpClientConfig.auth = config.auth; self.apiKeyConfig = (); } http:Client httpEp = check new (serviceUrl, httpClientConfig);