amplify-swift/AmplifyPlugins/API/AWSAPICategoryPluginTests/AWSAPICategoryPluginTestBas...

84 lines
2.7 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
import Foundation
@testable import Amplify
@testable import AmplifyTestCommon
@testable import AWSAPICategoryPlugin
import AWSPluginsCore
class AWSAPICategoryPluginTestBase: XCTestCase {
var apiPlugin: AWSAPIPlugin!
var authService: MockAWSAuthService!
var pluginConfig: AWSAPICategoryPluginConfiguration!
let apiName = "apiName"
let baseURL = URL(fileURLWithPath: "path")
let region = "us-east-1".aws_regionTypeValue()
let testDocument = "query { getTodo { id name description }}"
let testVariables = ["id": 123]
let testBody = Data()
let testPath = "testPath"
override func setUp() {
Amplify.reset()
wait(for: 1)
apiPlugin = AWSAPIPlugin()
let authService = MockAWSAuthService()
let apiAuthProvider = APIAuthProviderFactory()
self.authService = authService
do {
let endpointConfig = [apiName: try AWSAPICategoryPluginConfiguration.EndpointConfig(
name: apiName,
baseURL: baseURL,
region: region,
authorizationType: AWSAuthorizationType.none,
endpointType: .graphQL,
apiAuthProviderFactory: apiAuthProvider)]
let interceptors = [apiName: AWSAPIEndpointInterceptors(
endpointName: apiName,
apiAuthProviderFactory: apiAuthProvider)]
let pluginConfig = AWSAPICategoryPluginConfiguration(endpoints: endpointConfig,
interceptors: interceptors)
self.pluginConfig = pluginConfig
let dependencies = AWSAPIPlugin.ConfigurationDependencies(
pluginConfig: pluginConfig,
authService: authService,
subscriptionConnectionFactory: AWSSubscriptionConnectionFactory(),
logLevel: .error
)
apiPlugin.configure(using: dependencies)
} catch {
XCTFail("Failed to create endpoint config")
}
let config = AmplifyConfiguration()
do {
try Amplify.configure(config)
} catch {
XCTFail("Error setting up Amplify: \(error)")
}
}
private func wait(for duration: TimeInterval) {
let expectation = expectation(description: "Sleep for \(duration) seconds")
DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: DispatchTime.now() + duration) {
expectation.fulfill()
}
wait(for: [expectation], timeout: duration + 0.5)
}
}