@openapi-generator-plus/java-cxf-spring-server-generator
Version:
An OpenAPI Generator Plus template for a Java API server using CXF and Spring annotations
100 lines (89 loc) • 4.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.apiTest = apiTest;
const template_utils_1 = require("@openapi-generator-plus/template-utils");
const java_jaxrs_generator_common_1 = require("@openapi-generator-plus/java-jaxrs-generator-common");
const java_jaxrs_server_generator_1 = require("@openapi-generator-plus/java-jaxrs-server-generator");
/** One operation's placeholder test method, its request commented out until the caller fills in real values. */
function operationTest(operation, ctx) {
const { arguments: args } = (0, java_jaxrs_generator_common_1.operationVars)(operation, { jaxrs: false, service: false }, java_jaxrs_server_generator_1.bodyParam, ctx);
const name = (0, template_utils_1.identifier)(ctx.generatorContext.generator(), operation.name);
const returnNativeType = operation.returnNativeType;
const returnAssertion = returnNativeType
? (0, template_utils_1.ts) `
// ${returnNativeType} result = response.readEntity(${returnNativeType.literalType}.class);
// assertNotNull(result);`
: template_utils_1.SKIP;
return (0, template_utils_1.ts) `
public void ${name}Test() {
// Response response = this.api.${name}(${args});
// assertNotNull(response);
${returnAssertion}
}
`;
}
/** This generator's empty-bodied API test class for `group`, wired up to run over CXF's local transport under Spring. */
function apiTest(group, ctx) {
const generator = ctx.generatorContext.generator();
const name = (0, template_utils_1.className)(generator, group.name);
const root = ctx.root;
const jx = (0, java_jaxrs_generator_common_1.javax)(root.useJakarta);
const junitVersion = root.junitVersion;
const operationsText = (0, template_utils_1.each)(group.operations, operation => operationTest(operation, ctx), '');
const staticAssertImport = junitVersion === 4
? 'import static org.junit.Assert.*;'
: 'import static org.junit.jupiter.api.Assertions.*;';
const junitImports = junitVersion === 4
? (0, template_utils_1.ts) `
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;`
: (0, template_utils_1.ts) `
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;`;
const springTestImport = junitVersion === 4
? 'import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;'
: 'import org.springframework.test.context.junit.jupiter.SpringExtension;';
const runnerAnnotation = junitVersion === 4
? '@RunWith(SpringJUnit4ClassRunner.class)'
: '@ExtendWith(SpringExtension.class)';
const setupAnnotation = junitVersion === 4 ? '@Before' : '@BeforeEach';
const destroyAnnotation = junitVersion === 4 ? '@After' : '@AfterEach';
return (0, template_utils_1.ts) `
package ${root.apiPackage};
${staticAssertImport}
import ${jx}.ws.rs.core.Response;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.spring.JAXRSServerFactoryBeanDefinitionParser.SpringJAXRSServerFactoryBean;
import org.apache.cxf.transport.local.LocalConduit;
${junitImports}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
${springTestImport}
${runnerAnnotation}
public class ${name}ApiTest {
private Server server;
private ${root.apiPackage}.${name}Api api;
private SpringJAXRSServerFactoryBean serverFactory;
${setupAnnotation}
public void setup() throws Exception {
server = serverFactory.create();
api = JAXRSClientFactory.create(TestConfiguration.ENDPOINT_ADDRESS, ${root.apiPackage}.${name}Api.class, TestConfiguration.defaultProviders());
WebClient.getConfig(api).getRequestContext().put(LocalConduit.DIRECT_DISPATCH, Boolean.TRUE);
}
${destroyAnnotation}
public void destroy() throws Exception {
server.stop();
server.destroy();
}
${operationsText}}
`;
}