Skip to content

Commit 99ca5cf

Browse files
committed
Binder should use the posix regex when calling Service.addIncludeNamespace.
1 parent 51f990c commit 99ca5cf

File tree

2 files changed

+47
-1
lines changed
  • reactive/core/src
    • main/kotlin/com/caplin/integration/datasourcex/reactive/core
    • test/kotlin/com/caplin/integration/datasourcex/reactive/core

2 files changed

+47
-1
lines changed

reactive/core/src/main/kotlin/com/caplin/integration/datasourcex/reactive/core/Binder.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import com.caplin.integration.datasourcex.reactive.api.PathVariablesChannelSuppl
3838
import com.caplin.integration.datasourcex.reactive.api.RecordType
3939
import com.caplin.integration.datasourcex.reactive.api.ServiceConfig
4040
import com.caplin.integration.datasourcex.util.AntPatternNamespace
41+
import com.caplin.integration.datasourcex.util.AntPatternNamespace.Companion.addIncludeNamespace
4142
import com.caplin.integration.datasourcex.util.getLogger
4243
import java.util.concurrent.ConcurrentHashMap
4344
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -712,7 +713,7 @@ private constructor(val dataSource: ScopedDataSource, private val serviceInfo: S
712713
val (fromPattern, toPattern) = antPatternNamespace.getObjectMap(mappings)
713714
service.addObjectMap(fromPattern, toPattern)
714715
}
715-
service.addIncludePattern(antPatternNamespace.pattern)
716+
service.addIncludeNamespace(antPatternNamespace)
716717
}
717718

718719
private fun ServiceInfo.finalise(dataSource: DataSource) {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.caplin.integration.datasourcex.reactive.core
2+
3+
import com.caplin.datasource.Service
4+
import com.caplin.datasource.internal.ServiceImpl
5+
import com.caplin.datasource.publisher.CachingPublisher
6+
import com.caplin.integration.datasourcex.reactive.api.ServiceConfig
7+
import com.caplin.integration.datasourcex.util.AntPatternNamespace
8+
import io.kotest.core.spec.style.FunSpec
9+
import io.mockk.Runs
10+
import io.mockk.every
11+
import io.mockk.just
12+
import io.mockk.mockk
13+
import io.mockk.mockkConstructor
14+
import io.mockk.slot
15+
import io.mockk.verify
16+
import kotlinx.coroutines.flow.flowOf
17+
18+
class BinderTest :
19+
FunSpec({
20+
test("Ant namespace binding to a service") {
21+
mockkConstructor(ServiceImpl::class)
22+
23+
val publisher = mockk<CachingPublisher>()
24+
val mockDataSource =
25+
mockk<ScopedDataSource> {
26+
every { configuration } returns
27+
mockk { every { getStringValue("datasrc-local-label") } returns "local-label" }
28+
every { createService(any()) } just Runs
29+
every { createCachingPublisher(any(), any()) } returns publisher
30+
}
31+
val binder = Binder(mockDataSource)
32+
33+
val namespace = AntPatternNamespace("/PRIVATE/{username}/{param}")
34+
binder.withServiceConfig(ServiceConfig("abc")) {
35+
it.bindActiveRecord({}, namespace, { flowOf(mapOf()) })
36+
}
37+
38+
val service = slot<Service>()
39+
verify { mockDataSource.createService(capture(service)) }
40+
41+
verify {
42+
(service.captured as ServiceImpl).addIncludePattern("^\\/PRIVATE\\/[^/]*\\/[^/]*$")
43+
}
44+
}
45+
})

0 commit comments

Comments
 (0)