TM-SGNL-iOS/SignalServiceKit/Network/SgxWebsocketConnection/Mocks/MockSgxWebsocketConnectionFactory.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

32 lines
1.1 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
#if TESTABLE_BUILD
public class MockSgxWebsocketConnectionFactory: SgxWebsocketConnectionFactory {
private var onConnectAndPerformHandshakeHandlers = [String: ((Any) -> Promise<Any>)]()
public func setOnConnectAndPerformHandshake<Configurator: SgxWebsocketConfigurator>(
_ block: @escaping (Configurator) -> Promise<SgxWebsocketConnection<Configurator>>
) {
let key = String(describing: Configurator.self)
self.onConnectAndPerformHandshakeHandlers[key] = {
return block($0 as! Configurator).map(on: SyncScheduler()) { $0 }
}
}
public func connectAndPerformHandshake<Configurator: SgxWebsocketConfigurator>(
configurator: Configurator,
on scheduler: Scheduler
) -> Promise<SgxWebsocketConnection<Configurator>> {
let key = String(describing: Configurator.self)
return onConnectAndPerformHandshakeHandlers[key]!(configurator).map(on: scheduler) { $0 as! SgxWebsocketConnection<Configurator> }
}
}
#endif