Fix crash on escaped type in erlang-server handler (#20735)

This commit is contained in:
Sergey Yelin 2025-02-26 11:34:37 +03:00 committed by GitHub
parent 32573f7464
commit c529b16600
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 2 deletions

View File

@ -91,7 +91,7 @@ is_authorized(Req, State) ->
{{#consumes.size}}
{[
{{#consumes}}
{<<"{{mediaType}}">>, handle_type_accepted}{{^-last}}{{#consumes.size}},{{/consumes.size}}{{/-last}}
{<<"{{{mediaType}}}">>, handle_type_accepted}{{^-last}}{{#consumes.size}},{{/consumes.size}}{{/-last}}
{{/consumes}}
], Req, State};
{{/consumes.size}}
@ -114,7 +114,7 @@ is_authorized(Req, State) ->
{{#produces.size}}
{[
{{#produces}}
{<<"{{mediaType}}">>, handle_type_provided}{{^-last}}{{#produces.size}},{{/produces.size}}{{/-last}}
{<<"{{{mediaType}}}">>, handle_type_provided}{{^-last}}{{#produces.size}},{{/produces.size}}{{/-last}}
{{/produces}}
], Req, State};
{{/produces.size}}

View File

@ -0,0 +1,39 @@
package org.openapitools.codegen.erlang;
import org.openapitools.codegen.ClientOptInput;
import org.openapitools.codegen.DefaultGenerator;
import org.openapitools.codegen.config.CodegenConfigurator;
import org.testng.annotations.Test;
import java.io.File;
import java.nio.file.Path;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.openapitools.codegen.TestUtils.newTempFolder;
public class ErlangServerCodegenTest {
@Test
public void testCharsetInContentTypeCorrectlyEncodedForErlangServer() {
final Path output = newTempFolder();
final CodegenConfigurator configurator = new CodegenConfigurator()
.setGeneratorName("erlang-server")
.setInputSpec("src/test/resources/3_0/issue_19895.yaml")
.setOutputDir(output.toString().replace("\\", "/"));
final ClientOptInput clientOptInput = configurator.toClientOptInput();
DefaultGenerator generator = new DefaultGenerator();
List<File> files = generator.opts(clientOptInput).generate();
var defaultApiFile = output.resolve("src/openapi_default_handler.erl");
assertThat(files).contains(defaultApiFile.toFile());
assertThat(defaultApiFile).content()
.doesNotContain(
"application/json;charset&#x3D;utf-8")
.contains(
"application/json;charset=utf-8"
);
}
}