amplify-swift/AmplifyTestCommon/Mocks/MockStorageCategoryPlugin.s...

311 lines
11 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import Amplify
import Foundation
class MockStorageCategoryPlugin: MessageReporter, StorageCategoryPlugin {
func getURL(key: String,
options: StorageGetURLRequest.Options?,
resultListener: StorageGetURLOperation.ResultListener?) -> StorageGetURLOperation {
notify("getURL")
let options = options ?? StorageGetURLRequest.Options()
let request = StorageGetURLRequest(key: key, options: options)
return MockStorageGetURLOperation(request: request)
}
func downloadData(key: String,
options: StorageDownloadDataRequest.Options?,
progressListener: ProgressListener? = nil,
resultListener: StorageDownloadDataOperation.ResultListener?
) -> StorageDownloadDataOperation {
notify("downloadData")
let options = options ?? StorageDownloadDataRequest.Options()
let request = StorageDownloadDataRequest(key: key, options: options)
return MockStorageDownloadDataOperation(request: request)
}
func downloadFile(key: String,
local: URL,
options: StorageDownloadFileRequest.Options?,
progressListener: ProgressListener? = nil,
resultListener: StorageDownloadFileOperation.ResultListener?
) -> StorageDownloadFileOperation {
notify("downloadFile")
let options = options ?? StorageDownloadFileRequest.Options()
let request = StorageDownloadFileRequest(key: key, local: local, options: options)
return MockStorageDownloadFileOperation(request: request)
}
func uploadData(key: String,
data: Data,
options: StorageUploadDataRequest.Options?,
progressListener: ProgressListener? = nil,
resultListener: StorageUploadDataOperation.ResultListener?
) -> StorageUploadDataOperation {
notify("uploadData")
let options = options ?? StorageUploadDataRequest.Options()
let request = StorageUploadDataRequest(key: key, data: data, options: options)
return MockStorageUploadDataOperation(request: request)
}
func uploadFile(key: String,
local: URL,
options: StorageUploadFileRequest.Options?,
progressListener: ProgressListener? = nil,
resultListener: StorageUploadFileOperation.ResultListener?
) -> StorageUploadFileOperation {
notify("uploadFile")
let options = options ?? StorageUploadFileRequest.Options()
let request = StorageUploadFileRequest(key: key, local: local, options: options)
return MockStorageUploadFileOperation(request: request)
}
func remove(key: String,
options: StorageRemoveRequest.Options?,
resultListener: StorageRemoveOperation.ResultListener?) -> StorageRemoveOperation {
notify("remove")
let options = options ?? StorageRemoveRequest.Options()
let request = StorageRemoveRequest(key: key, options: options)
return MockStorageRemoveOperation(request: request)
}
func list(options: StorageListRequest.Options?,
resultListener: StorageListOperation.ResultListener?) -> StorageListOperation {
notify("list")
let options = options ?? StorageListRequest.Options()
let request = StorageListRequest(options: options)
return MockStorageListOperation(request: request)
}
var key: String {
return "MockStorageCategoryPlugin"
}
func configure(using configuration: Any?) throws {
notify()
}
func reset() {
notify("reset")
}
// MARK: - Async API -
@discardableResult
func getURL(key: String,
options: StorageGetURLOperation.Request.Options?) async throws -> URL {
notify("getURL")
let options = options ?? StorageGetURLRequest.Options()
let request = StorageGetURLRequest(key: key, options: options)
let operation = MockStorageGetURLOperation(request: request)
let taskAdapter = AmplifyOperationTaskAdapter(operation: operation)
return try await taskAdapter.value
}
@discardableResult
func remove(key: String,
options: StorageRemoveRequest.Options? = nil) async throws -> String {
notify("remove")
let options = options ?? StorageRemoveRequest.Options()
let request = StorageRemoveRequest(key: key, options: options)
let operation = MockStorageRemoveOperation(request: request)
let taskAdapter = AmplifyOperationTaskAdapter(operation: operation)
return try await taskAdapter.value
}
@discardableResult
func downloadData(key: String,
options: StorageDownloadDataOperation.Request.Options? = nil) -> StorageDownloadDataTask {
notify("downloadData")
let options = options ?? StorageDownloadDataRequest.Options()
let request = StorageDownloadDataRequest(key: key, options: options)
let operation = MockStorageDownloadDataOperation(request: request)
let taskAdapter = AmplifyInProcessReportingOperationTaskAdapter(operation: operation)
return taskAdapter
}
@discardableResult
func downloadFile(key: String,
local: URL,
options: StorageDownloadFileOperation.Request.Options?) -> StorageDownloadFileTask {
notify("downloadFile")
let options = options ?? StorageDownloadFileRequest.Options()
let request = StorageDownloadFileRequest(key: key, local: local, options: options)
let operation = MockStorageDownloadFileOperation(request: request)
let taskAdapter = AmplifyInProcessReportingOperationTaskAdapter(operation: operation)
return taskAdapter
}
@discardableResult
func uploadData(key: String,
data: Data,
options: StorageUploadDataOperation.Request.Options?) -> StorageUploadDataTask {
notify("uploadData")
let options = options ?? StorageUploadDataRequest.Options()
let request = StorageUploadDataRequest(key: key, data: data, options: options)
let operation = MockStorageUploadDataOperation(request: request)
let taskAdapter = AmplifyInProcessReportingOperationTaskAdapter(operation: operation)
return taskAdapter
}
@discardableResult
func uploadFile(key: String,
local: URL,
options: StorageUploadFileOperation.Request.Options?) -> StorageUploadFileTask {
notify("uploadFile")
let options = options ?? StorageUploadFileRequest.Options()
let request = StorageUploadFileRequest(key: key, local: local, options: options)
let operation = MockStorageUploadFileOperation(request: request)
let taskAdapter = AmplifyInProcessReportingOperationTaskAdapter(operation: operation)
return taskAdapter
}
@discardableResult
func list(options: StorageListOperation.Request.Options?) async throws -> StorageListResult {
notify("list")
let options = options ?? StorageListRequest.Options()
let request = StorageListRequest(options: options)
let operation = MockStorageListOperation(request: request)
let taskAdapter = AmplifyOperationTaskAdapter(operation: operation)
return try await taskAdapter.value
}
func handleBackgroundEvents(identifier: String) async -> Bool {
false
}
}
class MockSecondStorageCategoryPlugin: MockStorageCategoryPlugin {
override var key: String {
return "MockSecondStorageCategoryPlugin"
}
}
class MockStorageGetURLOperation: AmplifyOperation<StorageGetURLRequest, URL, StorageError>,
StorageGetURLOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.getURL,
request: request)
}
}
class MockStorageDownloadDataOperation: AmplifyInProcessReportingOperation<
StorageDownloadDataRequest,
Progress,
Data,
StorageError
>, StorageDownloadDataOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.downloadData,
request: request)
}
}
class MockStorageDownloadFileOperation: AmplifyInProcessReportingOperation<
StorageDownloadFileRequest,
Progress,
Void,
StorageError
>, StorageDownloadFileOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.downloadFile,
request: request)
}
}
class MockStorageUploadDataOperation: AmplifyInProcessReportingOperation<
StorageUploadDataRequest,
Progress,
String,
StorageError
>, StorageUploadDataOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.uploadData,
request: request)
}
}
class MockStorageUploadFileOperation: AmplifyInProcessReportingOperation<
StorageUploadFileRequest,
Progress,
String,
StorageError
>, StorageUploadFileOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.uploadFile,
request: request)
}
}
class MockStorageRemoveOperation: AmplifyOperation<StorageRemoveRequest, String, StorageError>,
StorageRemoveOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.remove,
request: request)
}
}
class MockStorageListOperation: AmplifyOperation<StorageListRequest, StorageListResult, StorageError>,
StorageListOperation {
override func pause() {
}
override func resume() {
}
init(request: Request) {
super.init(categoryType: .storage,
eventName: HubPayload.EventName.Storage.list,
request: request)
}
}