tests: better gateway auth test
This commit is contained in:
parent
6f9ed86a4c
commit
f7a2285dd5
|
@ -1,10 +1,12 @@
|
|||
mod common;
|
||||
|
||||
use std::sync::{Arc, RwLock};
|
||||
use std::time::Duration;
|
||||
|
||||
use async_trait::async_trait;
|
||||
use chorus::errors::GatewayError;
|
||||
use chorus::gateway::*;
|
||||
use chorus::types::{self, ChannelModifySchema, RoleCreateModifySchema, RoleObject};
|
||||
use chorus::types::{self, ChannelModifySchema, GatewayReady, RoleCreateModifySchema, RoleObject};
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasm_bindgen_test::*;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
|
@ -20,6 +22,18 @@ async fn test_gateway_establish() {
|
|||
common::teardown(bundle).await
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct GatewayReadyObserver {
|
||||
channel: tokio::sync::mpsc::Sender<()>,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Observer<GatewayReady> for GatewayReadyObserver {
|
||||
async fn update(&self, _data: &GatewayReady) {
|
||||
self.channel.send(()).await.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||
#[cfg_attr(not(target_arch = "wasm32"), tokio::test)]
|
||||
/// Tests establishing a connection and authenticating
|
||||
|
@ -28,10 +42,35 @@ async fn test_gateway_authenticate() {
|
|||
|
||||
let gateway: GatewayHandle = Gateway::spawn(bundle.urls.wss.clone()).await.unwrap();
|
||||
|
||||
let (ready_send, mut ready_receive) = tokio::sync::mpsc::channel(1);
|
||||
|
||||
let observer = Arc::new(GatewayReadyObserver {
|
||||
channel: ready_send,
|
||||
});
|
||||
|
||||
gateway
|
||||
.events
|
||||
.lock()
|
||||
.await
|
||||
.session
|
||||
.ready
|
||||
.subscribe(observer);
|
||||
|
||||
let mut identify = types::GatewayIdentifyPayload::common();
|
||||
identify.token = bundle.user.token.clone();
|
||||
|
||||
gateway.send_identify(identify).await;
|
||||
|
||||
tokio::select! {
|
||||
// Fail, we timed out waiting for it
|
||||
() = safina_timer::sleep_for(Duration::from_secs(20)) => {
|
||||
println!("Timed out waiting for event, failing..");
|
||||
assert!(false);
|
||||
}
|
||||
// Sucess, we have received it
|
||||
Some(_) = ready_receive.recv() => {}
|
||||
};
|
||||
|
||||
common::teardown(bundle).await
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue