Skip to content

Commit

Permalink
Add coverage for "method not registered" error in native mode
Browse files Browse the repository at this point in the history
  • Loading branch information
fedinskiy authored and rsvoboda committed Dec 19, 2024
1 parent 4fd8b77 commit cf3b304
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package io.quarkus.ts.http.minimum.reactive;

import java.io.IOException;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.ext.Provider;
import jakarta.ws.rs.ext.ReaderInterceptor;
import jakarta.ws.rs.ext.ReaderInterceptorContext;

import org.jboss.logging.Logger;

@Provider
@ApplicationScoped
public class JakartaRestInterceptor implements ReaderInterceptor {

private static final Logger LOG = Logger.getLogger(JakartaRestInterceptor.class);

@Override
public Object aroundReadFrom(ReaderInterceptorContext context)
throws IOException, WebApplicationException {
LOG.info("Before reading " + context.getGenericType());
Object entity = context.proceed();
LOG.info("After reading " + entity);
return entity;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

package io.quarkus.ts.http.minimum.reactive;

public class Operator {
private String name;

public Operator() {
this.name = null;
}

public Operator(String name) {
this.name = name;
}

public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.quarkus.ts.http.minimum.reactive;

import jakarta.interceptor.Interceptors;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;

import io.smallrye.mutiny.Uni;

@Path("/operator")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Interceptors({ JakartaRestInterceptor.class })
public class OperatorResource {

@POST
public Uni<Response> postOperator(Operator operator) {
return Uni.createFrom().item(Response.status(Response.Status.OK)
.entity("Hello " + operator.getName()).build());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,28 @@
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.util.List;

import jakarta.ws.rs.core.MediaType;

import org.apache.http.HttpStatus;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

import io.quarkus.test.bootstrap.RestService;
import io.quarkus.test.scenarios.QuarkusScenario;
import io.quarkus.test.services.QuarkusApplication;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;

@QuarkusScenario
public class HttpMinimumReactiveIT {

private RequestSpecification HTTP_CLIENT_SPEC = given();
@QuarkusApplication
static RestService app = new RestService();

@Test
public void httpServer() {
Expand Down Expand Up @@ -78,7 +86,28 @@ public void shortRecordReturnedDirectly() {
.body("data", is("ok"));
}

@Test
@Tag("https://github.com/quarkusio/quarkus/issues/44564")
void interceptedMethodFound() {
Response operator = givenSpec()
.when()
.contentType(ContentType.JSON)
.body(new Operator("operator"))
.post("/api/operator");

assertEquals(200, operator.statusCode(), "Intercepted request was not processed");
assertEquals("Hello operator", operator.body().asString(), "Intercepted request was not processed properly");
List<String> logs = app.getLogs();
boolean startFlag = false;
boolean endFlag = false;
for (String line : logs) {
startFlag = startFlag || line.contains("Before reading ");
endFlag = endFlag || line.contains("After reading ");
}
assertTrue(startFlag && endFlag, "The message was not intercepted, full logs: " + logs);
}

protected RequestSpecification givenSpec() {
return HTTP_CLIENT_SPEC;
return app.given();
}
}

0 comments on commit cf3b304

Please sign in to comment.