summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-04-27 11:58:37 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-06-28 09:02:08 -0300
commitd60f943e9b3a7873654e62adc720f14dc871971a (patch)
treedd38d55fabe21ebd7dc70d129084078df37875c1
parent40f783086d11c21cf4a84fbeba6bd4338e22ee53 (diff)
downloadmullvadvpn-d60f943e9b3a7873654e62adc720f14dc871971a.tar.xz
mullvadvpn-d60f943e9b3a7873654e62adc720f14dc871971a.zip
Test disconnection
-rw-r--r--mullvad-tests/tests/connection.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/mullvad-tests/tests/connection.rs b/mullvad-tests/tests/connection.rs
index 4e548bbdde..c0d512056f 100644
--- a/mullvad-tests/tests/connection.rs
+++ b/mullvad-tests/tests/connection.rs
@@ -19,6 +19,11 @@ const OPENVPN_PLUGIN_NAME: &str = "libtalpid_openvpn_plugin.so";
#[cfg(windows)]
const OPENVPN_PLUGIN_NAME: &str = "talpid_openvpn_plugin.dll";
+const DISCONNECTED_STATE: DaemonState = DaemonState {
+ state: SecurityState::Unsecured,
+ target_state: TargetState::Unsecured,
+};
+
const CONNECTING_STATE: DaemonState = DaemonState {
state: SecurityState::Unsecured,
target_state: TargetState::Secured,
@@ -29,6 +34,11 @@ const CONNECTED_STATE: DaemonState = DaemonState {
target_state: TargetState::Secured,
};
+const DISCONNECTING_STATE: DaemonState = DaemonState {
+ state: SecurityState::Secured,
+ target_state: TargetState::Unsecured,
+};
+
#[test]
fn spawns_openvpn() {
let mut daemon = DaemonRunner::spawn();
@@ -202,6 +212,32 @@ fn returns_to_connecting_state() {
assert_eq!(rpc_client.get_state().unwrap(), CONNECTING_STATE);
}
+#[test]
+fn disconnects() {
+ let mut daemon = DaemonRunner::spawn();
+ let mut rpc_client = daemon.rpc_client().unwrap();
+ let openvpn_args_file = daemon.mock_openvpn_args_file();
+ let state_events = rpc_client.new_state_subscribe().unwrap();
+
+ rpc_client.set_account(Some("123456".to_owned())).unwrap();
+ rpc_client.connect().unwrap();
+
+ assert_state_event(&state_events, CONNECTING_STATE);
+
+ let mut mock_plugin_client = create_mock_openvpn_plugin_client(openvpn_args_file);
+
+ mock_plugin_client.authenticate().unwrap();
+ mock_plugin_client.up().unwrap();
+
+ assert_state_event(&state_events, CONNECTED_STATE);
+
+ rpc_client.disconnect().unwrap();
+
+ assert_state_event(&state_events, DISCONNECTING_STATE);
+ assert_state_event(&state_events, DISCONNECTED_STATE);
+ assert_eq!(rpc_client.get_state().unwrap(), DISCONNECTED_STATE);
+}
+
fn assert_state_event(receiver: &mpsc::Receiver<DaemonState>, expected_state: DaemonState) {
let received_state = receiver
.recv_timeout(Duration::from_secs(1))