aefecf71d8
Replaces production-relay (wss://nos.lol, wss://nostr.bitcoiner.social) dependencies in 10 quartz JVM relay tests with a deterministic in-process Nostr relay built on top of the existing NostrServer + EventStore, plus a NIP-01 compliance suite that exercises the bridge end-to-end through NostrClient. The new :quartz-test-relay module exposes: - TestRelay / TestRelayHub: NostrServer + in-memory EventStore per URL, registry implements WebsocketBuilder so tests can drop it into NostrClient in place of BasicOkHttpWebSocket.Builder. - InProcessWebSocket: bridges the WebSocket abstraction to RelaySession with a single-coroutine drain to preserve message ordering. - SyntheticEvents / RelayFixtures: deterministic event generators and a loader for the existing nostr_vitor_*.json corpora. Found and fixed three NIP-01/NIP-45 wire-format bugs in the relay serializers that prevented round-trip through the in-tree NostrClient: - OkMessage wrote success as a JSON string instead of a boolean, causing publishAndConfirm to hang. - CountMessage dropped the queryId, breaking COUNT response routing. - CountResult used the field name "pubkey" instead of "approximate". Both Jackson and kotlinx-serialization paths were affected; both fixed to match NIP-01/NIP-45 wire formats.
36 lines
767 B
Kotlin
36 lines
767 B
Kotlin
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
|
|
|
plugins {
|
|
alias(libs.plugins.jetbrainsKotlinJvm)
|
|
}
|
|
|
|
kotlin {
|
|
jvmToolchain(21)
|
|
compilerOptions {
|
|
jvmTarget.set(JvmTarget.JVM_21)
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
kotlin.srcDir("src/main/kotlin")
|
|
}
|
|
test {
|
|
kotlin.srcDir("src/test/kotlin")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
api(project(":quartz"))
|
|
|
|
implementation(libs.kotlinx.coroutines.core)
|
|
implementation(libs.jackson.module.kotlin)
|
|
|
|
// Bundled SQLite driver — EventStore(null) creates an in-memory DB at runtime.
|
|
implementation(libs.androidx.sqlite.bundled.jvm)
|
|
|
|
testImplementation(libs.kotlin.test)
|
|
testImplementation(libs.kotlinx.coroutines.test)
|
|
testImplementation(libs.secp256k1.kmp.jni.jvm)
|
|
}
|