doxy/Test/Sources/Helpers/Mocks/FileProviderMock.swift

56 lines
1.2 KiB
Swift

import Foundation
import Hummingbird
struct FileProviderMock {
// MARK: Properties
private var attributes: [String: Data] = [:]
private var identifiers: [String] = []
// MARK: Functions
mutating func setFile(identifier: String) {
identifiers += [identifier]
attributes[identifier] = identifier.data(using: .utf8)
}
}
// MARK: - FileProvider
extension FileProviderMock: FileProvider {
// MARK: Type aliases
typealias FileAttributes = Data
typealias FileIdentifier = String
// MARK: Functions
func getFileIdentifier(_ path: String) -> String? {
identifiers.first { $0 == path }
}
func getAttributes(id: String) async throws -> Data? {
attributes[id]
}
func loadFile(id: String, context: some RequestContext) async throws -> ResponseBody {
guard let fileData = attributes[id] else {
throw HTTPError(.notFound)
}
return .init(byteBuffer: .init(data: fileData))
}
func loadFile(
id: String,
range: ClosedRange<Int>,
context: some RequestContext
) async throws -> ResponseBody {
try await loadFile(id: id, context: context)
}
}