Skip to content

Commit af5b003

Browse files
committed
Do ungodly things to make the tests pass
1 parent 3ebf0a8 commit af5b003

6 files changed

+59
-50
lines changed

Diff for: ios/MullvadRustRuntimeTests/MullvadPostQuantum+Stubs.swift

+23-14
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ class NWTCPConnectionStub: NWTCPConnection {
2727
}
2828

2929
class TunnelProviderStub: TunnelProvider {
30+
func tunnelHandle() throws -> Int32 {
31+
0
32+
}
33+
34+
func wgFuncs() -> MullvadTypes.WgFuncPointers {
35+
return MullvadTypes.WgFuncPointers(
36+
open: { _, _, _ in return 0 },
37+
close: { _, _ in return 0 },
38+
receive: { _, _, _, _ in return 0 },
39+
send: { _, _, _, _ in return 0 }
40+
)
41+
}
42+
3043
let tcpConnection: NWTCPConnectionStub
3144

3245
init(tcpConnection: NWTCPConnectionStub) {
@@ -55,15 +68,13 @@ class FailedNegotiatorStub: EphemeralPeerNegotiating {
5568
}
5669

5770
func startNegotiation(
58-
gatewayIP: IPv4Address,
5971
devicePublicKey: WireGuardKitTypes.PublicKey,
6072
presharedKey: WireGuardKitTypes.PrivateKey,
61-
peerReceiver packetTunnel: any MullvadTypes.TunnelProvider,
62-
tcpConnection: NWTCPConnection,
63-
peerExchangeTimeout: MullvadTypes.Duration,
64-
enablePostQuantum: Bool,
65-
enableDaita: Bool
66-
) -> Bool { false }
73+
peerReceiver: any MullvadTypes.TunnelProvider,
74+
ephemeralPeerParams: EphemeralPeerParameters
75+
) -> Bool {
76+
false
77+
}
6778

6879
func cancelKeyNegotiation() {
6980
onCancelKeyNegotiation?()
@@ -81,15 +92,13 @@ class SuccessfulNegotiatorStub: EphemeralPeerNegotiating {
8192
}
8293

8394
func startNegotiation(
84-
gatewayIP: IPv4Address,
8595
devicePublicKey: WireGuardKitTypes.PublicKey,
8696
presharedKey: WireGuardKitTypes.PrivateKey,
87-
peerReceiver packetTunnel: any MullvadTypes.TunnelProvider,
88-
tcpConnection: NWTCPConnection,
89-
peerExchangeTimeout: MullvadTypes.Duration,
90-
enablePostQuantum: Bool,
91-
enableDaita: Bool
92-
) -> Bool { true }
97+
peerReceiver: any MullvadTypes.TunnelProvider,
98+
ephemeralPeerParams: EphemeralPeerParameters
99+
) -> Bool {
100+
true
101+
}
93102

94103
func cancelKeyNegotiation() {
95104
onCancelKeyNegotiation?()

Diff for: ios/PacketTunnelCoreTests/EphemeralPeerExchangingPipelineTests.swift

+12-12
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ final class EphemeralPeerExchangingPipelineTests: XCTestCase {
6060
)
6161
}
6262

63-
func testSingleHopPostQuantumKeyExchange() throws {
63+
func testSingleHopPostQuantumKeyExchange() async throws {
6464
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
6565
reconfigurationExpectation.expectedFulfillmentCount = 2
6666

@@ -78,19 +78,19 @@ final class EphemeralPeerExchangingPipelineTests: XCTestCase {
7878
}
7979

8080
keyExchangeActor.delegate = KeyExchangingResultStub(onReceivePostQuantumKey: { preSharedKey, privateKey in
81-
postQuantumKeyExchangingPipeline.receivePostQuantumKey(preSharedKey, ephemeralKey: privateKey)
81+
await postQuantumKeyExchangingPipeline.receivePostQuantumKey(preSharedKey, ephemeralKey: privateKey)
8282
})
8383

8484
let connectionState = stubConnectionState(enableMultiHop: false, enablePostQuantum: true, enableDaita: false)
85-
postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
85+
await postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
8686

8787
wait(
8888
for: [reconfigurationExpectation, negotiationSuccessful],
8989
timeout: .UnitTest.invertedTimeout
9090
)
9191
}
9292

93-
func testSingleHopDaitaPeerExchange() throws {
93+
func testSingleHopDaitaPeerExchange() async throws {
9494
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
9595
reconfigurationExpectation.expectedFulfillmentCount = 2
9696

@@ -108,19 +108,19 @@ final class EphemeralPeerExchangingPipelineTests: XCTestCase {
108108
}
109109

110110
keyExchangeActor.delegate = KeyExchangingResultStub(onReceiveEphemeralPeerPrivateKey: { privateKey in
111-
postQuantumKeyExchangingPipeline.receiveEphemeralPeerPrivateKey(privateKey)
111+
await postQuantumKeyExchangingPipeline.receiveEphemeralPeerPrivateKey(privateKey)
112112
})
113113

114114
let connectionState = stubConnectionState(enableMultiHop: false, enablePostQuantum: false, enableDaita: true)
115-
postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
115+
await postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
116116

117117
wait(
118118
for: [reconfigurationExpectation, negotiationSuccessful],
119119
timeout: .UnitTest.invertedTimeout
120120
)
121121
}
122122

123-
func testMultiHopPostQuantumKeyExchange() throws {
123+
func testMultiHopPostQuantumKeyExchange() async throws {
124124
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
125125
reconfigurationExpectation.expectedFulfillmentCount = 3
126126

@@ -138,19 +138,19 @@ final class EphemeralPeerExchangingPipelineTests: XCTestCase {
138138
}
139139

140140
keyExchangeActor.delegate = KeyExchangingResultStub(onReceivePostQuantumKey: { preSharedKey, privateKey in
141-
postQuantumKeyExchangingPipeline.receivePostQuantumKey(preSharedKey, ephemeralKey: privateKey)
141+
await postQuantumKeyExchangingPipeline.receivePostQuantumKey(preSharedKey, ephemeralKey: privateKey)
142142
})
143143

144144
let connectionState = stubConnectionState(enableMultiHop: true, enablePostQuantum: true, enableDaita: false)
145-
postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
145+
await postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
146146

147147
wait(
148148
for: [reconfigurationExpectation, negotiationSuccessful],
149149
timeout: .UnitTest.invertedTimeout
150150
)
151151
}
152152

153-
func testMultiHopDaitaExchange() throws {
153+
func testMultiHopDaitaExchange() async throws {
154154
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
155155
reconfigurationExpectation.expectedFulfillmentCount = 3
156156

@@ -168,11 +168,11 @@ final class EphemeralPeerExchangingPipelineTests: XCTestCase {
168168
}
169169

170170
keyExchangeActor.delegate = KeyExchangingResultStub(onReceiveEphemeralPeerPrivateKey: { privateKey in
171-
postQuantumKeyExchangingPipeline.receiveEphemeralPeerPrivateKey(privateKey)
171+
await postQuantumKeyExchangingPipeline.receiveEphemeralPeerPrivateKey(privateKey)
172172
})
173173

174174
let connectionState = stubConnectionState(enableMultiHop: true, enablePostQuantum: false, enableDaita: true)
175-
postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
175+
await postQuantumKeyExchangingPipeline.startNegotiation(connectionState, privateKey: PrivateKey())
176176

177177
wait(
178178
for: [reconfigurationExpectation, negotiationSuccessful],

Diff for: ios/PacketTunnelCoreTests/Mocks/EphemeralPeerExchangeActorStub.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ final class EphemeralPeerExchangeActorStub: EphemeralPeerExchangeActorProtocol {
2222
switch result {
2323
case let .success((preSharedKey, ephemeralKey)):
2424
if enablePostQuantum {
25-
delegate?.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey)
25+
Task { await delegate?.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey) }
2626
} else {
27-
delegate?.receiveEphemeralPeerPrivateKey(ephemeralKey)
27+
Task { await delegate?.receiveEphemeralPeerPrivateKey(ephemeralKey) }
2828
}
2929
case .failure:
3030
delegate?.ephemeralPeerExchangeFailed()

Diff for: ios/PacketTunnelCoreTests/Mocks/KeyExchangingResultStub.swift

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212

1313
struct KeyExchangingResultStub: EphemeralPeerReceiving {
1414
var onFailure: (() -> Void)?
15-
var onReceivePostQuantumKey: ((PreSharedKey, PrivateKey) -> Void)?
16-
var onReceiveEphemeralPeerPrivateKey: ((PrivateKey) -> Void)?
15+
var onReceivePostQuantumKey: ((PreSharedKey, PrivateKey) async -> Void)?
16+
var onReceiveEphemeralPeerPrivateKey: ((PrivateKey) async -> Void)?
1717

18-
func receivePostQuantumKey(_ key: PreSharedKey, ephemeralKey: PrivateKey) {
19-
onReceivePostQuantumKey?(key, ephemeralKey)
18+
func receivePostQuantumKey(_ key: PreSharedKey, ephemeralKey: PrivateKey) async {
19+
await onReceivePostQuantumKey?(key, ephemeralKey)
2020
}
2121

22-
public func receiveEphemeralPeerPrivateKey(_ ephemeralPeerPrivateKey: PrivateKey) {
23-
onReceiveEphemeralPeerPrivateKey?(ephemeralPeerPrivateKey)
22+
public func receiveEphemeralPeerPrivateKey(_ ephemeralPeerPrivateKey: PrivateKey) async {
23+
await onReceiveEphemeralPeerPrivateKey?(ephemeralPeerPrivateKey)
2424
}
2525

2626
func ephemeralPeerExchangeFailed() {

Diff for: ios/PacketTunnelCoreTests/MultiHopEphemeralPeerExchangerTests.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ final class MultiHopEphemeralPeerExchangerTests: XCTestCase {
5959
)
6060
}
6161

62-
func testEphemeralPeerExchangeFailsWhenNegotiationCannotStart() {
62+
func testEphemeralPeerExchangeFailsWhenNegotiationCannotStart() async {
6363
let expectedNegotiationFailure = expectation(description: "Negotiation failed.")
6464

6565
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
@@ -88,15 +88,15 @@ final class MultiHopEphemeralPeerExchangerTests: XCTestCase {
8888
expectedNegotiationFailure.fulfill()
8989
}
9090

91-
multiHopExchanger.start()
91+
await multiHopExchanger.start()
9292

9393
wait(
9494
for: [expectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],
9595
timeout: .UnitTest.invertedTimeout
9696
)
9797
}
9898

99-
func testEphemeralPeerExchangeSuccessWhenPostQuantumNegotiationStarts() throws {
99+
func testEphemeralPeerExchangeSuccessWhenPostQuantumNegotiationStarts() async throws {
100100
let unexpectedNegotiationFailure = expectation(description: "Negotiation failed.")
101101
unexpectedNegotiationFailure.isInverted = true
102102

@@ -124,17 +124,17 @@ final class MultiHopEphemeralPeerExchangerTests: XCTestCase {
124124
}
125125

126126
peerExchangeActor.delegate = KeyExchangingResultStub(onReceivePostQuantumKey: { preSharedKey, ephemeralKey in
127-
multiHopPeerExchanger.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey)
127+
await multiHopPeerExchanger.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey)
128128
})
129-
multiHopPeerExchanger.start()
129+
await multiHopPeerExchanger.start()
130130

131131
wait(
132132
for: [unexpectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],
133133
timeout: .UnitTest.invertedTimeout
134134
)
135135
}
136136

137-
func testEphemeralPeerExchangeSuccessWhenDaitaNegotiationStarts() throws {
137+
func testEphemeralPeerExchangeSuccessWhenDaitaNegotiationStarts() async throws {
138138
let unexpectedNegotiationFailure = expectation(description: "Negotiation failed.")
139139
unexpectedNegotiationFailure.isInverted = true
140140

@@ -162,9 +162,9 @@ final class MultiHopEphemeralPeerExchangerTests: XCTestCase {
162162
}
163163

164164
peerExchangeActor.delegate = KeyExchangingResultStub(onReceiveEphemeralPeerPrivateKey: { ephemeralKey in
165-
multiHopPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralKey)
165+
await multiHopPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralKey)
166166
})
167-
multiHopPeerExchanger.start()
167+
await multiHopPeerExchanger.start()
168168

169169
wait(
170170
for: [unexpectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],

Diff for: ios/PacketTunnelCoreTests/SingleHopEphemeralPeerExchangerTests.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ final class SingleHopEphemeralPeerExchangerTests: XCTestCase {
3838
exitRelay = SelectedRelay(endpoint: match.endpoint, hostname: match.relay.hostname, location: match.location)
3939
}
4040

41-
func testEphemeralPeerExchangeFailsWhenNegotiationCannotStart() {
41+
func testEphemeralPeerExchangeFailsWhenNegotiationCannotStart() async {
4242
let expectedNegotiationFailure = expectation(description: "Negotiation failed.")
4343

4444
let reconfigurationExpectation = expectation(description: "Tunnel reconfiguration took place")
@@ -66,15 +66,15 @@ final class SingleHopEphemeralPeerExchangerTests: XCTestCase {
6666
expectedNegotiationFailure.fulfill()
6767
}
6868

69-
singleHopPostQuantumKeyExchanging.start()
69+
await singleHopPostQuantumKeyExchanging.start()
7070

7171
wait(
7272
for: [expectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],
7373
timeout: .UnitTest.invertedTimeout
7474
)
7575
}
7676

77-
func testEphemeralPeerExchangeSuccessWhenPostQuantumNegotiationStarts() throws {
77+
func testEphemeralPeerExchangeSuccessWhenPostQuantumNegotiationStarts() async throws {
7878
let unexpectedNegotiationFailure = expectation(description: "Negotiation failed.")
7979
unexpectedNegotiationFailure.isInverted = true
8080

@@ -101,17 +101,17 @@ final class SingleHopEphemeralPeerExchangerTests: XCTestCase {
101101
}
102102

103103
keyExchangeActor.delegate = KeyExchangingResultStub(onReceivePostQuantumKey: { preSharedKey, ephemeralKey in
104-
singleHopPostQuantumKeyExchanging.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey)
104+
await singleHopPostQuantumKeyExchanging.receivePostQuantumKey(preSharedKey, ephemeralKey: ephemeralKey)
105105
})
106-
singleHopPostQuantumKeyExchanging.start()
106+
await singleHopPostQuantumKeyExchanging.start()
107107

108108
wait(
109109
for: [unexpectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],
110110
timeout: .UnitTest.invertedTimeout
111111
)
112112
}
113113

114-
func testEphemeralPeerExchangeSuccessWhenDaitaNegotiationStarts() throws {
114+
func testEphemeralPeerExchangeSuccessWhenDaitaNegotiationStarts() async throws {
115115
let unexpectedNegotiationFailure = expectation(description: "Negotiation failed.")
116116
unexpectedNegotiationFailure.isInverted = true
117117

@@ -138,9 +138,9 @@ final class SingleHopEphemeralPeerExchangerTests: XCTestCase {
138138
}
139139

140140
peerExchangeActor.delegate = KeyExchangingResultStub(onReceiveEphemeralPeerPrivateKey: { ephemeralKey in
141-
multiHopPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralKey)
141+
await multiHopPeerExchanger.receiveEphemeralPeerPrivateKey(ephemeralKey)
142142
})
143-
multiHopPeerExchanger.start()
143+
await multiHopPeerExchanger.start()
144144

145145
wait(
146146
for: [unexpectedNegotiationFailure, reconfigurationExpectation, negotiationSuccessful],

0 commit comments

Comments
 (0)