diff --git a/Packages/App/Sources/CommonLibrary/Business/ExtendedTunnel.swift b/Packages/App/Sources/CommonLibrary/Business/ExtendedTunnel.swift index 711d3ac9..44258a96 100644 --- a/Packages/App/Sources/CommonLibrary/Business/ExtendedTunnel.swift +++ b/Packages/App/Sources/CommonLibrary/Business/ExtendedTunnel.swift @@ -219,10 +219,15 @@ extension TunnelStatus { func withEnvironment(_ environment: TunnelEnvironment) -> TunnelStatus { var status = self if status == .active, let connectionStatus = environment.environmentValue(forKey: TunnelEnvironmentKeys.connectionStatus) { - if connectionStatus == .connected { - status = .active - } else { + switch connectionStatus { + case .connecting: status = .activating + case .connected: + status = .active + case .disconnecting: + status = .deactivating + case .disconnected: + status = .inactive } } return status diff --git a/Packages/App/Tests/CommonLibraryTests/Business/ExtendedTunnelTests.swift b/Packages/App/Tests/CommonLibraryTests/Business/ExtendedTunnelTests.swift index cf2d0cad..c9591dd8 100644 --- a/Packages/App/Tests/CommonLibraryTests/Business/ExtendedTunnelTests.swift +++ b/Packages/App/Tests/CommonLibraryTests/Business/ExtendedTunnelTests.swift @@ -151,12 +151,19 @@ extension ExtendedTunnelTests { env.setEnvironmentValue(ConnectionStatus.connected, forKey: key) XCTAssertEqual(tunnelActive.withEnvironment(env), .active) allConnectionStatuses - .filter { - $0 != .connected - } .forEach { env.setEnvironmentValue($0, forKey: key) - XCTAssertEqual(tunnelActive.withEnvironment(env), .activating) + let statusWithEnv = tunnelActive.withEnvironment(env) + switch $0 { + case .connecting: + XCTAssertEqual(statusWithEnv, .activating) + case .connected: + XCTAssertEqual(statusWithEnv, .active) + case .disconnecting: + XCTAssertEqual(statusWithEnv, .deactivating) + case .disconnected: + XCTAssertEqual(statusWithEnv, .inactive) + } } // unaffected otherwise