From c3e13af9e3948157a2cdd6d73069bda475d0d874 Mon Sep 17 00:00:00 2001 From: Greg Heartsfield Date: Sat, 5 Aug 2023 11:16:11 -0500 Subject: [PATCH] test: wip integration test for event publishing --- config.toml | 2 +- tests/integration_test.rs | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/config.toml b/config.toml index 6a78aba..7486f10 100644 --- a/config.toml +++ b/config.toml @@ -40,7 +40,7 @@ description = "A newly created nostr-rs-relay.\n\nCustomize this with your own i # Use an in-memory database instead of 'nostr.db'. # Requires sqlite engine. # Caution; this will not survive a process restart! -#in_memory = false +in_memory = true # Database connection pool settings for subscribers: diff --git a/tests/integration_test.rs b/tests/integration_test.rs index c95b380..ebe55c3 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -1,8 +1,10 @@ use anyhow::Result; - +use futures::SinkExt; +use futures::StreamExt; use std::thread; use std::time::Duration; - +use tokio_tungstenite::connect_async; +use tracing::info; mod common; #[tokio::test] @@ -45,3 +47,33 @@ async fn relay_home_page() -> Result<()> { let _res = relay.shutdown_tx.send(()); Ok(()) } + +//#[tokio::test] +// Still inwork +async fn publish_test() -> Result<()> { + // get a relay and wait for startup + let relay = common::start_relay()?; + common::wait_for_healthy_relay(&relay).await?; + // open a non-secure websocket connection. + let (mut ws, _res) = connect_async(format!("ws://localhost:{}", relay.port)).await?; + // send a simple pre-made message + let simple_event = r#"["EVENT", {"content": "hello world","created_at": 1691239763, + "id":"f3ce6798d70e358213ebbeba4886bbdfacf1ecfd4f65ee5323ef5f404de32b86", + "kind": 1, + "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "sig": "30ca29e8581eeee75bf838171dec818af5e6de2b74f5337de940f5cc91186534c0b20d6cf7ad1043a2c51dbd60b979447720a471d346322103c83f6cb66e4e98", + "tags": []}]"#; + ws.send(simple_event.into()).await?; + // get response from server, confirm it is an array with first element "OK" + let event_confirm = ws.next().await; + ws.close(None).await?; + info!("event confirmed: {:?}", event_confirm); + // open a new connection, and wait for some time to get the event. + let (mut sub_ws, _res) = connect_async(format!("ws://localhost:{}", relay.port)).await?; + let event_sub = r#"["REQ", "simple", {}]"#; + sub_ws.send(event_sub.into()).await?; + // read from subscription + let ws_next = sub_ws.next().await; + let _res = relay.shutdown_tx.send(()); + Ok(()) +}