// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import Foundation @testable import AWSAPIPlugin import Amplify import AWSPluginsCore import AppSyncRealTimeClient struct MockSubscriptionConnectionFactory: SubscriptionConnectionFactory { typealias OnGetOrCreateConnection = ( AWSAPICategoryPluginConfiguration.EndpointConfig, URLRequest, AWSAuthServiceBehavior, AWSAuthorizationType?, APIAuthProviderFactory ) throws -> SubscriptionConnection let onGetOrCreateConnection: OnGetOrCreateConnection init(onGetOrCreateConnection: @escaping OnGetOrCreateConnection) { self.onGetOrCreateConnection = onGetOrCreateConnection } func getOrCreateConnection( for endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig, urlRequest: URLRequest, authService: AWSAuthServiceBehavior, authType: AWSAuthorizationType?, apiAuthProviderFactory: APIAuthProviderFactory ) throws -> SubscriptionConnection { try onGetOrCreateConnection(endpointConfig, urlRequest, authService, authType, apiAuthProviderFactory) } } struct MockSubscriptionConnection: SubscriptionConnection { typealias OnSubscribe = ( String, [String: Any?]?, @escaping SubscriptionEventHandler ) -> SubscriptionItem typealias OnUnsubscribe = (SubscriptionItem) -> Void let onSubscribe: OnSubscribe let onUnsubscribe: OnUnsubscribe init(onSubscribe: @escaping OnSubscribe, onUnsubscribe: @escaping OnUnsubscribe) { self.onSubscribe = onSubscribe self.onUnsubscribe = onUnsubscribe } func subscribe( requestString: String, variables: [String: Any?]?, eventHandler: @escaping SubscriptionEventHandler ) -> SubscriptionItem { onSubscribe(requestString, variables, eventHandler) } func unsubscribe(item: SubscriptionItem) { onUnsubscribe(item) } }