-
Notifications
You must be signed in to change notification settings - Fork 81
/
ConsumesSpec.groovy
59 lines (48 loc) · 1.9 KB
/
ConsumesSpec.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package io.micronaut.function.aws.proxy
import com.amazonaws.serverless.proxy.internal.testutils.AwsProxyRequestBuilder
import com.amazonaws.serverless.proxy.internal.testutils.MockLambdaContext
import com.amazonaws.services.lambda.runtime.Context
import io.micronaut.context.ApplicationContext
import io.micronaut.context.annotation.Requires
import io.micronaut.http.HttpHeaders
import io.micronaut.http.HttpMethod
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Body
import io.micronaut.http.annotation.Consumes
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Post
import spock.lang.AutoCleanup
import spock.lang.Shared
import spock.lang.Specification
class ConsumesSpec extends Specification {
@Shared @AutoCleanup MicronautLambdaContainerHandler handler = new MicronautLambdaContainerHandler(
ApplicationContext.builder().properties([
'micronaut.security.enabled': false,
'spec.name': 'ConsumesSpec'
])
)
@Shared Context lambdaContext = new MockLambdaContext()
void "test multiple consumes definition"() {
given:
AwsProxyRequestBuilder builder = new AwsProxyRequestBuilder('/consumes-test', HttpMethod.POST.toString())
builder.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
builder.body('{"name":"Fred"}')
when:
def response = handler.proxy(builder.build(), lambdaContext)
then:
response.statusCode == 200
response.body == '{"name":"Fred"}'
}
@Controller('/consumes-test')
@Requires(property = 'spec.name', value = 'ConsumesSpec')
static class ConsumesController {
@Post('/')
@Consumes([MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON])
Pojo save(@Body Pojo pojo) {
pojo
}
}
static class Pojo {
String name
}
}