diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-04-27 11:58:37 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-06-28 09:02:08 -0300 |
| commit | d60f943e9b3a7873654e62adc720f14dc871971a (patch) | |
| tree | dd38d55fabe21ebd7dc70d129084078df37875c1 | |
| parent | 40f783086d11c21cf4a84fbeba6bd4338e22ee53 (diff) | |
| download | mullvadvpn-d60f943e9b3a7873654e62adc720f14dc871971a.tar.xz mullvadvpn-d60f943e9b3a7873654e62adc720f14dc871971a.zip | |
Test disconnection
| -rw-r--r-- | mullvad-tests/tests/connection.rs | 36 |
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)) |
