summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-11-22 17:36:51 +0100
committerDavid Lönnhager <david.l@mullvad.net>2022-12-22 11:45:50 +0100
commit02aee35ad69bf8be0dff3cc0624e973f05cbd942 (patch)
tree0e8cea1f870d3e8fe72367732c2d2215246e0930
parentfdc49621c24dbd5cb825b571325bf6e35e967d87 (diff)
downloadmullvadvpn-02aee35ad69bf8be0dff3cc0624e973f05cbd942.tar.xz
mullvadvpn-02aee35ad69bf8be0dff3cc0624e973f05cbd942.zip
Add unit test for providers constraint
-rw-r--r--mullvad-relay-selector/src/lib.rs29
-rw-r--r--mullvad-types/src/relay_constraints.rs1
2 files changed, 27 insertions, 3 deletions
diff --git a/mullvad-relay-selector/src/lib.rs b/mullvad-relay-selector/src/lib.rs
index e880b101d1..055d5f0263 100644
--- a/mullvad-relay-selector/src/lib.rs
+++ b/mullvad-relay-selector/src/lib.rs
@@ -1268,7 +1268,7 @@ mod test {
include_in_country: true,
active: true,
owned: true,
- provider: "31173".to_string(),
+ provider: "provider0".to_string(),
weight: 1,
endpoint_data: RelayEndpointData::Wireguard(WireguardRelayEndpointData {
public_key: PublicKey::from_base64("BLNHNoGO88LjV/wDBa7CUUwUzPq/fO2UwcGLy56hKy4=").unwrap(),
@@ -1282,7 +1282,7 @@ mod test {
include_in_country: true,
active: true,
owned: false,
- provider: "31173".to_string(),
+ provider: "provider1".to_string(),
weight: 1,
endpoint_data: RelayEndpointData::Wireguard(WireguardRelayEndpointData {
public_key: PublicKey::from_base64("BLNHNoGO88LjV/wDBa7CUUwUzPq/fO2UwcGLy56hKy4=").unwrap(),
@@ -1296,7 +1296,7 @@ mod test {
include_in_country: true,
active: true,
owned: true,
- provider: "31173".to_string(),
+ provider: "provider2".to_string(),
weight: 1,
endpoint_data: RelayEndpointData::Openvpn,
location: None,
@@ -1889,6 +1889,29 @@ mod test {
}
}
+ #[test]
+ fn test_providers() {
+ const EXPECTED_PROVIDERS: [&str; 2] = ["provider0", "provider2"];
+
+ let relay_selector = new_relay_selector();
+ let mut constraints = RelayConstraints::default();
+
+ for i in 0..10 {
+ constraints.providers = Constraint::Only(
+ Providers::new(EXPECTED_PROVIDERS.into_iter().map(|p| p.to_owned())).unwrap(),
+ );
+ let relay = relay_selector
+ .get_tunnel_endpoint(&constraints, BridgeState::Auto, i, TunnelType::Wireguard)
+ .unwrap();
+ assert!(
+ EXPECTED_PROVIDERS.contains(&relay.exit_relay.provider.as_str()),
+ "cannot find provider {} in {:?}",
+ relay.exit_relay.provider,
+ EXPECTED_PROVIDERS
+ );
+ }
+ }
+
/// Ensure that `include_in_country` is ignored if all relays have it set to false (i.e., some
/// relay is returned). Also ensure that `include_in_country` is respected if some relays
/// have it set to true (i.e., that relay is never returned)
diff --git a/mullvad-types/src/relay_constraints.rs b/mullvad-types/src/relay_constraints.rs
index bf1c7c4e43..f34f9e5dd9 100644
--- a/mullvad-types/src/relay_constraints.rs
+++ b/mullvad-types/src/relay_constraints.rs
@@ -378,6 +378,7 @@ pub struct Providers {
}
/// Returned if the iterator contained no providers.
+#[derive(Debug)]
pub struct NoProviders(());
impl Providers {