amplify-swift/AmplifyPlugins/API/Tests/AWSAPIPluginTests/Mocks/MockURLSession.swift

38 lines
1.0 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import Foundation
@testable import AWSAPIPlugin
@testable import Amplify
class MockURLSession: URLSessionBehavior {
weak var sessionBehaviorDelegate: URLSessionBehaviorDelegate?
static let defaultOnReset: ((BasicClosure?) -> Void) = { $0?() }
var onTaskForRequest: (URLRequest) -> URLSessionDataTaskBehavior
var onReset: ((BasicClosure?) -> Void)?
init(onTaskForRequest: @escaping (URLRequest) -> URLSessionDataTaskBehavior,
onReset: ((BasicClosure?) -> Void)? = MockURLSession.defaultOnReset) {
self.onTaskForRequest = onTaskForRequest
self.onReset = onReset
}
func dataTaskBehavior(with request: URLRequest) -> URLSessionDataTaskBehavior {
let task = onTaskForRequest(request)
if let mockTask = task as? MockURLSessionTask {
mockTask.mockSession = self
}
return task
}
func cancelAndReset() {
// do nothing
}
}