Skip to content

Commit 781484c

Browse files
committed
Improve IntegrationTests
Signed-off-by: Dmitry Sulman <[email protected]>
1 parent 0027f2d commit 781484c

File tree

1 file changed

+30
-15
lines changed
  • logback-access-reactor-netty/src/test/kotlin/io/github/dmitrysulman/logback/access/reactor/netty/integration

1 file changed

+30
-15
lines changed

logback-access-reactor-netty/src/test/kotlin/io/github/dmitrysulman/logback/access/reactor/netty/integration/IntegrationTests.kt

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.github.dmitrysulman.logback.access.reactor.netty.integration
22

33
import ch.qos.logback.access.common.joran.JoranConfigurator
44
import ch.qos.logback.access.common.spi.IAccessEvent
5+
import ch.qos.logback.core.spi.FilterReply
56
import io.github.dmitrysulman.logback.access.reactor.netty.ReactorNettyAccessLogFactory
67
import io.github.dmitrysulman.logback.access.reactor.netty.enableLogbackAccess
78
import io.kotest.assertions.nondeterministic.continually
@@ -25,6 +26,9 @@ import kotlinx.coroutines.runBlocking
2526
import org.junit.jupiter.api.AfterEach
2627
import org.junit.jupiter.api.BeforeEach
2728
import 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
2832
import reactor.core.publisher.Mono
2933
import reactor.netty.DisposableServer
3034
import 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

Comments
 (0)