// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // /* import Foundation @testable import AWSS3StoragePlugin import AWSS3 public class MockAWSS3TransferUtility: AWSS3TransferUtilityBehavior { public var errorOnContinuation: NSError? public var errorOnCompletion: NSError? private(set) public var downloadDataCalled = 0 private(set) public var downloadToURLCalled = 0 private(set) public var uploadDataCalled = 0 private(set) public var uploadFileCalled = 0 private(set) public var multiPartUploadFileCalled = 0 private(set) public var multiPartUploadDataCalled = 0 public func downloadData(fromBucket: String, key: String, expression: AWSS3TransferUtilityDownloadExpression, completionHandler: (AWSS3TransferUtilityDownloadCompletionHandlerBlock)?) -> AWSTask { downloadDataCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = MockTransferUtilityDownloadTask() let url = URL(fileURLWithPath: "path") let response = HTTPURLResponse(url: url, statusCode: 200, httpVersion: nil, headerFields: nil) task.response = response if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, nil, nil, error) } else { completionHandler(task, nil, Data(), nil) } } let result = AWSTask.init(result: task) return result } public func download(to fileURL: URL, bucket: String, key: String, expression: AWSS3TransferUtilityDownloadExpression, completionHandler: AWSS3TransferUtilityDownloadCompletionHandlerBlock?) -> AWSTask { downloadToURLCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = AWSS3TransferUtilityDownloadTask() if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, nil, nil, error) } else { completionHandler(task, nil, Data(), nil) } } let result = AWSTask.init(result: task) return result } // swiftlint:disable function_parameter_count public func uploadData(data: Data, bucket: String, key: String, contentType: String, expression: AWSS3TransferUtilityUploadExpression, completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?) -> AWSTask { uploadDataCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = AWSS3TransferUtilityUploadTask() if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, error) } else { completionHandler(task, nil) } } let result = AWSTask.init(result: task) return result } public func uploadFile(fileURL: URL, bucket: String, key: String, contentType: String, expression: AWSS3TransferUtilityUploadExpression, completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?) -> AWSTask { uploadFileCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = AWSS3TransferUtilityUploadTask() if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, error) } else { completionHandler(task, nil) } } let result = AWSTask.init(result: task) return result } public func uploadUsingMultiPart(fileURL: URL, bucket: String, key: String, contentType: String, expression: AWSS3TransferUtilityMultiPartUploadExpression, completionHandler: AWSS3TransferUtilityMultiPartUploadCompletionHandlerBlock?) -> AWSTask { multiPartUploadFileCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = AWSS3TransferUtilityMultiPartUploadTask() if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, error) } else { completionHandler(task, nil) } } let result = AWSTask.init(result: task) return result } public func uploadUsingMultiPart(data: Data, bucket: String, key: String, contentType: String, expression: AWSS3TransferUtilityMultiPartUploadExpression, completionHandler: AWSS3TransferUtilityMultiPartUploadCompletionHandlerBlock?) -> AWSTask { multiPartUploadDataCalled += 1 if let error = errorOnContinuation { let resultWithError = AWSTask.init(error: error) return resultWithError } let task = AWSS3TransferUtilityMultiPartUploadTask() if let progressBlock = expression.progressBlock { progressBlock(task, Progress()) } if let completionHandler = completionHandler { if let error = errorOnCompletion { completionHandler(task, error) } else { completionHandler(task, nil) } } let result = AWSTask.init(result: task) return result } } class MockTransferUtilityDownloadTask: AWSS3TransferUtilityDownloadTask { var mockResponse: HTTPURLResponse? override var response: HTTPURLResponse? { get { return mockResponse } set { mockResponse = newValue } } } */