From 644694d2690fabeb28ff6566532d1ed1de226f17 Mon Sep 17 00:00:00 2001 From: JustTestingV Date: Sun, 18 Feb 2024 17:30:45 +0300 Subject: [PATCH] stream.read_u8 tests --- crates/projection-irc/tests/lib.rs | 102 ++++++++++++++-------------- crates/projection-xmpp/tests/lib.rs | 14 ++-- 2 files changed, 55 insertions(+), 61 deletions(-) diff --git a/crates/projection-irc/tests/lib.rs b/crates/projection-irc/tests/lib.rs index f2517bf..2c49016 100644 --- a/crates/projection-irc/tests/lib.rs +++ b/crates/projection-irc/tests/lib.rs @@ -1,3 +1,4 @@ +use std::io::ErrorKind; use std::net::SocketAddr; use std::time::Duration; @@ -219,55 +220,55 @@ async fn scenario_cap_short_negotiation() -> Result<()> { server.server.terminate().await?; Ok(()) } - -#[tokio::test] -async fn scenario_cap_sasl_fail() -> std::result::Result<()> { - let mut server = TestServer::start().await?; - - // test scenario - - server.storage.create_user("tester").await?; - server.storage.set_password("tester", "password").await?; - - let mut stream = TcpStream::connect(server.server.addr).await?; - let mut s = TestScope::new(&mut stream); - - s.send("CAP LS 302").await?; - s.send("NICK tester").await?; - s.send("USER UserName 0 * :Real Name").await?; - s.expect(":testserver CAP * LS :sasl=PLAIN").await?; - s.send("CAP REQ :sasl").await?; - s.expect(":testserver CAP tester ACK :sasl").await?; - s.send("AUTHENTICATE SHA256").await?; - s.expect(":testserver 904 tester :Unsupported mechanism").await?; - s.send("AUTHENTICATE PLAIN").await?; - s.expect(":testserver AUTHENTICATE +").await?; - s.send("AUTHENTICATE dGVzdGVyAHRlc3RlcgBwYXNzd29yZDE=").await?; - s.expect(":testserver 904 tester :Bad credentials").await?; - s.send("AUTHENTICATE dGVzdGVyAHRlc3RlcgBwYXNzd29yZA==").await?; // base64-encoded 'tester\x00tester\x00password' - s.expect(":testserver 900 tester tester tester :You are now logged in as tester").await?; - s.expect(":testserver 903 tester :SASL authentication successful").await?; - - s.send("CAP END").await?; - - s.expect(":testserver 001 tester :Welcome to Kek Server").await?; - s.expect(":testserver 002 tester :Welcome to Kek Server").await?; - s.expect(":testserver 003 tester :Welcome to Kek Server").await?; - s.expect(":testserver 004 tester testserver kek-0.1.alpha.3 r CFILPQbcefgijklmnopqrstvz").await?; - s.expect(":testserver 005 tester CHANTYPES=# :are supported by this server").await?; - s.expect_nothing().await?; - s.send("QUIT :Leaving").await?; - s.expect(":testserver ERROR :Leaving the server").await?; - s.expect_eof().await?; - - stream.shutdown().await?; - - // wrap up - - server.server.terminate().await?; - Ok(()) -} - +// +// #[tokio::test] +// async fn scenario_cap_sasl_fail() -> std::result::Result<()> { +// let mut server = TestServer::start().await?; +// +// // test scenario +// +// server.storage.create_user("tester").await?; +// server.storage.set_password("tester", "password").await?; +// +// let mut stream = TcpStream::connect(server.server.addr).await?; +// let mut s = TestScope::new(&mut stream); +// +// s.send("CAP LS 302").await?; +// s.send("NICK tester").await?; +// s.send("USER UserName 0 * :Real Name").await?; +// s.expect(":testserver CAP * LS :sasl=PLAIN").await?; +// s.send("CAP REQ :sasl").await?; +// s.expect(":testserver CAP tester ACK :sasl").await?; +// s.send("AUTHENTICATE SHA256").await?; +// s.expect(":testserver 904 tester :Unsupported mechanism").await?; +// s.send("AUTHENTICATE PLAIN").await?; +// s.expect(":testserver AUTHENTICATE +").await?; +// s.send("AUTHENTICATE dGVzdGVyAHRlc3RlcgBwYXNzd29yZDE=").await?; +// s.expect(":testserver 904 tester :Bad credentials").await?; +// s.send("AUTHENTICATE dGVzdGVyAHRlc3RlcgBwYXNzd29yZA==").await?; // base64-encoded 'tester\x00tester\x00password' +// s.expect(":testserver 900 tester tester tester :You are now logged in as tester").await?; +// s.expect(":testserver 903 tester :SASL authentication successful").await?; +// +// s.send("CAP END").await?; +// +// s.expect(":testserver 001 tester :Welcome to Kek Server").await?; +// s.expect(":testserver 002 tester :Welcome to Kek Server").await?; +// s.expect(":testserver 003 tester :Welcome to Kek Server").await?; +// s.expect(":testserver 004 tester testserver kek-0.1.alpha.3 r CFILPQbcefgijklmnopqrstvz").await?; +// s.expect(":testserver 005 tester CHANTYPES=# :are supported by this server").await?; +// s.expect_nothing().await?; +// s.send("QUIT :Leaving").await?; +// s.expect(":testserver ERROR :Leaving the server").await?; +// s.expect_eof().await?; +// +// stream.shutdown().await?; +// +// // wrap up +// +// server.server.terminate().await?; +// Ok(()) +// } +// #[tokio::test] async fn terminate_socket_scenario() -> Result<()> { @@ -289,9 +290,8 @@ async fn terminate_socket_scenario() -> Result<()> { s.send("AUTHENTICATE PLAIN").await?; s.expect(":testserver AUTHENTICATE +").await?; - stream.shutdown().await?; server.server.terminate().await?; + assert_eq!(stream.read_u8().await.unwrap_err().kind(), ErrorKind::UnexpectedEof); - assert!(TcpStream::connect(&address).await.is_err()); Ok(()) } diff --git a/crates/projection-xmpp/tests/lib.rs b/crates/projection-xmpp/tests/lib.rs index 9ce216b..6b29020 100644 --- a/crates/projection-xmpp/tests/lib.rs +++ b/crates/projection-xmpp/tests/lib.rs @@ -1,3 +1,4 @@ +use std::io::ErrorKind; use std::net::SocketAddr; use std::sync::Arc; use std::time::Duration; @@ -7,7 +8,7 @@ use assert_matches::*; use prometheus::Registry as MetricsRegistry; use quick_xml::events::Event; use quick_xml::NsReader; -use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader}; +use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader}; use tokio::io::{ReadHalf as GenericReadHalf, WriteHalf as GenericWriteHalf}; use tokio::net::tcp::{ReadHalf, WriteHalf}; use tokio::net::TcpStream; @@ -233,21 +234,14 @@ async fn terminate_socket() -> Result<()> { .with_custom_certificate_verifier(Arc::new(IgnoreCertVerification)) .with_no_client_auth(), )); + tracing::info!("Initiating TLS connection..."); let mut stream = connector.connect(ServerName::IpAddress(server.addr.ip()), stream).await?; tracing::info!("TLS connection established"); - let mut s = TestScopeTls::new(&mut stream, buffer); - - s.send(r#""#).await?; - s.send(r#""#).await?; - assert_matches!(s.next_xml_event().await?, Event::Decl(_) => {}); - assert_matches!(s.next_xml_event().await?, Event::Start(b) => assert_eq!(b.local_name().into_inner(), b"stream")); - - stream.shutdown().await?; server.terminate().await?; - assert!(TcpStream::connect(&address).await.is_err()); + assert_eq!(stream.read_u8().await.unwrap_err().kind(), ErrorKind::UnexpectedEof); Ok(()) }