diff options
| author | Joakim Hulthe <joakim.hulthe@mullvad.net> | 2024-08-20 10:40:39 +0200 |
|---|---|---|
| committer | Joakim Hulthe <joakim.hulthe@mullvad.net> | 2024-09-17 11:29:30 +0200 |
| commit | 52cc8aa95eb78917eed7e496ba213c2c6982563e (patch) | |
| tree | 5ebd9b0b476c597869b6d1f5d23717eb1e803c3f | |
| parent | e141580b842834161a362a227b59fc233b6659de (diff) | |
| download | mullvadvpn-52cc8aa95eb78917eed7e496ba213c2c6982563e.tar.xz mullvadvpn-52cc8aa95eb78917eed7e496ba213c2c6982563e.zip | |
Fix relay_selector daita tests
| -rw-r--r-- | mullvad-relay-selector/src/relay_selector/query.rs | 10 | ||||
| -rw-r--r-- | mullvad-relay-selector/tests/relay_selector.rs | 32 |
2 files changed, 41 insertions, 1 deletions
diff --git a/mullvad-relay-selector/src/relay_selector/query.rs b/mullvad-relay-selector/src/relay_selector/query.rs index cf9fc475ba..bdf6843d41 100644 --- a/mullvad-relay-selector/src/relay_selector/query.rs +++ b/mullvad-relay-selector/src/relay_selector/query.rs @@ -662,6 +662,16 @@ pub mod builder { } } + // impl-block for after DAITA is set + impl<Multihop, Obfuscation, QuantumResistant> RelayQueryBuilder<Wireguard<Multihop, Obfuscation, bool, QuantumResistant>> { + /// Enable DAITA use_anywhere. + pub fn daita_use_anywhere(mut self, constraint: impl Into<Constraint<bool>>) -> Self { + self.query.wireguard_constraints.daita_use_anywhere = constraint.into(); + self + } + } + + impl<Multihop, Obfuscation, Daita> RelayQueryBuilder<Wireguard<Multihop, Obfuscation, Daita, Any>> { /// Enable PQ support. pub fn quantum_resistant( diff --git a/mullvad-relay-selector/tests/relay_selector.rs b/mullvad-relay-selector/tests/relay_selector.rs index 1349b5af26..2ac05c8a7c 100644 --- a/mullvad-relay-selector/tests/relay_selector.rs +++ b/mullvad-relay-selector/tests/relay_selector.rs @@ -1448,7 +1448,11 @@ fn test_daita() { let relay_selector = RelaySelector::from_list(SelectorConfig::default(), RELAYS.clone()); // Only pick relays that support DAITA - let query = RelayQueryBuilder::new().wireguard().daita().build(); + let query = RelayQueryBuilder::new() + .wireguard() + .daita() + .daita_use_anywhere(false) + .build(); let relay = unwrap_entry_relay(relay_selector.get_relay_by_query(query).unwrap()); assert!( supports_daita(&relay), @@ -1459,12 +1463,36 @@ fn test_daita() { let query = RelayQueryBuilder::new() .wireguard() .daita() + .daita_use_anywhere(false) .location(NON_DAITA_RELAY_LOCATION.clone()) .build(); relay_selector .get_relay_by_query(query) .expect_err("Expected to find no matching relay"); + // Should be able to connect to non-DAITA relay with use_anywhere + let query = RelayQueryBuilder::new() + .wireguard() + .daita() + .daita_use_anywhere(true) + .location(NON_DAITA_RELAY_LOCATION.clone()) + .build(); + let relay = relay_selector + .get_relay_by_query(query) + .expect("Expected to find a relay with daita_use_anywhere"); + match relay { + GetRelay::Wireguard { + inner: WireguardConfig::Multihop { exit, entry }, + .. + } => { + assert!(supports_daita(&entry), "entry relay must support DAITA"); + assert!(!supports_daita(&exit), "exit relay must not support DAITA"); + } + wrong_relay => panic!( + "Relay selector should have picked a Wireguard relay, instead chose {wrong_relay:?}" + ), + } + // DAITA-supporting relays can be picked even when it is disabled let query = RelayQueryBuilder::new() .wireguard() @@ -1487,6 +1515,7 @@ fn test_daita() { let query = RelayQueryBuilder::new() .wireguard() .daita() + .daita_use_anywhere(false) .multihop() .build(); let relay = relay_selector.get_relay_by_query(query).unwrap(); @@ -1506,6 +1535,7 @@ fn test_daita() { let query = RelayQueryBuilder::new() .wireguard() .daita() + .daita_use_anywhere(false) .multihop() .location(NON_DAITA_RELAY_LOCATION.clone()) .build(); |
