forked from lavina/lavina
				
			irc: sasl
This commit is contained in:
		
							parent
							
								
									85fa607e16
								
							
						
					
					
						commit
						550c8b74b2
					
				|  | @ -127,3 +127,49 @@ async fn scenario_basic() -> Result<()> { | |||
|     server.server.terminate().await?; | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| #[tokio::test] | ||||
| #[ignore] | ||||
| async fn scenario_cap_negotiation() -> 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=PLAIN").await?; | ||||
|     s.send("AUTHENTICATE PLAIN").await?; | ||||
|     s.expect("AUTHENTICATE +").await?; | ||||
|     s.send("AUTHENTICATE dGVzdGVyAHRlc3RlcgBwYXNzd29yZA==").await?; // base64-encoded 'tester\x00tester\x00password'
 | ||||
|     s.expect(":testserver 900 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 NOTICE * :Welcome to my server!").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(()) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue