@@ -2,6 +2,7 @@ package io.github.dmitrysulman.logback.access.reactor.netty.integration
22
33import ch.qos.logback.access.common.joran.JoranConfigurator
44import ch.qos.logback.access.common.spi.IAccessEvent
5+ import ch.qos.logback.core.spi.FilterReply
56import io.github.dmitrysulman.logback.access.reactor.netty.ReactorNettyAccessLogFactory
67import io.github.dmitrysulman.logback.access.reactor.netty.enableLogbackAccess
78import io.kotest.assertions.nondeterministic.continually
@@ -25,6 +26,9 @@ import kotlinx.coroutines.runBlocking
2526import org.junit.jupiter.api.AfterEach
2627import org.junit.jupiter.api.BeforeEach
2728import org.junit.jupiter.api.Test
29+ import org.junit.jupiter.params.ParameterizedTest
30+ import org.junit.jupiter.params.provider.EnumSource
31+ import org.junit.jupiter.params.provider.ValueSource
2832import reactor.core.publisher.Mono
2933import reactor.netty.DisposableServer
3034import reactor.netty.http.client.HttpClient
@@ -48,16 +52,25 @@ class IntegrationTests {
4852 server.disposeNow()
4953 }
5054
51- @Test
52- fun `test basic request` (): Unit =
55+ @ParameterizedTest
56+ @ValueSource(
57+ strings = [
58+ " /" ,
59+ " /test" ,
60+ " /test?name=value" ,
61+ " /test?name1=value1&name2=value2" ,
62+ " /test?name=v%20alue%21%40%23%24%25%5E%26%2A%28%29%3D%2B" ,
63+ ],
64+ )
65+ fun `test basic requests` (uri : String ): Unit =
5366 runBlocking {
5467 val accessLogFactory =
5568 ReactorNettyAccessLogFactory (" logback-access-stdout.xml" , JoranConfigurator (), true )
5669
5770 val eventCaptureAppender = accessLogFactory.accessContext.getAppender(" CAPTURE" ) as EventCaptureAppender
5871 server = createServer(accessLogFactory, " mock response" )
5972 client = createClient()
60- val response = performGetRequest(" /test?name=value " ).awaitSingleOrNull()
73+ val response = performGetRequest(uri ).awaitSingleOrNull()
6174 response.shouldNotBeNull()
6275 response.status().code() shouldBe 200
6376
@@ -70,7 +83,7 @@ class IntegrationTests {
7083 }
7184
7285 @Test
73- fun `test filter` (): Unit =
86+ fun `test filter deny ` (): Unit =
7487 runBlocking {
7588 val accessLogFactory =
7689 ReactorNettyAccessLogFactory (" logback-access-filter.xml" , JoranConfigurator (), true )
@@ -86,8 +99,20 @@ class IntegrationTests {
8699 continually(1 .seconds) {
87100 eventCaptureAppender.list.shouldBeEmpty()
88101 }
102+ }
103+
104+ @ParameterizedTest
105+ @EnumSource(value = FilterReply ::class , names = [" DENY" ], mode = EnumSource .Mode .EXCLUDE )
106+ fun `test filter allow` (filterReply : FilterReply ): Unit =
107+ runBlocking {
108+ val accessLogFactory =
109+ ReactorNettyAccessLogFactory (" logback-access-filter.xml" , JoranConfigurator (), true )
110+
111+ val eventCaptureAppender = accessLogFactory.accessContext.getAppender(" CAPTURE" ) as EventCaptureAppender
112+ server = createServer(accessLogFactory, " mock response" )
113+ client = createClient()
89114
90- val responseAccept = performGetRequest(" /test?filter=accept " ).awaitSingleOrNull()
115+ val responseAccept = performGetRequest(" /test?filter=${filterReply.name} " ).awaitSingleOrNull()
91116 responseAccept.shouldNotBeNull()
92117 responseAccept.status().code() shouldBe 200
93118
@@ -96,16 +121,6 @@ class IntegrationTests {
96121 val accessEvent = eventCaptureAppender.list[0 ]
97122 assertAccessEvent(accessEvent, responseAccept)
98123 }
99-
100- val responseNeutral = performGetRequest(" /test?filter=neutral" ).awaitSingleOrNull()
101- responseNeutral.shouldNotBeNull()
102- responseNeutral.status().code() shouldBe 200
103-
104- eventually(1 .seconds) {
105- eventCaptureAppender.list.size shouldBe 2
106- val accessEvent = eventCaptureAppender.list[1 ]
107- assertAccessEvent(accessEvent, responseNeutral)
108- }
109124 }
110125
111126 @Test
0 commit comments