diff options
| -rw-r--r-- | mullvad-tests/tests/connection.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mullvad-tests/tests/connection.rs b/mullvad-tests/tests/connection.rs index 217e67f05a..6ae8fca6b1 100644 --- a/mullvad-tests/tests/connection.rs +++ b/mullvad-tests/tests/connection.rs @@ -1,10 +1,20 @@ #![cfg(target_os = "linux")] +extern crate mullvad_ipc_client; extern crate mullvad_tests; +extern crate mullvad_types; +use std::sync::mpsc; use std::time::Duration; +use mullvad_ipc_client::DaemonRpcClient; use mullvad_tests::{wait_for_file_write_finish, DaemonRunner}; +use mullvad_types::states::{DaemonState, SecurityState, TargetState}; + +const CONNECTING_STATE: DaemonState = DaemonState { + state: SecurityState::Unsecured, + target_state: TargetState::Secured, +}; #[test] fn spawns_openvpn() { @@ -21,3 +31,24 @@ fn spawns_openvpn() { assert!(openvpn_args_file.exists()); } + +#[test] +fn changes_to_connecting_state() { + let mut daemon = DaemonRunner::spawn(); + let mut rpc_client = daemon.rpc_client().unwrap(); + 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); + assert_eq!(rpc_client.get_state().unwrap(), CONNECTING_STATE); +} + +fn assert_state_event(receiver: mpsc::Receiver<DaemonState>, expected_state: DaemonState) { + let received_state = receiver + .recv_timeout(Duration::from_secs(1)) + .expect("Failed to receive new state event from daemon"); + + assert_eq!(received_state, expected_state); +} |
