element-ios/Riot/Modules/Rendezvous/MockRendezvousTransport.swift

53 lines
1.3 KiB
Swift

//
// Copyright 2022-2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only
// Please see LICENSE in the repository root for full details.
//
import Foundation
class MockRendezvousTransport: RendezvousTransportProtocol {
var rendezvousURL: URL?
private var currentPayload: Data?
func create<T: Encodable>(body: T) async -> Result<(), RendezvousTransportError> {
guard let url = URL(string: "rendezvous.mock/1234") else {
fatalError()
}
rendezvousURL = url
guard let encodedBody = try? JSONEncoder().encode(body) else {
fatalError()
}
currentPayload = encodedBody
return .success(())
}
func get() async -> Result<Data, RendezvousTransportError> {
guard let data = currentPayload else {
fatalError()
}
return .success(data)
}
func send<T: Encodable>(body: T) async -> Result<(), RendezvousTransportError> {
guard let encodedBody = try? JSONEncoder().encode(body) else {
fatalError()
}
currentPayload = encodedBody
return .success(())
}
func tearDown() async -> Result<(), RendezvousTransportError> {
return .success(())
}
}