-
Notifications
You must be signed in to change notification settings - Fork 85
Open
Labels
type: bugSomething isn't workingSomething isn't working
Milestone
Description
In an Application
with the netty
runtime the following test passes:
package com.example
import io.micronaut.context.annotation.Property
import io.micronaut.context.annotation.Requires
import io.micronaut.http.HttpRequest
import io.micronaut.http.HttpResponse
import io.micronaut.http.HttpStatus
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Status
import io.micronaut.http.client.HttpClient
import io.micronaut.http.client.annotation.Client
import io.micronaut.test.extensions.spock.annotation.MicronautTest
import jakarta.inject.Inject
import spock.lang.Specification
@Property(name = 'spec.name', value = 'ContentTypeSpec')
@MicronautTest
class ContentTypeSpec extends Specification {
@Inject
@Client("/")
HttpClient httpClient
void "verify controllers return json by default"() {
given:
HttpRequest<?> request = HttpRequest._GET_('/json/bydefault').accept(MediaType.APPLICATION_JSON)
when:
HttpResponse<String> response = httpClient.toBlocking().exchange(request, String)
then:
HttpStatus._OK_ == response.status()
response.body.get() == '{"msg":"Hello world"}'
response.headers
"application/json" == response.headers.get("Content-Type")
}
@Controller('/json')
@Requires(property = 'spec.name', value = 'ContentTypeSpec')
static class BodyController {
@Get("/bydefault")
@Status(HttpStatus.OK)
Map<String, Object> index() {
[msg: "Hello world"]
}
}
}
However, an Application
with lambda
runtime the following tests fails:
package com.example
import com.amazonaws.serverless.proxy.internal.testutils.AwsProxyRequestBuilder
import com.amazonaws.serverless.proxy.internal.testutils.MockLambdaContext
import com.amazonaws.serverless.proxy.model.AwsProxyRequest
import com.amazonaws.serverless.proxy.model.AwsProxyResponse
import com.amazonaws.services.lambda.runtime.Context
import io.micronaut.function.aws.proxy.MicronautLambdaHandler
import io.micronaut.http.HttpHeaders
import io.micronaut.http.HttpMethod
import io.micronaut.http.HttpStatus
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Status
import spock.lang.AutoCleanup
import spock.lang.Shared
import spock.lang.Specification
class ContentTypeWithoutMicronautTestSpec extends Specification {
@Shared
@AutoCleanup
MicronautLambdaHandler handler = new MicronautLambdaHandler()
@Shared
Context lambdaContext = new MockLambdaContext()
void "verify controllers return json by default"() {
given:
AwsProxyRequest request = new AwsProxyRequestBuilder("/json/isthedefault", HttpMethod.GET.toString())
.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON)
.build()
when:
AwsProxyResponse response = handler.handleRequest(request, lambdaContext)
then:
HttpStatus._OK_.code == response.statusCode
response.body == '{"msg":"Hello world"}'
response.headers
"application/json" == response.headers.get("Content-Type")
}
@Controller('/json')
static class JsonIsTheDefaultController {
@Get("/isthedefault")
@Status(HttpStatus._OK_)
Map<String, Object> index() {
[msg: "Hello world"]
}
}
}
With headers
being null in the response.
Metadata
Metadata
Assignees
Labels
type: bugSomething isn't workingSomething isn't working