Skip to content

Commit

Permalink
Add test coverage for the issue quarkusio/quarkus#43825
Browse files Browse the repository at this point in the history
Ensure the missing servlet class in web.xml is ignored

Test coverage for quarkusio/quarkus#44063 scenario

(cherry picked from commit 49f299a)
  • Loading branch information
jcarranzan authored and jedla97 committed Nov 28, 2024
1 parent c01e5f7 commit 5c24349
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package io.quarkus.ts.http.undertow;

import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

import io.quarkus.test.bootstrap.RestService;
import io.quarkus.test.bootstrap.Service;
import io.quarkus.test.scenarios.QuarkusScenario;
import io.quarkus.test.services.QuarkusApplication;

@QuarkusScenario
public class UndertowMissingServletClassIT {
@QuarkusApplication(builder = WithMissingServlet.class)
static RestService app = new RestService()
.setAutoStart(false);

@Tag("https://github.com/quarkusio/quarkus/issues/44063")
@Test
void verifyUndertowIgnoreServletClassMissing() {
assertDoesNotThrow(() -> app.start(),
"The app should start without any issue");
app.logs().assertDoesNotContain("Local name must not be null");
}

public static void replaceForInvalidXML(Service service) {
if (service instanceof RestService) {
RestService restService = (RestService) service;
Path invalidWebXml = Path.of("src/test/resources/META-INF/invalid-web.xml");

Path targetWebXml = restService.getServiceFolder().resolve("META-INF/web.xml");
try {
Files.createDirectories(targetWebXml.getParent());
Files.copy(invalidWebXml, targetWebXml, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
throw new RuntimeException("Failed to replace web.xml with invalid version", e);
}
} else {
throw new IllegalArgumentException("Service is not an instance of RestService");
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package io.quarkus.ts.http.undertow;

import static io.quarkus.ts.http.undertow.UndertowMissingServletClassIT.replaceForInvalidXML;

import java.lang.annotation.Annotation;

import io.quarkus.test.services.quarkus.ProdQuarkusApplicationManagedResourceBuilder;
import io.quarkus.test.utils.ClassPathUtils;

public class WithMissingServlet extends ProdQuarkusApplicationManagedResourceBuilder {

@Override
protected void copyResourcesToAppFolder() {
super.copyResourcesToAppFolder();
replaceForInvalidXML(getContext().getOwner());
}

/**
* It was suggested here: https://github.com/quarkus-qe/quarkus-test-suite/pull/2218#issuecomment-2504972950,
* and slightly different from main because there it's used TF version 1.6.z and for 3.15 we use 1.5.z
*/
@Override
public void init(Annotation annotation) {
super.init(annotation);
initAppClasses(ClassPathUtils.findAllClassesFromSource());
}
}
10 changes: 10 additions & 0 deletions http/servlet-undertow/src/test/resources/META-INF/invalid-web.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>InvalidServlet</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>InvalidServlet</servlet-name>
<url-pattern>/invalid</url-pattern>
</servlet-mapping>
</web-app>

0 comments on commit 5c24349

Please sign in to comment.