Add a test that our little mini-firewall works as intended.

This commit is contained in:
2021-11-06 20:56:19 -07:00
parent 67b2acab25
commit ac11ae64a8
2 changed files with 27 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ use crate::messages::{
ServerResponseStatus,
};
use crate::network::generic::Networklike;
use async_std::io;
use futures::io::{AsyncRead, AsyncWrite};
use log::{trace, warn};
use thiserror::Error;
@@ -22,6 +23,8 @@ pub enum SOCKSv5Error {
UnsupportedAuthMethodChosen(AuthenticationMethod),
#[error("Server said no: {0}")]
ServerFailure(#[from] ServerResponseStatus),
#[error("Connection error: {0}")]
ConnectionError(#[from] io::Error),
}
pub struct SOCKSv5Client<S, N>

View File

@@ -103,4 +103,28 @@ mod test {
assert!(client.is_err());
})
}
#[test]
fn firewall_blocks() {
task::block_on(async {
let mut network_stack = TestingStack::default();
// generate the server
let mut security_parameters = SecurityParameters::unrestricted();
security_parameters.allow_connection = Some(|_, _| false);
let default_port = network_stack.listen("localhost", 9999).await.unwrap();
let server =
SOCKSv5Server::new(network_stack.clone(), security_parameters, default_port);
let _server_task = task::spawn(async move { server.run().await });
let stream = network_stack.connect("localhost", 9999).await.unwrap();
let login_info = LoginInfo {
username_password: None,
};
let client = SOCKSv5Client::new(network_stack, stream, &login_info).await;
assert!(client.is_err());
})
}
}