test: wip integration test for event publishing

This commit is contained in:
Greg Heartsfield 2023-08-05 11:16:11 -05:00
parent 05f70112e8
commit c3e13af9e3
2 changed files with 35 additions and 3 deletions

View File

@ -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'. # Use an in-memory database instead of 'nostr.db'.
# Requires sqlite engine. # Requires sqlite engine.
# Caution; this will not survive a process restart! # Caution; this will not survive a process restart!
#in_memory = false in_memory = true
# Database connection pool settings for subscribers: # Database connection pool settings for subscribers:

View File

@ -1,8 +1,10 @@
use anyhow::Result; use anyhow::Result;
use futures::SinkExt;
use futures::StreamExt;
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
use tokio_tungstenite::connect_async;
use tracing::info;
mod common; mod common;
#[tokio::test] #[tokio::test]
@ -45,3 +47,33 @@ async fn relay_home_page() -> Result<()> {
let _res = relay.shutdown_tx.send(()); let _res = relay.shutdown_tx.send(());
Ok(()) 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(())
}