amplify-swift/AmplifyPlugins/Storage/Tests/AWSS3StoragePluginTests/Request/AWSS3StorageGetURLRequestTe...

127 lines
5.1 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
import Amplify
@testable import AWSS3StoragePlugin
class StorageGetURLRequestTests: XCTestCase {
let testTargetIdentityId = "TestTargetIdentityId"
let testKey = "TestKey"
let testPluginOptions: Any? = [:]
let testExpires = 10
func testValidateSuccess() {
let options = StorageGetURLRequest.Options(accessLevel: .protected,
targetIdentityId: testTargetIdentityId,
expires: testExpires,
pluginOptions: testPluginOptions)
let request = StorageGetURLRequest(key: testKey, options: options)
let storageErrorOptional = request.validate()
XCTAssertNil(storageErrorOptional)
}
func testValidateEmptyTargetIdentityIdError() {
let options = StorageGetURLRequest.Options(accessLevel: .protected,
targetIdentityId: "",
expires: testExpires,
pluginOptions: testPluginOptions)
let request = StorageGetURLRequest(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 = StorageGetURLRequest.Options(accessLevel: .private,
targetIdentityId: testTargetIdentityId,
expires: testExpires,
pluginOptions: testPluginOptions)
let request = StorageGetURLRequest(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 = StorageGetURLRequest.Options(accessLevel: .protected,
targetIdentityId: testTargetIdentityId,
expires: testExpires,
pluginOptions: testPluginOptions)
let request = StorageGetURLRequest(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)
}
func testValidateURLNonPositiveExpiresError() {
let options = StorageGetURLRequest.Options(accessLevel: .protected,
targetIdentityId: testTargetIdentityId,
expires: -1,
pluginOptions: testPluginOptions)
let request = StorageGetURLRequest(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.expiresIsInvalid.field)
XCTAssertEqual(description, StorageErrorConstants.expiresIsInvalid.errorDescription)
XCTAssertEqual(recovery, StorageErrorConstants.expiresIsInvalid.recoverySuggestion)
}
}