// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import XCTest import Amplify @testable import AWSS3StoragePlugin class StorageDownloadDataRequestTests: XCTestCase { let testTargetIdentityId = "TestTargetIdentityId" let testKey = "TestKey" let testPluginOptions: Any? = [:] func testValidateSuccess() { let options = StorageDownloadDataRequest.Options(accessLevel: .protected, targetIdentityId: testTargetIdentityId, pluginOptions: testPluginOptions) let request = StorageDownloadDataRequest(key: testKey, options: options) let storageErrorOptional = request.validate() XCTAssertNil(storageErrorOptional) } func testValidateEmptyTargetIdentityIdError() { let options = StorageDownloadDataRequest.Options(accessLevel: .protected, targetIdentityId: "", pluginOptions: testPluginOptions) let request = StorageDownloadDataRequest(key: testKey, options: options) let storageErrorOptional = request.validate() guard let error = storageErrorOptional else { XCTFail("Missing StorageError") return } guard case .validation(let field, let description, let recovery, _) = error else { XCTFail("Error does not match validation error") return } XCTAssertEqual(field, StorageErrorConstants.identityIdIsEmpty.field) XCTAssertEqual(description, StorageErrorConstants.identityIdIsEmpty.errorDescription) XCTAssertEqual(recovery, StorageErrorConstants.identityIdIsEmpty.recoverySuggestion) } func testValidateTargetIdentityIdWithPrivateAccessLevelError() { let options = StorageDownloadDataRequest.Options(accessLevel: .private, targetIdentityId: testTargetIdentityId, pluginOptions: testPluginOptions) let request = StorageDownloadDataRequest(key: testKey, options: options) let storageErrorOptional = request.validate() guard let error = storageErrorOptional else { XCTFail("Missing StorageError") return } guard case .validation(let field, let description, let recovery, _) = error else { XCTFail("Error does not match validation error") return } XCTAssertEqual(field, StorageErrorConstants.invalidAccessLevelWithTarget.field) XCTAssertEqual(description, StorageErrorConstants.invalidAccessLevelWithTarget.errorDescription) XCTAssertEqual(recovery, StorageErrorConstants.invalidAccessLevelWithTarget.recoverySuggestion) } func testValidateKeyIsEmptyError() { let options = StorageDownloadDataRequest.Options(accessLevel: .protected, targetIdentityId: testTargetIdentityId, pluginOptions: testPluginOptions) let request = StorageDownloadDataRequest(key: "", options: options) let storageErrorOptional = request.validate() guard let error = storageErrorOptional else { XCTFail("Missing StorageError") return } guard case .validation(let field, let description, let recovery, _) = error else { XCTFail("Error does not match validation error") return } XCTAssertEqual(field, StorageErrorConstants.keyIsEmpty.field) XCTAssertEqual(description, StorageErrorConstants.keyIsEmpty.errorDescription) XCTAssertEqual(recovery, StorageErrorConstants.keyIsEmpty.recoverySuggestion) } }