From 352e8dcd794ff151a91fe256e1e8d1ac5a6a082f Mon Sep 17 00:00:00 2001 From: Yosuke Matsuda Date: Wed, 8 Jul 2015 17:46:44 -0700 Subject: [PATCH] The AWS Mobile SDK for iOS 2.2.1. --- .gitignore | 2 + AWSAPIGateway.podspec | 19 + AWSAPIGateway.xcodeproj/project.pbxproj | 408 ++++++ .../contents.xcworkspacedata | 7 + AWSAPIGateway/AWSAPIGateway.h | 18 + AWSAPIGateway/AWSAPIGatewayClient.h | 26 + AWSAPIGateway/AWSAPIGatewayClient.m | 263 ++++ AWSAPIGatewayTests/Info.plist | 24 + AWSAutoScaling.podspec | 4 +- AWSAutoScaling.xcodeproj/project.pbxproj | 161 ++- .../xcschemes/AWSAutoScaling.xcscheme | 124 ++ AWSAutoScaling/AWSAutoScalingService.m | 1 - AWSAutoScalingTests/AWSAutoScalingTests.m | 1 + .../AWSGeneralAutoScalingTests.m | 324 ++++- AWSCloudWatch.podspec | 4 +- AWSCloudWatch.xcodeproj/project.pbxproj | 161 ++- .../xcschemes/AWSCloudWatch.xcscheme | 124 ++ AWSCloudWatch/AWSCloudWatchService.m | 1 - AWSCloudWatchTests/AWSCloudWatchTests.m | 1 + .../AWSGeneralCloudWatchTests.m | 86 +- AWSCore.podspec | 3 +- AWSCore.xcodeproj/project.pbxproj | 233 +++- .../xcshareddata/xcschemes/AWSCore.xcscheme | 148 ++ .../xcschemes/Documentation.xcscheme | 77 ++ AWSCore/Authentication/AWSSignature.m | 4 +- .../AWSCognitoIdentityService.m | 3 +- AWSCore/Mantle/extobjc/AWSEXTKeyPathCoding.h | 2 +- AWSCore/Networking/AWSNetworking.m | 2 +- AWSCore/STS/AWSSTSService.m | 1 - .../AWSURLRequestSerialization.m | 3 +- AWSCore/Service/AWSService.h | 4 + AWSCore/Service/AWSService.m | 269 ++-- AWSCore/Service/AWSServiceEnum.h | 1 + AWSCoreTests/AWSGeneralCognitoIdentityTests.m | 128 +- AWSCoreTests/AWSGeneralSTSTests.m | 51 +- AWSCoreTests/AWSServiceTests.m | 2 +- AWSCoreTests/AWSTestUtility.h | 1 + AWSCoreTests/AWSTestUtility.m | 11 + AWSCoreTests/AWSUtilityTests.m | 60 - .../NSNotificationCenter+OCMAdditions.h | 26 + .../OCMock}/OCMock/OCMArg.h | 23 +- AWSCoreTests/OCMock/OCMock/OCMConstraint.h | 71 + AWSCoreTests/OCMock/OCMock/OCMLocation.h | 36 + AWSCoreTests/OCMock/OCMock/OCMMacroState.h | 45 + AWSCoreTests/OCMock/OCMock/OCMRecorder.h | 39 + AWSCoreTests/OCMock/OCMock/OCMStubRecorder.h | 56 + AWSCoreTests/OCMock/OCMock/OCMock.h | 84 ++ AWSCoreTests/OCMock/OCMock/OCMockObject.h | 74 + AWSCoreTests/OCMock/libOCMock.a | Bin 0 -> 2071640 bytes AWSDynamoDB.podspec | 4 +- AWSDynamoDB.xcodeproj/project.pbxproj | 163 ++- .../xcschemes/AWSDynamoDB.xcscheme | 124 ++ AWSDynamoDB/AWSDynamoDBService.m | 4 +- AWSDynamoDBTests/AWSGeneralDynamoDBTests.m | 100 +- AWSEC2.podspec | 4 +- AWSEC2.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSEC2.xcscheme | 124 ++ AWSEC2/AWSEC2Service.m | 1 - AWSEC2Tests/AWSEC2Tests.m | 1 + AWSEC2Tests/AWSGeneralEC2Tests.m | 1219 ++++++++++++++++- AWSElasticLoadBalancing.podspec | 4 +- .../project.pbxproj | 161 ++- .../AWSElasticLoadBalancing.xcscheme | 124 ++ .../AWSElasticLoadBalancingService.m | 1 - .../AWSElasticLoadBalancingTests.m | 1 + .../AWSGeneralElasticLoadBalancingTests.m | 205 ++- AWSKinesis.podspec | 4 +- AWSKinesis.xcodeproj/project.pbxproj | 167 ++- .../xcschemes/AWSKinesis.xcscheme | 124 ++ AWSKinesis/AWSKinesisService.m | 9 +- AWSKinesisTests/AWSGeneralKinesisTests.m | 100 +- AWSKinesisTests/AWSKinesisRecorderTests.m | 1 + AWSKinesisTests/AWSKinesisTests.m | 10 +- AWSLambda.podspec | 4 +- AWSLambda.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSLambda.xcscheme | 124 ++ AWSLambda/AWSLambdaService.m | 4 +- AWSLambdaTests/AWSGeneralLambdaTests.m | 128 +- AWSMachineLearning.podspec | 4 +- AWSMachineLearning.xcodeproj/project.pbxproj | 161 ++- .../xcschemes/AWSMachineLearning.xcscheme | 124 ++ .../AWSMachineLearningService.m | 5 +- .../AWSGeneralMachineLearningTests.m | 23 +- AWSMobileAnalytics.podspec | 4 +- AWSMobileAnalytics.xcodeproj/project.pbxproj | 223 ++- .../contents.xcworkspacedata | 7 + .../xcschemes/AWSMobileAnalytics.xcscheme | 148 ++ .../AWSMobileAnalyticsERSService.m | 3 +- .../AIDeliveryIntegrationTests.m | 98 +- .../AIMonetizationEventBuilderTests.m | 5 +- .../AISessionClientTests.m | 2 +- .../AISubmissionTimePolicyTests.m | 2 +- AWSMobileAnalyticsTests/AWSAnalyticsTests.m | 61 +- .../AWSGeneralMobileAnalyticsERSTests.m | 16 +- .../AWSMobileAnalyticsERSTests.m | 1 + .../AmazonInsightsSDKTests.h | 2 +- .../NSNotificationCenter+OCMAdditions.h | 15 - .../usr/include/OCMock/OCMConstraint.h | 64 - .../usr/include/OCMock/OCMock.h | 10 - .../usr/include/OCMock/OCMockObject.h | 46 - .../usr/include/OCMock/OCMockRecorder.h | 38 - AWSMobileAnalyticsTests/usr/lib/libOCMock.a | Bin 1738764 -> 0 bytes AWSS3.podspec | 4 +- AWSS3.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSS3.xcscheme | 124 ++ AWSS3/AWSS3Service.m | 3 - AWSS3Tests/AWSGeneralS3Tests.m | 352 ++++- AWSS3Tests/AWSS3Tests.m | 20 + AWSSES.podspec | 4 +- AWSSES.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSSES.xcscheme | 124 ++ AWSSES/AWSSESService.m | 1 - AWSSESTests/AWSGeneralSESTests.m | 135 +- AWSSESTests/AWSSESTests.m | 1 + AWSSNS.podspec | 4 +- AWSSNS.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSSNS.xcscheme | 124 ++ AWSSNS/AWSSNSService.m | 1 - AWSSNSTests/AWSGeneralSNSTests.m | 184 ++- AWSSNSTests/AWSSNSTests.m | 1 + AWSSQS.podspec | 4 +- AWSSQS.xcodeproj/project.pbxproj | 161 ++- .../xcshareddata/xcschemes/AWSSQS.xcscheme | 124 ++ AWSSQS/AWSSQSService.m | 1 - AWSSQSTests/AWSGeneralSQSTests.m | 121 +- AWSSimpleDB.podspec | 4 +- AWSSimpleDB.xcodeproj/project.pbxproj | 161 ++- .../xcschemes/AWSSimpleDB.xcscheme | 124 ++ AWSSimpleDB/AWSSimpleDBService.m | 1 - AWSSimpleDBTests/AWSGeneralSimpleDBTests.m | 79 +- AWSSimpleDBTests/AWSSimpleDBTests.m | 1 + AWSiOSSDKv2.podspec | 28 +- .../contents.xcworkspacedata | 3 + Scripts/GenerateAppleDocs.sh | 19 +- Scripts/Package.sh | 2 +- Scripts/SdkPackage.sh | 16 +- include/AWSCore/AWSUICKeyChainStore.h | 1 + include/AWSCore/MobileAnalytics.h | 1 - 138 files changed, 9107 insertions(+), 824 deletions(-) create mode 100644 AWSAPIGateway.podspec create mode 100644 AWSAPIGateway.xcodeproj/project.pbxproj create mode 100644 AWSAPIGateway.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 AWSAPIGateway/AWSAPIGateway.h create mode 100755 AWSAPIGateway/AWSAPIGatewayClient.h create mode 100755 AWSAPIGateway/AWSAPIGatewayClient.m create mode 100644 AWSAPIGatewayTests/Info.plist create mode 100644 AWSAutoScaling.xcodeproj/xcshareddata/xcschemes/AWSAutoScaling.xcscheme create mode 100644 AWSCloudWatch.xcodeproj/xcshareddata/xcschemes/AWSCloudWatch.xcscheme create mode 100644 AWSCore.xcodeproj/xcshareddata/xcschemes/AWSCore.xcscheme create mode 100644 AWSCore.xcodeproj/xcshareddata/xcschemes/Documentation.xcscheme create mode 100644 AWSCoreTests/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h rename {AWSMobileAnalyticsTests/usr/include => AWSCoreTests/OCMock}/OCMock/OCMArg.h (55%) create mode 100644 AWSCoreTests/OCMock/OCMock/OCMConstraint.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMLocation.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMMacroState.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMRecorder.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMStubRecorder.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMock.h create mode 100644 AWSCoreTests/OCMock/OCMock/OCMockObject.h create mode 100644 AWSCoreTests/OCMock/libOCMock.a create mode 100644 AWSDynamoDB.xcodeproj/xcshareddata/xcschemes/AWSDynamoDB.xcscheme create mode 100644 AWSEC2.xcodeproj/xcshareddata/xcschemes/AWSEC2.xcscheme create mode 100644 AWSElasticLoadBalancing.xcodeproj/xcshareddata/xcschemes/AWSElasticLoadBalancing.xcscheme create mode 100644 AWSKinesis.xcodeproj/xcshareddata/xcschemes/AWSKinesis.xcscheme create mode 100644 AWSLambda.xcodeproj/xcshareddata/xcschemes/AWSLambda.xcscheme create mode 100644 AWSMachineLearning.xcodeproj/xcshareddata/xcschemes/AWSMachineLearning.xcscheme create mode 100644 AWSMobileAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 AWSMobileAnalytics.xcodeproj/xcshareddata/xcschemes/AWSMobileAnalytics.xcscheme delete mode 100644 AWSMobileAnalyticsTests/usr/include/OCMock/NSNotificationCenter+OCMAdditions.h delete mode 100644 AWSMobileAnalyticsTests/usr/include/OCMock/OCMConstraint.h delete mode 100644 AWSMobileAnalyticsTests/usr/include/OCMock/OCMock.h delete mode 100644 AWSMobileAnalyticsTests/usr/include/OCMock/OCMockObject.h delete mode 100644 AWSMobileAnalyticsTests/usr/include/OCMock/OCMockRecorder.h delete mode 100644 AWSMobileAnalyticsTests/usr/lib/libOCMock.a create mode 100644 AWSS3.xcodeproj/xcshareddata/xcschemes/AWSS3.xcscheme create mode 100644 AWSSES.xcodeproj/xcshareddata/xcschemes/AWSSES.xcscheme create mode 100644 AWSSNS.xcodeproj/xcshareddata/xcschemes/AWSSNS.xcscheme create mode 100644 AWSSQS.xcodeproj/xcshareddata/xcschemes/AWSSQS.xcscheme create mode 100644 AWSSimpleDB.xcodeproj/xcshareddata/xcschemes/AWSSimpleDB.xcscheme mode change 100755 => 100644 Scripts/GenerateAppleDocs.sh mode change 100755 => 100644 Scripts/Package.sh mode change 100755 => 100644 Scripts/SdkPackage.sh create mode 120000 include/AWSCore/AWSUICKeyChainStore.h delete mode 120000 include/AWSCore/MobileAnalytics.h diff --git a/.gitignore b/.gitignore index df92d300d24..bcfb2681a3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # OS generated files # ###################### +.COMPONENT_CACHED .DS_Store .DS_Store? ._* @@ -25,6 +26,7 @@ xcuserdata # Built assets # ###################### build +builtFramework AWS*.framework # Stuff that can't be committed # diff --git a/AWSAPIGateway.podspec b/AWSAPIGateway.podspec new file mode 100644 index 00000000000..65bd224c5e4 --- /dev/null +++ b/AWSAPIGateway.podspec @@ -0,0 +1,19 @@ +Pod::Spec.new do |s| + + s.name = 'AWSAPIGateway' + s.version = '2.2.1' + s.summary = 'Amazon Web Services SDK for iOS.' + + s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' + + s.homepage = 'http://aws.amazon.com/sdkforios' + s.license = 'Apache License, Version 2.0' + s.author = { 'Amazon Web Services' => 'amazonwebservices' } + s.platform = :ios, '7.0' + s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', + :tag => s.version} + s.requires_arc = true + s.dependency 'AWSCore', '2.2.1' + + s.source_files = 'AWSAPIGateway/*.{h,m}' +end diff --git a/AWSAPIGateway.xcodeproj/project.pbxproj b/AWSAPIGateway.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5d8b96dce1d --- /dev/null +++ b/AWSAPIGateway.xcodeproj/project.pbxproj @@ -0,0 +1,408 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + CE6BC1131B4A440C002E2414 /* libAWSAPIGateway.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6BC1071B4A440B002E2414 /* libAWSAPIGateway.a */; }; + CE6BC12C1B4A447D002E2414 /* AWSAPIGatewayClient.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6BC12B1B4A447D002E2414 /* AWSAPIGatewayClient.m */; }; + CEB2AE911B4B3A7300F32474 /* AWSAPIGateway.h in Headers */ = {isa = PBXBuildFile; fileRef = CEB2AE8F1B4B067800F32474 /* AWSAPIGateway.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEB2AE921B4B3A7300F32474 /* AWSAPIGatewayClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CE6BC12A1B4A447D002E2414 /* AWSAPIGatewayClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEB2AE931B4B3A7A00F32474 /* AWSAPIGateway.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEB2AE8F1B4B067800F32474 /* AWSAPIGateway.h */; }; + CEB2AE941B4B3A7A00F32474 /* AWSAPIGatewayClient.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE6BC12A1B4A447D002E2414 /* AWSAPIGatewayClient.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + CE6BC1141B4A440C002E2414 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE6BC0FF1B4A440B002E2414 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE6BC1061B4A440B002E2414; + remoteInfo = AWSAPIGateway; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + CE6BC1051B4A440B002E2414 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + CEB2AE931B4B3A7A00F32474 /* AWSAPIGateway.h in CopyFiles */, + CEB2AE941B4B3A7A00F32474 /* AWSAPIGatewayClient.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + CE6BC1071B4A440B002E2414 /* libAWSAPIGateway.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSAPIGateway.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CE6BC1121B4A440C002E2414 /* AWSAPIGatewayTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSAPIGatewayTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + CE6BC1181B4A440C002E2414 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CE6BC12A1B4A447D002E2414 /* AWSAPIGatewayClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSAPIGatewayClient.h; sourceTree = ""; }; + CE6BC12B1B4A447D002E2414 /* AWSAPIGatewayClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSAPIGatewayClient.m; sourceTree = ""; }; + CEB2AE8F1B4B067800F32474 /* AWSAPIGateway.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWSAPIGateway.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + CE6BC1041B4A440B002E2414 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CE6BC10F1B4A440C002E2414 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CE6BC1131B4A440C002E2414 /* libAWSAPIGateway.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + CE6BC0FE1B4A440B002E2414 = { + isa = PBXGroup; + children = ( + CE6BC1091B4A440B002E2414 /* AWSAPIGateway */, + CE6BC1161B4A440C002E2414 /* AWSAPIGatewayTests */, + CE6BC1081B4A440B002E2414 /* Products */, + ); + sourceTree = ""; + }; + CE6BC1081B4A440B002E2414 /* Products */ = { + isa = PBXGroup; + children = ( + CE6BC1071B4A440B002E2414 /* libAWSAPIGateway.a */, + CE6BC1121B4A440C002E2414 /* AWSAPIGatewayTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + CE6BC1091B4A440B002E2414 /* AWSAPIGateway */ = { + isa = PBXGroup; + children = ( + CEB2AE8F1B4B067800F32474 /* AWSAPIGateway.h */, + CE6BC12A1B4A447D002E2414 /* AWSAPIGatewayClient.h */, + CE6BC12B1B4A447D002E2414 /* AWSAPIGatewayClient.m */, + ); + path = AWSAPIGateway; + sourceTree = ""; + }; + CE6BC1161B4A440C002E2414 /* AWSAPIGatewayTests */ = { + isa = PBXGroup; + children = ( + CE6BC1171B4A440C002E2414 /* Supporting Files */, + ); + path = AWSAPIGatewayTests; + sourceTree = ""; + }; + CE6BC1171B4A440C002E2414 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + CE6BC1181B4A440C002E2414 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + CEB2AE901B4B3A6B00F32474 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CEB2AE911B4B3A7300F32474 /* AWSAPIGateway.h in Headers */, + CEB2AE921B4B3A7300F32474 /* AWSAPIGatewayClient.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + CE6BC1061B4A440B002E2414 /* AWSAPIGateway */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE6BC11B1B4A440C002E2414 /* Build configuration list for PBXNativeTarget "AWSAPIGateway" */; + buildPhases = ( + CE6BC1031B4A440B002E2414 /* Sources */, + CE6BC1041B4A440B002E2414 /* Frameworks */, + CE6BC1051B4A440B002E2414 /* CopyFiles */, + CEB2AE901B4B3A6B00F32474 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AWSAPIGateway; + productName = AWSAPIGateway; + productReference = CE6BC1071B4A440B002E2414 /* libAWSAPIGateway.a */; + productType = "com.apple.product-type.library.static"; + }; + CE6BC1111B4A440C002E2414 /* AWSAPIGatewayTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE6BC11E1B4A440C002E2414 /* Build configuration list for PBXNativeTarget "AWSAPIGatewayTests" */; + buildPhases = ( + CE6BC10E1B4A440C002E2414 /* Sources */, + CE6BC10F1B4A440C002E2414 /* Frameworks */, + CE6BC1101B4A440C002E2414 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + CE6BC1151B4A440C002E2414 /* PBXTargetDependency */, + ); + name = AWSAPIGatewayTests; + productName = AWSAPIGatewayTests; + productReference = CE6BC1121B4A440C002E2414 /* AWSAPIGatewayTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + CE6BC0FF1B4A440B002E2414 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0640; + ORGANIZATIONNAME = "Amazon Web Services"; + TargetAttributes = { + CE6BC1061B4A440B002E2414 = { + CreatedOnToolsVersion = 6.4; + }; + CE6BC1111B4A440C002E2414 = { + CreatedOnToolsVersion = 6.4; + }; + }; + }; + buildConfigurationList = CE6BC1021B4A440B002E2414 /* Build configuration list for PBXProject "AWSAPIGateway" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = CE6BC0FE1B4A440B002E2414; + productRefGroup = CE6BC1081B4A440B002E2414 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CE6BC1061B4A440B002E2414 /* AWSAPIGateway */, + CE6BC1111B4A440C002E2414 /* AWSAPIGatewayTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + CE6BC1101B4A440C002E2414 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + CE6BC1031B4A440B002E2414 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE6BC12C1B4A447D002E2414 /* AWSAPIGatewayClient.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CE6BC10E1B4A440C002E2414 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + CE6BC1151B4A440C002E2414 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CE6BC1061B4A440B002E2414 /* AWSAPIGateway */; + targetProxy = CE6BC1141B4A440C002E2414 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + CE6BC1191B4A440C002E2414 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/**"; + }; + name = Debug; + }; + CE6BC11A1B4A440C002E2414 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/**"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + CE6BC11C1B4A440C002E2414 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + CE6BC11D1B4A440C002E2414 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + CE6BC11F1B4A440C002E2414 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSAPIGatewayTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + CE6BC1201B4A440C002E2414 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = AWSAPIGatewayTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + CE6BC1021B4A440B002E2414 /* Build configuration list for PBXProject "AWSAPIGateway" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE6BC1191B4A440C002E2414 /* Debug */, + CE6BC11A1B4A440C002E2414 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CE6BC11B1B4A440C002E2414 /* Build configuration list for PBXNativeTarget "AWSAPIGateway" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE6BC11C1B4A440C002E2414 /* Debug */, + CE6BC11D1B4A440C002E2414 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CE6BC11E1B4A440C002E2414 /* Build configuration list for PBXNativeTarget "AWSAPIGatewayTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE6BC11F1B4A440C002E2414 /* Debug */, + CE6BC1201B4A440C002E2414 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = CE6BC0FF1B4A440B002E2414 /* Project object */; +} diff --git a/AWSAPIGateway.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AWSAPIGateway.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..83bcc188c7a --- /dev/null +++ b/AWSAPIGateway.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AWSAPIGateway/AWSAPIGateway.h b/AWSAPIGateway/AWSAPIGateway.h new file mode 100644 index 00000000000..b38efed059f --- /dev/null +++ b/AWSAPIGateway/AWSAPIGateway.h @@ -0,0 +1,18 @@ +/* + Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"). + You may not use this file except in compliance with the License. + A copy of the License is located at + + http://aws.amazon.com/apache2.0 + + or in the "license" file accompanying this file. This file is distributed + on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing + permissions and limitations under the License. + */ + +#import +#import +#import "AWSAPIGatewayClient.h" diff --git a/AWSAPIGateway/AWSAPIGatewayClient.h b/AWSAPIGateway/AWSAPIGatewayClient.h new file mode 100755 index 00000000000..615b5578d90 --- /dev/null +++ b/AWSAPIGateway/AWSAPIGatewayClient.h @@ -0,0 +1,26 @@ +/* + Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"). + You may not use this file except in compliance with the License. + A copy of the License is located at + + http://aws.amazon.com/apache2.0 + + or in the "license" file accompanying this file. This file is distributed + on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing + permissions and limitations under the License. + */ + +#import + +@class AWSServiceConfiguration; + +@interface AWSAPIGatewayClient : NSObject + +@property (nonatomic, strong, readonly) AWSServiceConfiguration *configuration; + +@property (nonatomic, strong) NSString *APIKey; + +@end diff --git a/AWSAPIGateway/AWSAPIGatewayClient.m b/AWSAPIGateway/AWSAPIGatewayClient.m new file mode 100755 index 00000000000..3468a98d4ee --- /dev/null +++ b/AWSAPIGateway/AWSAPIGatewayClient.m @@ -0,0 +1,263 @@ +/* + Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"). + You may not use this file except in compliance with the License. + A copy of the License is located at + + http://aws.amazon.com/apache2.0 + + or in the "license" file accompanying this file. This file is distributed + on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. See the License for the specific language governing + permissions and limitations under the License. + */ + +#import "AWSAPIGatewayClient.h" +#import + +NSString *const AWSAPIGatewayAPIKeyHeader = @"x-api-key"; + +@interface AWSAPIGatewayClient() + +// Networking +@property (nonatomic, strong) NSURLSession *session; + +// For responses +@property (nonatomic, strong) NSDictionary *HTTPHeaderFields; +@property (nonatomic, assign) NSInteger HTTPStatusCode; + +@end + +@implementation AWSAPIGatewayClient + +- (instancetype)init { + if (self = [super init]) { + static NSURLSession *session = nil; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; + session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; + }); + + _session = session; + } + return self; +} + +- (AWSTask *)invokeHTTPRequest:(NSString *)HTTPMethod + URLString:(NSString *)URLString + pathParameters:(NSDictionary *)pathParameters + queryParameters:(NSDictionary *)queryParameters + headerParameters:(NSDictionary *)headerParameters + body:(id)body + responseClass:(Class)responseClass { + NSURL *URL = [self requestURL:URLString query:queryParameters URLPathComponentsDictionary:pathParameters]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + request.HTTPMethod = HTTPMethod; + request.allHTTPHeaderFields = headerParameters; + if (self.APIKey) { + [request addValue:self.APIKey forHTTPHeaderField:AWSAPIGatewayAPIKeyHeader]; + } + + NSError *error = nil; + if (body != nil) { + NSDictionary *bodyParameters = [[AWSMTLJSONAdapter JSONDictionaryFromModel:body] aws_removeNullValues]; + request.HTTPBody = [NSJSONSerialization dataWithJSONObject:bodyParameters + options:0 + error:&error]; + if (!request.HTTPBody) { + AWSLogError(@"Failed to serialize a request body. %@", error); + } + } + + // Refreshes credentials if necessary + AWSTask *task = [AWSTask taskWithResult:nil]; + task = [task continueWithSuccessBlock:^id(AWSTask *task) { + id signer = [self.configuration.requestInterceptors lastObject]; + if (signer) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" + if ([signer respondsToSelector:@selector(credentialsProvider)]) { + id credentialsProvider = [signer performSelector:@selector(credentialsProvider)]; + + if ([credentialsProvider respondsToSelector:@selector(refresh)]) { + NSString *accessKey = nil; + if ([credentialsProvider respondsToSelector:@selector(accessKey)]) { + accessKey = [credentialsProvider performSelector:@selector(accessKey)]; + } + + NSString *secretKey = nil; + if ([credentialsProvider respondsToSelector:@selector(secretKey)]) { + secretKey = [credentialsProvider performSelector:@selector(secretKey)]; + } + + NSDate *expiration = nil; + if ([credentialsProvider respondsToSelector:@selector(expiration)]) { + expiration = [credentialsProvider performSelector:@selector(expiration)]; + } + + /** + Preemptively refresh credentials if any of the following is true: + 1. accessKey or secretKey is nil. + 2. the credentials expires within 10 minutes. + */ + if ((!accessKey || !secretKey) + || [expiration compare:[NSDate dateWithTimeIntervalSinceNow:10 * 60]] == NSOrderedAscending) { + return [credentialsProvider performSelector:@selector(refresh)]; + } + } + } +#pragma clang diagnostic pop + } + return nil; + }]; + + // Signs the request + for (id interceptor in self.configuration.requestInterceptors) { + task = [task continueWithSuccessBlock:^id(AWSTask *task) { + return [interceptor interceptRequest:request]; + }]; + } + + return [task continueWithSuccessBlock:^id(AWSTask *task) { + AWSTaskCompletionSource *completionSource = [AWSTaskCompletionSource new]; + + NSURLSessionDataTask *sessionTask = [self.session dataTaskWithRequest:request + completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (error) { + [completionSource setError:error]; + return; + } + if (response) { + NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response; + self.HTTPHeaderFields = HTTPResponse.allHeaderFields; + self.HTTPStatusCode = HTTPResponse.statusCode; + } + if (data && [data length] > 0) { + id response = [NSJSONSerialization JSONObjectWithData:data + options:NSJSONReadingAllowFragments + error:&error]; + if (!response) { + NSString *bodyString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + if ([bodyString length] > 0) { + AWSLogError(@"The body is not in JSON format. Body: %@\nError: %@", bodyString, error); + [completionSource setError:error]; + return; + } + } + // Serializes the response object + if (responseClass + && responseClass != [NSDictionary class]) { + if ([response isKindOfClass:[NSDictionary class]]) { + NSError *responseSerializationError = nil; + response = [AWSMTLJSONAdapter modelOfClass:responseClass + fromJSONDictionary:response + error:&responseSerializationError]; + if (!response) { + AWSLogError(@"Failed to serialize the body JSON. %@", responseSerializationError); + } + } + if ([response isKindOfClass:[NSArray class]]) { + NSError *responseSerializationError = nil; + NSMutableArray *models = [NSMutableArray new]; + for (id object in response) { + id model = [AWSMTLJSONAdapter modelOfClass:responseClass + fromJSONDictionary:object + error:&responseSerializationError]; + [models addObject:model]; + if (!response) { + AWSLogError(@"Failed to serialize the body JSON. %@", responseSerializationError); + } + } + response = models; + } + } + [completionSource setResult:response]; + } else { + [completionSource setResult:nil]; + } + }]; + [sessionTask resume]; + + return completionSource.task; + }]; +} + +- (NSURL *)requestURL:(NSString *)URLString query:(NSDictionary *)query URLPathComponentsDictionary:(NSDictionary *)URLPathComponentsDictionary { + NSMutableString *mutableURLString = [NSMutableString stringWithString:URLString]; + + // Constructs the URL path components + NSCharacterSet *delimiters = [NSCharacterSet characterSetWithCharactersInString:@"{}"]; + NSArray *URLPathComponents = [URLString componentsSeparatedByCharactersInSet:delimiters]; + if ([URLPathComponents count] >= 2) { + for (NSUInteger i = 1; i < [URLPathComponents count] - 1; i++) { + [mutableURLString replaceOccurrencesOfString:[NSString stringWithFormat:@"{%@}", URLPathComponents[i]] + withString:[self encodeQueryStringValue:[URLPathComponentsDictionary valueForKey:URLPathComponents[i]]] + options:NSLiteralSearch + range:NSMakeRange(0, [mutableURLString length])]; + } + } + + // Adds query string + NSMutableString *queryString = [NSMutableString new]; + [self processParameters:query queryString:queryString]; + if ([queryString length] > 0) { + [mutableURLString appendFormat:@"?%@", queryString]; + } + + return [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", self.configuration.baseURL, mutableURLString]]; +} + +// TODO: merge it with - (void)processParameters:(NSDictionary *)parameters queryString:(NSMutableString *)queryString in AWSURLRequestSerialization.m +- (void)processParameters:(NSDictionary *)parameters queryString:(NSMutableString *)queryString { + for (NSString *key in parameters) { + id obj = parameters[key]; + + if ([obj isKindOfClass:[NSDictionary class]]) { + [self processParameters:obj queryString:queryString]; + } else { + if ([queryString length] > 0) { + [queryString appendString:@"&"]; + } + + [queryString appendString:[self generateQueryStringWithKey:key value:obj]]; + } + } +} + +- (NSString *)generateQueryStringWithKey:(NSString *)key value:(id)value { + NSMutableString *queryString = [NSMutableString new]; + [queryString appendString:[key aws_stringWithURLEncoding]]; + [queryString appendString:@"="]; + [queryString appendString:[self encodeQueryStringValue:value]]; + + return queryString; +} + +- (NSString *)encodeQueryStringValue:(id)value { + if ([value isKindOfClass:[NSString class]]) { + return [value aws_stringWithURLEncoding]; + } + + if ([value isKindOfClass:[NSNumber class]]) { + return [[value stringValue] aws_stringWithURLEncoding]; + } + + if ([value isKindOfClass:[NSArray class]]) { + NSMutableString *mutableString = [NSMutableString new]; + for (id obj in value) { + if ([mutableString length] > 0) { + [mutableString appendString:@","]; + } + [mutableString appendString:[self encodeQueryStringValue:obj]]; + } + return mutableString; + } + + AWSLogError(@"value[%@] is invalid.", value); + return [[value description] aws_stringWithURLEncoding]; +} + +@end diff --git a/AWSAPIGatewayTests/Info.plist b/AWSAPIGatewayTests/Info.plist new file mode 100644 index 00000000000..55821ba1861 --- /dev/null +++ b/AWSAPIGatewayTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.amazonaws.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/AWSAutoScaling.podspec b/AWSAutoScaling.podspec index e1ffc5c8327..729856ae433 100644 --- a/AWSAutoScaling.podspec +++ b/AWSAutoScaling.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSAutoScaling' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSAutoScaling/*.{h,m}' end diff --git a/AWSAutoScaling.xcodeproj/project.pbxproj b/AWSAutoScaling.xcodeproj/project.pbxproj index 1002f0bd290..64757f98aea 100644 --- a/AWSAutoScaling.xcodeproj/project.pbxproj +++ b/AWSAutoScaling.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD0000301AB8C4D2004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00002F1AB8C4D2004496EF /* credentials.json */; }; BD0000491AB8E119004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000481AB8E119004496EF /* AWSTestUtility.m */; }; BD00FF371AB8B683004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF361AB8B683004496EF /* libAWSCore.a */; }; - BD00FFD41AB8C353004496EF /* AWSGeneralAutoScalingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD21AB8C353004496EF /* AWSGeneralAutoScalingTests.m */; }; BD00FFD51AB8C353004496EF /* AWSAutoScalingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD31AB8C353004496EF /* AWSAutoScalingTests.m */; }; BD9D97681AC1EF7800CEEE08 /* AWSAutoScalingService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE661AC1E0C30095C4B7 /* AWSAutoScalingService.h */; }; BDB5DF281AB37A7A002DD224 /* libAWSAutoScaling.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DF1C1AB37A79002DD224 /* libAWSAutoScaling.a */; }; @@ -22,6 +21,12 @@ BDB73D681B1D3E6D00717559 /* AWSAutoScalingResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D661B1D3E6D00717559 /* AWSAutoScalingResources.m */; }; BDC91C391ABBA05600F74D49 /* AWSAutoScaling.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DF371AB37AA9002DD224 /* AWSAutoScaling.h */; }; BDC91C3A1ABBA05600F74D49 /* AWSAutoScalingModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DF391AB37AA9002DD224 /* AWSAutoScalingModel.h */; }; + BDD876A01B4B4062009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD8769F1B4B4062009268C7 /* libOCMock.a */; }; + BDF125651B45BF3000DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000481AB8E119004496EF /* AWSTestUtility.m */; }; + BDF125661B45BF3000DFBFEC /* AWSGeneralAutoScalingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD21AB8C353004496EF /* AWSGeneralAutoScalingTests.m */; }; + BDF125681B45BF3000DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532551B03D1A8002CED62 /* libz.dylib */; }; + BDF125691B45BF3000DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF361AB8B683004496EF /* libAWSCore.a */; }; + BDF1256A1B45BF3000DFBFEC /* libAWSAutoScaling.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DF1C1AB37A79002DD224 /* libAWSAutoScaling.a */; }; CEE532561B03D1A8002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532551B03D1A8002CED62 /* libz.dylib */; }; CEE7DE671AC1E0C30095C4B7 /* AWSAutoScalingService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE661AC1E0C30095C4B7 /* AWSAutoScalingService.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ @@ -34,6 +39,13 @@ remoteGlobalIDString = BDB5DF1B1AB37A79002DD224; remoteInfo = AutoScaling; }; + BDF125621B45BF3000DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDB5DF141AB37A79002DD224 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDB5DF1B1AB37A79002DD224; + remoteInfo = AutoScaling; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -52,9 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1DA626D8A5FE1C2560C78C72 /* Pods-AWSAutoScaling.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSAutoScaling.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSAutoScaling/Pods-AWSAutoScaling.release.xcconfig"; sourceTree = ""; }; - 2177028105C432CA525715AC /* libPods-AWSAutoScaling.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSAutoScaling.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3AFFABC8223BFC112AFCFB4E /* Pods-AWSAutoScaling.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSAutoScaling.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSAutoScaling/Pods-AWSAutoScaling.debug.xcconfig"; sourceTree = ""; }; BD00002F1AB8C4D2004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000471AB8E119004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000481AB8E119004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -70,6 +79,8 @@ BDB5DF3A1AB37AA9002DD224 /* AWSAutoScalingModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSAutoScalingModel.m; path = ../AWSAutoScaling/AWSAutoScalingModel.m; sourceTree = ""; }; BDB73D651B1D3E6D00717559 /* AWSAutoScalingResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSAutoScalingResources.h; sourceTree = ""; }; BDB73D661B1D3E6D00717559 /* AWSAutoScalingResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSAutoScalingResources.m; sourceTree = ""; }; + BDD8769F1B4B4062009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125701B45BF3000DFBFEC /* AWSAutoScalingUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSAutoScalingUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CEE532551B03D1A8002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE661AC1E0C30095C4B7 /* AWSAutoScalingService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSAutoScalingService.h; path = ../AWSAutoScaling/AWSAutoScalingService.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -92,6 +103,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF125671B45BF3000DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876A01B4B4062009268C7 /* libOCMock.a in Frameworks */, + BDF125681B45BF3000DFBFEC /* libz.dylib in Frameworks */, + BDF125691B45BF3000DFBFEC /* libAWSCore.a in Frameworks */, + BDF1256A1B45BF3000DFBFEC /* libAWSAutoScaling.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -101,7 +123,6 @@ BDB5DF1E1AB37A79002DD224 /* AWSAutoScaling */, BDB5DF2B1AB37A7A002DD224 /* AWSAutoScalingTests */, FC5D4AEC7530694251AE5CAE /* Frameworks */, - EBF92C517A7A1B79B7969CD1 /* Pods */, BDB5DF1D1AB37A79002DD224 /* Products */, ); sourceTree = ""; @@ -111,6 +132,7 @@ children = ( BDB5DF1C1AB37A79002DD224 /* libAWSAutoScaling.a */, BDB5DF271AB37A7A002DD224 /* AWSAutoScalingTests.xctest */, + BDF125701B45BF3000DFBFEC /* AWSAutoScalingUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -150,21 +172,12 @@ name = "Supporting Files"; sourceTree = ""; }; - EBF92C517A7A1B79B7969CD1 /* Pods */ = { - isa = PBXGroup; - children = ( - 3AFFABC8223BFC112AFCFB4E /* Pods-AWSAutoScaling.debug.xcconfig */, - 1DA626D8A5FE1C2560C78C72 /* Pods-AWSAutoScaling.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; FC5D4AEC7530694251AE5CAE /* Frameworks */ = { isa = PBXGroup; children = ( + BDD8769F1B4B4062009268C7 /* libOCMock.a */, CEE532551B03D1A8002CED62 /* libz.dylib */, BD00FF361AB8B683004496EF /* libAWSCore.a */, - 2177028105C432CA525715AC /* libPods-AWSAutoScaling.a */, ); name = Frameworks; sourceTree = ""; @@ -222,6 +235,24 @@ productReference = BDB5DF271AB37A7A002DD224 /* AWSAutoScalingTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + BDF125601B45BF3000DFBFEC /* AWSAutoScalingUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF1256D1B45BF3000DFBFEC /* Build configuration list for PBXNativeTarget "AWSAutoScalingUnitTests" */; + buildPhases = ( + BDF125631B45BF3000DFBFEC /* Sources */, + BDF125671B45BF3000DFBFEC /* Frameworks */, + BDF1256B1B45BF3000DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125611B45BF3000DFBFEC /* PBXTargetDependency */, + ); + name = AWSAutoScalingUnitTests; + productName = AutoScalingTests; + productReference = BDF125701B45BF3000DFBFEC /* AWSAutoScalingUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -253,6 +284,7 @@ targets = ( BDB5DF1B1AB37A79002DD224 /* AWSAutoScaling */, BDB5DF261AB37A7A002DD224 /* AWSAutoScalingTests */, + BDF125601B45BF3000DFBFEC /* AWSAutoScalingUnitTests */, ); }; /* End PBXProject section */ @@ -266,6 +298,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1256B1B45BF3000DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -285,7 +324,15 @@ files = ( BD00FFD51AB8C353004496EF /* AWSAutoScalingTests.m in Sources */, BD0000491AB8E119004496EF /* AWSTestUtility.m in Sources */, - BD00FFD41AB8C353004496EF /* AWSGeneralAutoScalingTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDF125631B45BF3000DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125651B45BF3000DFBFEC /* AWSTestUtility.m in Sources */, + BDF125661B45BF3000DFBFEC /* AWSGeneralAutoScalingTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -297,6 +344,11 @@ target = BDB5DF1B1AB37A79002DD224 /* AWSAutoScaling */; targetProxy = BDB5DF291AB37A7A002DD224 /* PBXContainerItemProxy */; }; + BDF125611B45BF3000DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDB5DF1B1AB37A79002DD224 /* AWSAutoScaling */; + targetProxy = BDF125621B45BF3000DFBFEC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -304,6 +356,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +401,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -417,6 +477,7 @@ ); INFOPLIST_FILE = AWSAutoScalingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSAutoScalingTests; }; name = Debug; @@ -432,10 +493,69 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSAutoScalingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSAutoScalingTests; }; name = Release; }; + BDF1256E1B45BF3000DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSAutoScalingTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSAutoScalingUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF1256F1B45BF3000DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSAutoScalingTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSAutoScalingUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -466,6 +586,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF1256D1B45BF3000DFBFEC /* Build configuration list for PBXNativeTarget "AWSAutoScalingUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF1256E1B45BF3000DFBFEC /* Debug */, + BDF1256F1B45BF3000DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BDB5DF141AB37A79002DD224 /* Project object */; diff --git a/AWSAutoScaling.xcodeproj/xcshareddata/xcschemes/AWSAutoScaling.xcscheme b/AWSAutoScaling.xcodeproj/xcshareddata/xcschemes/AWSAutoScaling.xcscheme new file mode 100644 index 00000000000..3633ae43512 --- /dev/null +++ b/AWSAutoScaling.xcodeproj/xcshareddata/xcschemes/AWSAutoScaling.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSAutoScaling/AWSAutoScalingService.m b/AWSAutoScaling/AWSAutoScalingService.m index c8ab44a43c0..c80ab4ab0ab 100644 --- a/AWSAutoScaling/AWSAutoScalingService.m +++ b/AWSAutoScaling/AWSAutoScalingService.m @@ -221,7 +221,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSAutoScalingRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSAutoScalingTests/AWSAutoScalingTests.m b/AWSAutoScalingTests/AWSAutoScalingTests.m index 18bd790af4b..9459588bac8 100644 --- a/AWSAutoScalingTests/AWSAutoScalingTests.m +++ b/AWSAutoScalingTests/AWSAutoScalingTests.m @@ -13,6 +13,7 @@ permissions and limitations under the License. */ +#import #import #import "AWSAutoScaling.h" #import "AWSTestUtility.h" diff --git a/AWSAutoScalingTests/AWSGeneralAutoScalingTests.m b/AWSAutoScalingTests/AWSGeneralAutoScalingTests.m index d4a674f94ab..6f91c99e1aa 100644 --- a/AWSAutoScalingTests/AWSGeneralAutoScalingTests.m +++ b/AWSAutoScalingTests/AWSGeneralAutoScalingTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSAutoScaling.h" +static id mockNetworking = nil; + @interface AWSGeneralAutoScalingTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralAutoScalingTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAttachInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] attachInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -70,13 +84,20 @@ - (void)testCompleteLifecycleAction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] completeLifecycleAction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreateAutoScalingGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] createAutoScalingGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -100,13 +128,20 @@ - (void)testCreateLaunchConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] createLaunchConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -115,13 +150,20 @@ - (void)testCreateOrUpdateTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] createOrUpdateTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDeleteAutoScalingGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteAutoScalingGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -145,13 +194,20 @@ - (void)testDeleteLaunchConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteLaunchConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -160,13 +216,20 @@ - (void)testDeleteLifecycleHook { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteLifecycleHook:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -175,13 +238,20 @@ - (void)testDeleteNotificationConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteNotificationConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -190,13 +260,20 @@ - (void)testDeletePolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deletePolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -205,13 +282,20 @@ - (void)testDeleteScheduledAction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteScheduledAction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -220,13 +304,20 @@ - (void)testDeleteTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] deleteTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -235,13 +326,20 @@ - (void)testDescribeAccountLimits { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeAccountLimits:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -250,13 +348,20 @@ - (void)testDescribeAdjustmentTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeAdjustmentTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -265,13 +370,20 @@ - (void)testDescribeAutoScalingGroups { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeAutoScalingGroups:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -280,13 +392,20 @@ - (void)testDescribeAutoScalingInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeAutoScalingInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -295,13 +414,20 @@ - (void)testDescribeAutoScalingNotificationTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeAutoScalingNotificationTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -310,13 +436,20 @@ - (void)testDescribeLaunchConfigurations { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeLaunchConfigurations:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -325,13 +458,20 @@ - (void)testDescribeLifecycleHookTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeLifecycleHookTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -340,13 +480,20 @@ - (void)testDescribeLifecycleHooks { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeLifecycleHooks:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -355,13 +502,20 @@ - (void)testDescribeMetricCollectionTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeMetricCollectionTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -370,13 +524,20 @@ - (void)testDescribeNotificationConfigurations { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeNotificationConfigurations:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -385,13 +546,20 @@ - (void)testDescribePolicies { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describePolicies:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -400,13 +568,20 @@ - (void)testDescribeScalingActivities { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeScalingActivities:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -415,13 +590,20 @@ - (void)testDescribeScalingProcessTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeScalingProcessTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -430,13 +612,20 @@ - (void)testDescribeScheduledActions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeScheduledActions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -445,13 +634,20 @@ - (void)testDescribeTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -460,13 +656,20 @@ - (void)testDescribeTerminationPolicyTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] describeTerminationPolicyTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -475,13 +678,20 @@ - (void)testDetachInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] detachInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -490,13 +700,20 @@ - (void)testDisableMetricsCollection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] disableMetricsCollection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -505,13 +722,20 @@ - (void)testEnableMetricsCollection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] enableMetricsCollection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -520,13 +744,20 @@ - (void)testEnterStandby { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] enterStandby:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -535,13 +766,20 @@ - (void)testExecutePolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] executePolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -550,13 +788,20 @@ - (void)testExitStandby { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] exitStandby:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -565,13 +810,20 @@ - (void)testPutLifecycleHook { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] putLifecycleHook:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -580,13 +832,20 @@ - (void)testPutNotificationConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] putNotificationConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -595,13 +854,20 @@ - (void)testPutScalingPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] putScalingPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -610,13 +876,20 @@ - (void)testPutScheduledUpdateGroupAction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] putScheduledUpdateGroupAction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -625,13 +898,20 @@ - (void)testRecordLifecycleActionHeartbeat { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] recordLifecycleActionHeartbeat:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -640,13 +920,20 @@ - (void)testResumeProcesses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] resumeProcesses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -655,13 +942,20 @@ - (void)testSetDesiredCapacity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] setDesiredCapacity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -670,13 +964,20 @@ - (void)testSetInstanceHealth { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] setInstanceHealth:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -685,13 +986,20 @@ - (void)testSuspendProcesses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] suspendProcesses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -700,13 +1008,20 @@ - (void)testTerminateInstanceInAutoScalingGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] terminateInstanceInAutoScalingGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } @@ -715,13 +1030,20 @@ - (void)testUpdateAutoScalingGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSAutoScaling registerAutoScalingWithConfiguration:configuration forKey:key]; + AWSAutoScaling *awsClient = [AWSAutoScaling AutoScalingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSAutoScaling AutoScalingForKey:key] updateAutoScalingGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSAutoScaling removeAutoScalingForKey:key]; } diff --git a/AWSCloudWatch.podspec b/AWSCloudWatch.podspec index 206c8bc4f75..23025905744 100644 --- a/AWSCloudWatch.podspec +++ b/AWSCloudWatch.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSCloudWatch' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSCloudWatch/*.{h,m}' end diff --git a/AWSCloudWatch.xcodeproj/project.pbxproj b/AWSCloudWatch.xcodeproj/project.pbxproj index 05983e7a577..d8652c06251 100644 --- a/AWSCloudWatch.xcodeproj/project.pbxproj +++ b/AWSCloudWatch.xcodeproj/project.pbxproj @@ -15,6 +15,12 @@ BDB73D6C1B1D3E8400717559 /* AWSCloudWatchResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D6A1B1D3E8400717559 /* AWSCloudWatchResources.m */; }; BDC91C5B1ABBA0F400F74D49 /* AWSCloudWatch.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559141AB3747F0067F4F1 /* AWSCloudWatch.h */; }; BDC91C5C1ABBA0F400F74D49 /* AWSCloudWatchModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559161AB3747F0067F4F1 /* AWSCloudWatchModel.h */; }; + BDD876A21B4B5247009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876A11B4B5247009268C7 /* libOCMock.a */; }; + BDF125761B45BFE500DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000661AB8E21B004496EF /* AWSTestUtility.m */; }; + BDF125771B45BFE500DFBFEC /* AWSGeneralCloudWatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF83EDA1AD3521A00620E1C /* AWSGeneralCloudWatchTests.m */; }; + BDF1257A1B45BFE500DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532571B03D332002CED62 /* libz.dylib */; }; + BDF1257B1B45BFE500DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF4A1AB8B700004496EF /* libAWSCore.a */; }; + BDF1257C1B45BFE500DFBFEC /* libAWSCloudWatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF558F81AB374250067F4F1 /* libAWSCloudWatch.a */; }; BDF559041AB374250067F4F1 /* libAWSCloudWatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF558F81AB374250067F4F1 /* libAWSCloudWatch.a */; }; BDF5591A1AB3747F0067F4F1 /* AWSCloudWatch.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF559141AB3747F0067F4F1 /* AWSCloudWatch.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF5591B1AB3747F0067F4F1 /* AWSCloudWatchService.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF559151AB3747F0067F4F1 /* AWSCloudWatchService.m */; }; @@ -23,10 +29,16 @@ CEE532581B03D332002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532571B03D332002CED62 /* libz.dylib */; }; CEE7DE691AC1E1330095C4B7 /* AWSCloudWatchService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE681AC1E1330095C4B7 /* AWSCloudWatchService.h */; settings = {ATTRIBUTES = (Public, ); }; }; CEF83EDC1AD3521A00620E1C /* AWSCloudWatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF83ED91AD3521A00620E1C /* AWSCloudWatchTests.m */; }; - CEF83EDD1AD3521A00620E1C /* AWSGeneralCloudWatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF83EDA1AD3521A00620E1C /* AWSGeneralCloudWatchTests.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125741B45BFE500DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF558F01AB374250067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF558F71AB374250067F4F1; + remoteInfo = CloudWatch; + }; BDF559051AB374250067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF558F01AB374250067F4F1 /* Project object */; @@ -52,14 +64,14 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 12547097B9F79B38370F990A /* Pods-AWSCloudWatch.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSCloudWatch.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSCloudWatch/Pods-AWSCloudWatch.debug.xcconfig"; sourceTree = ""; }; - 86A2D62682440E97BC5FE56B /* libPods-AWSCloudWatch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSCloudWatch.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD0000431AB8C57A004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000651AB8E21B004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000661AB8E21B004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; BD00FF4A1AB8B700004496EF /* libAWSCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAWSCore.a; path = "build/Debug-iphoneos/libAWSCore.a"; sourceTree = ""; }; BDB73D691B1D3E8400717559 /* AWSCloudWatchResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSCloudWatchResources.h; sourceTree = ""; }; BDB73D6A1B1D3E8400717559 /* AWSCloudWatchResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSCloudWatchResources.m; sourceTree = ""; }; + BDD876A11B4B5247009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125821B45BFE500DFBFEC /* AWSCloudWatchUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSCloudWatchUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF558F81AB374250067F4F1 /* libAWSCloudWatch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSCloudWatch.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559031AB374250067F4F1 /* AWSCloudWatchTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSCloudWatchTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559141AB3747F0067F4F1 /* AWSCloudWatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSCloudWatch.h; path = ../AWSCloudWatch/AWSCloudWatch.h; sourceTree = ""; }; @@ -71,10 +83,20 @@ CEF83ED91AD3521A00620E1C /* AWSCloudWatchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSCloudWatchTests.m; path = ../AWSCloudWatchTests/AWSCloudWatchTests.m; sourceTree = ""; }; CEF83EDA1AD3521A00620E1C /* AWSGeneralCloudWatchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSGeneralCloudWatchTests.m; path = ../AWSCloudWatchTests/AWSGeneralCloudWatchTests.m; sourceTree = ""; }; CEF83EDB1AD3521A00620E1C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DDE2D6D6AC17259133A42839 /* Pods-AWSCloudWatch.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSCloudWatch.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSCloudWatch/Pods-AWSCloudWatch.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125791B45BFE500DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876A21B4B5247009268C7 /* libOCMock.a in Frameworks */, + BDF1257A1B45BFE500DFBFEC /* libz.dylib in Frameworks */, + BDF1257B1B45BFE500DFBFEC /* libAWSCore.a in Frameworks */, + BDF1257C1B45BFE500DFBFEC /* libAWSCloudWatch.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF558F51AB374250067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -98,29 +120,19 @@ 2953C160B39FCEC4E052451B /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876A11B4B5247009268C7 /* libOCMock.a */, CEE532571B03D332002CED62 /* libz.dylib */, BD00FF4A1AB8B700004496EF /* libAWSCore.a */, - 86A2D62682440E97BC5FE56B /* libPods-AWSCloudWatch.a */, ); name = Frameworks; sourceTree = ""; }; - A797C571EB41EF4D6BB1A9B2 /* Pods */ = { - isa = PBXGroup; - children = ( - 12547097B9F79B38370F990A /* Pods-AWSCloudWatch.debug.xcconfig */, - DDE2D6D6AC17259133A42839 /* Pods-AWSCloudWatch.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; BDF558EF1AB374250067F4F1 = { isa = PBXGroup; children = ( BDF558FA1AB374250067F4F1 /* AWSCloudWatch */, BDF559071AB374250067F4F1 /* AWSCloudWatchTests */, BDF558F91AB374250067F4F1 /* Products */, - A797C571EB41EF4D6BB1A9B2 /* Pods */, 2953C160B39FCEC4E052451B /* Frameworks */, ); sourceTree = ""; @@ -130,6 +142,7 @@ children = ( BDF558F81AB374250067F4F1 /* libAWSCloudWatch.a */, BDF559031AB374250067F4F1 /* AWSCloudWatchTests.xctest */, + BDF125821B45BFE500DFBFEC /* AWSCloudWatchUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -186,6 +199,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125721B45BFE500DFBFEC /* AWSCloudWatchUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF1257F1B45BFE500DFBFEC /* Build configuration list for PBXNativeTarget "AWSCloudWatchUnitTests" */; + buildPhases = ( + BDF125751B45BFE500DFBFEC /* Sources */, + BDF125791B45BFE500DFBFEC /* Frameworks */, + BDF1257D1B45BFE500DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125731B45BFE500DFBFEC /* PBXTargetDependency */, + ); + name = AWSCloudWatchUnitTests; + productName = CloudWatchTests; + productReference = BDF125821B45BFE500DFBFEC /* AWSCloudWatchUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF558F71AB374250067F4F1 /* AWSCloudWatch */ = { isa = PBXNativeTarget; buildConfigurationList = BDF5590C1AB374250067F4F1 /* Build configuration list for PBXNativeTarget "AWSCloudWatch" */; @@ -253,11 +284,19 @@ targets = ( BDF558F71AB374250067F4F1 /* AWSCloudWatch */, BDF559021AB374250067F4F1 /* AWSCloudWatchTests */, + BDF125721B45BFE500DFBFEC /* AWSCloudWatchUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF1257D1B45BFE500DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559011AB374250067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -269,6 +308,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125751B45BFE500DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125761B45BFE500DFBFEC /* AWSTestUtility.m in Sources */, + BDF125771B45BFE500DFBFEC /* AWSGeneralCloudWatchTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF558F41AB374250067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -284,7 +332,6 @@ buildActionMask = 2147483647; files = ( BD0000671AB8E21B004496EF /* AWSTestUtility.m in Sources */, - CEF83EDD1AD3521A00620E1C /* AWSGeneralCloudWatchTests.m in Sources */, CEF83EDC1AD3521A00620E1C /* AWSCloudWatchTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -292,6 +339,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125731B45BFE500DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF558F71AB374250067F4F1 /* AWSCloudWatch */; + targetProxy = BDF125741B45BFE500DFBFEC /* PBXContainerItemProxy */; + }; BDF559061AB374250067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF558F71AB374250067F4F1 /* AWSCloudWatch */; @@ -300,10 +352,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125801B45BFE500DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSCloudWatchTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSCloudWatchUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125811B45BFE500DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSCloudWatchTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSCloudWatchUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF5590A1AB374250067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +459,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -419,6 +537,7 @@ ); INFOPLIST_FILE = AWSCloudWatchTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSCloudWatchTests; }; name = Debug; @@ -434,6 +553,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSCloudWatchTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSCloudWatchTests; }; name = Release; @@ -441,6 +561,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF1257F1B45BFE500DFBFEC /* Build configuration list for PBXNativeTarget "AWSCloudWatchUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125801B45BFE500DFBFEC /* Debug */, + BDF125811B45BFE500DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF558F31AB374250067F4F1 /* Build configuration list for PBXProject "AWSCloudWatch" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSCloudWatch.xcodeproj/xcshareddata/xcschemes/AWSCloudWatch.xcscheme b/AWSCloudWatch.xcodeproj/xcshareddata/xcschemes/AWSCloudWatch.xcscheme new file mode 100644 index 00000000000..84d23ea010f --- /dev/null +++ b/AWSCloudWatch.xcodeproj/xcshareddata/xcschemes/AWSCloudWatch.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSCloudWatch/AWSCloudWatchService.m b/AWSCloudWatch/AWSCloudWatchService.m index a0ed217567d..4164ea3c92f 100644 --- a/AWSCloudWatch/AWSCloudWatchService.m +++ b/AWSCloudWatch/AWSCloudWatchService.m @@ -225,7 +225,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSCloudWatchRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSCloudWatchTests/AWSCloudWatchTests.m b/AWSCloudWatchTests/AWSCloudWatchTests.m index 3f8d2610a95..8ad1b8d2049 100644 --- a/AWSCloudWatchTests/AWSCloudWatchTests.m +++ b/AWSCloudWatchTests/AWSCloudWatchTests.m @@ -13,6 +13,7 @@ permissions and limitations under the License. */ +#import #import #import "AWSCloudWatch.h" #import "AWSTestUtility.h" diff --git a/AWSCloudWatchTests/AWSGeneralCloudWatchTests.m b/AWSCloudWatchTests/AWSGeneralCloudWatchTests.m index 431a533d146..9e9de603bde 100644 --- a/AWSCloudWatchTests/AWSGeneralCloudWatchTests.m +++ b/AWSCloudWatchTests/AWSGeneralCloudWatchTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSCloudWatch.h" +static id mockNetworking = nil; + @interface AWSGeneralCloudWatchTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralCloudWatchTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testDeleteAlarms { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] deleteAlarms:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -70,13 +84,20 @@ - (void)testDescribeAlarmHistory { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] describeAlarmHistory:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -85,13 +106,20 @@ - (void)testDescribeAlarms { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] describeAlarms:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDescribeAlarmsForMetric { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] describeAlarmsForMetric:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDisableAlarmActions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] disableAlarmActions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -130,13 +172,20 @@ - (void)testEnableAlarmActions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] enableAlarmActions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetMetricStatistics { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] getMetricStatistics:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -160,13 +216,20 @@ - (void)testListMetrics { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] listMetrics:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -175,13 +238,20 @@ - (void)testPutMetricAlarm { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] putMetricAlarm:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -190,13 +260,20 @@ - (void)testPutMetricData { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] putMetricData:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } @@ -205,13 +282,20 @@ - (void)testSetAlarmState { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCloudWatch registerCloudWatchWithConfiguration:configuration forKey:key]; + AWSCloudWatch *awsClient = [AWSCloudWatch CloudWatchForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCloudWatch CloudWatchForKey:key] setAlarmState:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCloudWatch removeCloudWatchForKey:key]; } diff --git a/AWSCore.podspec b/AWSCore.podspec index b56c1933796..8d90b053da7 100644 --- a/AWSCore.podspec +++ b/AWSCore.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSCore' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -17,4 +17,5 @@ Pod::Spec.new do |s| s.requires_arc = true s.source_files = 'AWSCore/*.{h,m}', 'AWSCore/**/*.{h,m}' + s.private_header_files = 'AWSCore/FMDB/**/*.h', 'AWSCore/GZIP/**/*.h', 'AWSCore/Reachability/**/*.h', 'AWSCore/TMCache/**/*.h', 'AWSCore/UICKeyChainStore/**/*.h', 'AWSCore/XMLDictionary/**/*.h', 'AWSCore/XMLWriter/**/*.h' end diff --git a/AWSCore.xcodeproj/project.pbxproj b/AWSCore.xcodeproj/project.pbxproj index 11302edfe5e..eeaba9090fe 100644 --- a/AWSCore.xcodeproj/project.pbxproj +++ b/AWSCore.xcodeproj/project.pbxproj @@ -22,12 +22,9 @@ /* Begin PBXBuildFile section */ BD00001D1AB8C47C004496EF /* AWSSTSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000091AB8C47C004496EF /* AWSSTSTests.m */; }; - BD00001F1AB8C47C004496EF /* AWSGeneralSTSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000B1AB8C47C004496EF /* AWSGeneralSTSTests.m */; }; - BD0000201AB8C47C004496EF /* AWSGeneralCognitoIdentityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000C1AB8C47C004496EF /* AWSGeneralCognitoIdentityTests.m */; }; BD0000211AB8C47C004496EF /* AWSCognitoCredentialsProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000D1AB8C47C004496EF /* AWSCognitoCredentialsProviderTests.m */; }; BD0000221AB8C47C004496EF /* AWSCognitoIdentityServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000E1AB8C47C004496EF /* AWSCognitoIdentityServiceTests.m */; }; BD0000241AB8C47C004496EF /* AWSClockSkewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000101AB8C47C004496EF /* AWSClockSkewTests.m */; }; - BD0000251AB8C47C004496EF /* AWSCoreTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000111AB8C47C004496EF /* AWSCoreTests.m */; }; BD0000261AB8C47C004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000131AB8C47C004496EF /* AWSTestUtility.m */; }; BD0000271AB8C47C004496EF /* ec2-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000141AB8C47C004496EF /* ec2-input.json */; }; BD0000281AB8C47C004496EF /* ec2-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000151AB8C47C004496EF /* ec2-output.json */; }; @@ -38,8 +35,6 @@ BD00002D1AB8C47C004496EF /* rest-xml-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00001A1AB8C47C004496EF /* rest-xml-input.json */; }; BD00002E1AB8C47C004496EF /* rest-xml-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00001B1AB8C47C004496EF /* rest-xml-output.json */; }; BD0000461AB8C583004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000451AB8C583004496EF /* credentials.json */; }; - BD0DBBC91AE1BC75003C78C3 /* AWSSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0DBBC81AE1BC75003C78C3 /* AWSSerializationTests.m */; }; - BD4B22C11ADEF1DB00BE550A /* AWSSignatureTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD4B22C01ADEF1DB00BE550A /* AWSSignatureTests.m */; }; BD4B22C51ADF457E00BE550A /* AWSCredentialsProviderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD4B22C41ADF457E00BE550A /* AWSCredentialsProviderTests.m */; }; BD810F851B2902CA0055E6CA /* AWSReachability.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEA589751B02B30D009901A6 /* AWSReachability.h */; }; BD810F861B2902CA0055E6CA /* AWSUICKeyChainStore.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEA5896E1B02B192009901A6 /* AWSUICKeyChainStore.h */; }; @@ -69,6 +64,30 @@ BDC91C801ABBA13200F74D49 /* AWSModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF558301AB371AB0067F4F1 /* AWSModel.h */; }; BDC91C811ABBA13200F74D49 /* AWSSynchronizedMutableDictionary.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF558321AB371AB0067F4F1 /* AWSSynchronizedMutableDictionary.h */; }; BDC91C821ABBA13200F74D49 /* AWSXMLWriter.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF558351AB371AB0067F4F1 /* AWSXMLWriter.h */; }; + BDD876801B4B1CDF009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876751B4B1CDF009268C7 /* libOCMock.a */; }; + BDF1266E1B45C37D00DFBFEC /* AWSServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7C8001ADDEF47007626CE /* AWSServiceTests.m */; }; + BDF1266F1B45C37D00DFBFEC /* AWSCoreTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000111AB8C47C004496EF /* AWSCoreTests.m */; }; + BDF126701B45C37D00DFBFEC /* AWSGeneralSTSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000B1AB8C47C004496EF /* AWSGeneralSTSTests.m */; }; + BDF126711B45C37D00DFBFEC /* AWSSignatureTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD4B22C01ADEF1DB00BE550A /* AWSSignatureTests.m */; }; + BDF126741B45C37D00DFBFEC /* AWSUtilityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFBD4EA1ADEF199004358F3 /* AWSUtilityTests.m */; }; + BDF126751B45C37D00DFBFEC /* AWSNetworkingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5E04551AD89085002EF47E /* AWSNetworkingTests.m */; }; + BDF126771B45C37D00DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000131AB8C47C004496EF /* AWSTestUtility.m */; }; + BDF126791B45C37D00DFBFEC /* AWSSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0DBBC81AE1BC75003C78C3 /* AWSSerializationTests.m */; }; + BDF1267A1B45C37D00DFBFEC /* AWSGeneralCognitoIdentityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00000C1AB8C47C004496EF /* AWSGeneralCognitoIdentityTests.m */; }; + BDF1267D1B45C37D00DFBFEC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE08A0C91B02B6510000ED1F /* SystemConfiguration.framework */; }; + BDF1267E1B45C37D00DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEA589681B02B15B009901A6 /* libz.dylib */; }; + BDF1267F1B45C37D00DFBFEC /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9358F41B018ADA001CA3CD /* libsqlite3.dylib */; }; + BDF126801B45C37D00DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF557521AB371490067F4F1 /* libAWSCore.a */; }; + BDF126821B45C37D00DFBFEC /* json-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000171AB8C47C004496EF /* json-output.json */; }; + BDF126831B45C37D00DFBFEC /* ec2-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000141AB8C47C004496EF /* ec2-input.json */; }; + BDF126841B45C37D00DFBFEC /* rest-xml-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00001B1AB8C47C004496EF /* rest-xml-output.json */; }; + BDF126851B45C37D00DFBFEC /* rest-json-output.json in Resources */ = {isa = PBXBuildFile; fileRef = CE6397211AC49D4D00459E23 /* rest-json-output.json */; }; + BDF126861B45C37D00DFBFEC /* json-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000161AB8C47C004496EF /* json-input.json */; }; + BDF126871B45C37D00DFBFEC /* query-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000181AB8C47C004496EF /* query-input.json */; }; + BDF126881B45C37D00DFBFEC /* rest-xml-input.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00001A1AB8C47C004496EF /* rest-xml-input.json */; }; + BDF126891B45C37D00DFBFEC /* query-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000191AB8C47C004496EF /* query-output.json */; }; + BDF1268B1B45C37D00DFBFEC /* rest-json-input.json in Resources */ = {isa = PBXBuildFile; fileRef = CE6397201AC49D4D00459E23 /* rest-json-input.json */; }; + BDF1268C1B45C37D00DFBFEC /* ec2-output.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000151AB8C47C004496EF /* ec2-output.json */; }; BDF5575E1AB371490067F4F1 /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF557521AB371490067F4F1 /* libAWSCore.a */; }; BDF5576D1AB371950067F4F1 /* AWSCore.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF557551AB371490067F4F1 /* AWSCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF558371AB371AB0067F4F1 /* AWSCredentialsProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF5576F1AB371AB0067F4F1 /* AWSCredentialsProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -152,7 +171,6 @@ CE14DF871B02C7CE00EF6D09 /* AWSmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CE14DF811B02C7CE00EF6D09 /* AWSmetamacros.h */; }; CE14DF8A1B02DE2F00EF6D09 /* AWSFMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CE14DF881B02DE2F00EF6D09 /* AWSFMDatabaseAdditions.h */; }; CE14DF8B1B02DE2F00EF6D09 /* AWSFMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE14DF891B02DE2F00EF6D09 /* AWSFMDatabaseAdditions.m */; }; - CE5E04561AD89085002EF47E /* AWSNetworkingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5E04551AD89085002EF47E /* AWSNetworkingTests.m */; }; CE6397221AC49D4D00459E23 /* rest-json-input.json in Resources */ = {isa = PBXBuildFile; fileRef = CE6397201AC49D4D00459E23 /* rest-json-input.json */; }; CE6397231AC49D4D00459E23 /* rest-json-output.json in Resources */ = {isa = PBXBuildFile; fileRef = CE6397211AC49D4D00459E23 /* rest-json-output.json */; }; CEA0CA471B0187640061508B /* AWSExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = CEA0CA3E1B0187640061508B /* AWSExecutor.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -204,13 +222,18 @@ CED823D51AC1E5070091F9D7 /* AWSSTSService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE601AC1DFB10095C4B7 /* AWSSTSService.h */; }; CED823D61AC1E5170091F9D7 /* AWSCognitoIdentityService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE621AC1DFEE0095C4B7 /* AWSCognitoIdentityService.h */; }; CEDE75F11ACA1E70002A0D94 /* AWSClientContext.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CED822011AC486E40017E687 /* AWSClientContext.h */; }; - CEE7C8011ADDEF47007626CE /* AWSServiceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE7C8001ADDEF47007626CE /* AWSServiceTests.m */; }; CEE7DE611AC1DFB10095C4B7 /* AWSSTSService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE601AC1DFB10095C4B7 /* AWSSTSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; CEE7DE631AC1DFEE0095C4B7 /* AWSCognitoIdentityService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE621AC1DFEE0095C4B7 /* AWSCognitoIdentityService.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CEFBD4EB1ADEF199004358F3 /* AWSUtilityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFBD4EA1ADEF199004358F3 /* AWSUtilityTests.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF1266C1B45C37D00DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF5574A1AB371480067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF557511AB371480067F4F1; + remoteInfo = AWSCore; + }; BDF5575F1AB371490067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF5574A1AB371480067F4F1 /* Project object */; @@ -305,6 +328,17 @@ BDB73D5A1B1D3DF500717559 /* AWSCognitoIdentityResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSCognitoIdentityResources.m; sourceTree = ""; }; BDB73D5D1B1D3E0B00717559 /* AWSSTSResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSTSResources.h; sourceTree = ""; }; BDB73D5E1B1D3E0B00717559 /* AWSSTSResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSTSResources.m; sourceTree = ""; }; + BDD876751B4B1CDF009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; + BDD876771B4B1CDF009268C7 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; + BDD876781B4B1CDF009268C7 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; + BDD876791B4B1CDF009268C7 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; + BDD8767A1B4B1CDF009268C7 /* OCMLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMLocation.h; sourceTree = ""; }; + BDD8767B1B4B1CDF009268C7 /* OCMMacroState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMMacroState.h; sourceTree = ""; }; + BDD8767C1B4B1CDF009268C7 /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; + BDD8767D1B4B1CDF009268C7 /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; + BDD8767E1B4B1CDF009268C7 /* OCMRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMRecorder.h; sourceTree = ""; }; + BDD8767F1B4B1CDF009268C7 /* OCMStubRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMStubRecorder.h; sourceTree = ""; }; + BDF126901B45C37D00DFBFEC /* AWSCoreUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSCoreUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF557521AB371490067F4F1 /* libAWSCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF557551AB371490067F4F1 /* AWSCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AWSCore.h; sourceTree = ""; }; BDF5575D1AB371490067F4F1 /* AWSCoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSCoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -429,6 +463,18 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF1267C1B45C37D00DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF1267D1B45C37D00DFBFEC /* SystemConfiguration.framework in Frameworks */, + BDF1267E1B45C37D00DFBFEC /* libz.dylib in Frameworks */, + BDF1267F1B45C37D00DFBFEC /* libsqlite3.dylib in Frameworks */, + BDF126801B45C37D00DFBFEC /* libAWSCore.a in Frameworks */, + BDD876801B4B1CDF009268C7 /* libOCMock.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF5574F1AB371480067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -463,6 +509,31 @@ path = AWSiOSSDKAnalyticsTests/Frameworks; sourceTree = ""; }; + BDD876741B4B1CDF009268C7 /* OCMock */ = { + isa = PBXGroup; + children = ( + BDD876751B4B1CDF009268C7 /* libOCMock.a */, + BDD876761B4B1CDF009268C7 /* OCMock */, + ); + path = OCMock; + sourceTree = ""; + }; + BDD876761B4B1CDF009268C7 /* OCMock */ = { + isa = PBXGroup; + children = ( + BDD876771B4B1CDF009268C7 /* NSNotificationCenter+OCMAdditions.h */, + BDD876781B4B1CDF009268C7 /* OCMArg.h */, + BDD876791B4B1CDF009268C7 /* OCMConstraint.h */, + BDD8767A1B4B1CDF009268C7 /* OCMLocation.h */, + BDD8767B1B4B1CDF009268C7 /* OCMMacroState.h */, + BDD8767C1B4B1CDF009268C7 /* OCMock.h */, + BDD8767D1B4B1CDF009268C7 /* OCMockObject.h */, + BDD8767E1B4B1CDF009268C7 /* OCMRecorder.h */, + BDD8767F1B4B1CDF009268C7 /* OCMStubRecorder.h */, + ); + path = OCMock; + sourceTree = ""; + }; BDF557491AB371480067F4F1 = { isa = PBXGroup; children = ( @@ -478,6 +549,7 @@ children = ( BDF557521AB371490067F4F1 /* libAWSCore.a */, BDF5575D1AB371490067F4F1 /* AWSCoreTests.xctest */, + BDF126901B45C37D00DFBFEC /* AWSCoreUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -501,6 +573,7 @@ BDF557611AB371490067F4F1 /* AWSCoreTests */ = { isa = PBXGroup; children = ( + BDD876741B4B1CDF009268C7 /* OCMock */, BD0DBBC81AE1BC75003C78C3 /* AWSSerializationTests.m */, BD4B22C01ADEF1DB00BE550A /* AWSSignatureTests.m */, BD0000101AB8C47C004496EF /* AWSClockSkewTests.m */, @@ -864,6 +937,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF1266A1B45C37D00DFBFEC /* AWSCoreUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF1268D1B45C37D00DFBFEC /* Build configuration list for PBXNativeTarget "AWSCoreUnitTests" */; + buildPhases = ( + BDF1266D1B45C37D00DFBFEC /* Sources */, + BDF1267C1B45C37D00DFBFEC /* Frameworks */, + BDF126811B45C37D00DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF1266B1B45C37D00DFBFEC /* PBXTargetDependency */, + ); + name = AWSCoreUnitTests; + productName = AWSCoreTests; + productReference = BDF126901B45C37D00DFBFEC /* AWSCoreUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF557511AB371480067F4F1 /* AWSCore */ = { isa = PBXNativeTarget; buildConfigurationList = BDF557661AB371490067F4F1 /* Build configuration list for PBXNativeTarget "AWSCore" */; @@ -935,12 +1026,30 @@ targets = ( BDF557511AB371480067F4F1 /* AWSCore */, BDF5575C1AB371490067F4F1 /* AWSCoreTests */, + BDF1266A1B45C37D00DFBFEC /* AWSCoreUnitTests */, BDC91C831ABBAB6500F74D49 /* Documentation */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF126811B45C37D00DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126821B45C37D00DFBFEC /* json-output.json in Resources */, + BDF126831B45C37D00DFBFEC /* ec2-input.json in Resources */, + BDF126841B45C37D00DFBFEC /* rest-xml-output.json in Resources */, + BDF126851B45C37D00DFBFEC /* rest-json-output.json in Resources */, + BDF126861B45C37D00DFBFEC /* json-input.json in Resources */, + BDF126871B45C37D00DFBFEC /* query-input.json in Resources */, + BDF126881B45C37D00DFBFEC /* rest-xml-input.json in Resources */, + BDF126891B45C37D00DFBFEC /* query-output.json in Resources */, + BDF1268B1B45C37D00DFBFEC /* rest-json-input.json in Resources */, + BDF1268C1B45C37D00DFBFEC /* ec2-output.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF5575B1AB371490067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -986,11 +1095,27 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ -e \"XcodeCoverage/exportenv.sh\" ]; then\nXcodeCoverage/exportenv.sh\nfi"; + shellScript = "echo \"======[START] post-build script========\"\n\n\n\nbase_dir=`dirname ${SYMROOT}`\n\necho \"base_dir is ${base_dir}\"\n\nunit_test_dir=${base_dir}/unit-test-build\n\necho \"unit_test_dir is ${unit_test_dir}\"\n\n\n\nif [ ! -d ${unit_test_dir} ]; then\n\n# Control will enter here if $DIRECTORY doesn't exist.\n\necho \"unit-test-build folder doesn't exists, creating one\"\n\nmkdir ${unit_test_dir}\n\nfi\n\n\n\necho \"copying $FULL_PRODUCT_NAME to ${unit_test_dir}\"\n\ncp $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME ${unit_test_dir}\n\necho \"======[END] post-build script========\"\n\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF1266D1B45C37D00DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF1266E1B45C37D00DFBFEC /* AWSServiceTests.m in Sources */, + BDF1266F1B45C37D00DFBFEC /* AWSCoreTests.m in Sources */, + BDF126701B45C37D00DFBFEC /* AWSGeneralSTSTests.m in Sources */, + BDF126711B45C37D00DFBFEC /* AWSSignatureTests.m in Sources */, + BDF126741B45C37D00DFBFEC /* AWSUtilityTests.m in Sources */, + BDF126751B45C37D00DFBFEC /* AWSNetworkingTests.m in Sources */, + BDF126771B45C37D00DFBFEC /* AWSTestUtility.m in Sources */, + BDF126791B45C37D00DFBFEC /* AWSSerializationTests.m in Sources */, + BDF1267A1B45C37D00DFBFEC /* AWSGeneralCognitoIdentityTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF5574E1AB371480067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1055,19 +1180,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CEE7C8011ADDEF47007626CE /* AWSServiceTests.m in Sources */, - BD0000251AB8C47C004496EF /* AWSCoreTests.m in Sources */, - BD00001F1AB8C47C004496EF /* AWSGeneralSTSTests.m in Sources */, - BD4B22C11ADEF1DB00BE550A /* AWSSignatureTests.m in Sources */, BD0000241AB8C47C004496EF /* AWSClockSkewTests.m in Sources */, BD0000221AB8C47C004496EF /* AWSCognitoIdentityServiceTests.m in Sources */, - CEFBD4EB1ADEF199004358F3 /* AWSUtilityTests.m in Sources */, - CE5E04561AD89085002EF47E /* AWSNetworkingTests.m in Sources */, BD00001D1AB8C47C004496EF /* AWSSTSTests.m in Sources */, BD0000261AB8C47C004496EF /* AWSTestUtility.m in Sources */, BD0000211AB8C47C004496EF /* AWSCognitoCredentialsProviderTests.m in Sources */, - BD0DBBC91AE1BC75003C78C3 /* AWSSerializationTests.m in Sources */, - BD0000201AB8C47C004496EF /* AWSGeneralCognitoIdentityTests.m in Sources */, BD4B22C51ADF457E00BE550A /* AWSCredentialsProviderTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1075,6 +1192,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF1266B1B45C37D00DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF557511AB371480067F4F1 /* AWSCore */; + targetProxy = BDF1266C1B45C37D00DFBFEC /* PBXContainerItemProxy */; + }; BDF557601AB371490067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF557511AB371480067F4F1 /* AWSCore */; @@ -1097,10 +1219,74 @@ }; name = Release; }; + BDF1268E1B45C37D00DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSCoreTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSCoreUnitTests; + USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF1268F1B45C37D00DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSCoreTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSCoreUnitTests; + USER_HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF557641AB371490067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -1141,6 +1327,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -1243,6 +1433,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF1268D1B45C37D00DFBFEC /* Build configuration list for PBXNativeTarget "AWSCoreUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF1268E1B45C37D00DFBFEC /* Debug */, + BDF1268F1B45C37D00DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF5574D1AB371480067F4F1 /* Build configuration list for PBXProject "AWSCore" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSCore.xcodeproj/xcshareddata/xcschemes/AWSCore.xcscheme b/AWSCore.xcodeproj/xcshareddata/xcschemes/AWSCore.xcscheme new file mode 100644 index 00000000000..49e3e49aa1a --- /dev/null +++ b/AWSCore.xcodeproj/xcshareddata/xcschemes/AWSCore.xcscheme @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSCore.xcodeproj/xcshareddata/xcschemes/Documentation.xcscheme b/AWSCore.xcodeproj/xcshareddata/xcschemes/Documentation.xcscheme new file mode 100644 index 00000000000..4948d949f7b --- /dev/null +++ b/AWSCore.xcodeproj/xcshareddata/xcschemes/Documentation.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSCore/Authentication/AWSSignature.m b/AWSCore/Authentication/AWSSignature.m index df8918ad537..22f89c5afcf 100644 --- a/AWSCore/Authentication/AWSSignature.m +++ b/AWSCore/Authentication/AWSSignature.m @@ -88,7 +88,7 @@ + (NSString *)HMACSign:(NSData *)data withKey:(NSString *)key usingAlgorithm:(CC // Both SHA1 and SHA256 will fit in here unsigned char digestRaw[CC_SHA256_DIGEST_LENGTH]; - NSInteger digestLength; + NSInteger digestLength = -1; switch (algorithm) { case kCCHmacAlgSHA1: @@ -100,7 +100,6 @@ + (NSString *)HMACSign:(NSData *)data withKey:(NSString *)key usingAlgorithm:(CC break; default: - digestLength = -1; AWSLogError(@"Unable to sign: unsupported Algorithm."); return nil; break; @@ -143,6 +142,7 @@ - (instancetype)initWithCredentialsProvider:(id)credenti } - (AWSTask *)interceptRequest:(NSMutableURLRequest *)request { + [request addValue:request.URL.host forHTTPHeaderField:@"Host"]; return [[AWSTask taskWithResult:nil] continueWithSuccessBlock:^id(AWSTask *task) { // clear authorization header if set [request setValue:nil forHTTPHeaderField:@"Authorization"]; diff --git a/AWSCore/CognitoIdentity/AWSCognitoIdentityService.m b/AWSCore/CognitoIdentity/AWSCognitoIdentityService.m index 1a9a53574ea..569bb2a3be3 100644 --- a/AWSCore/CognitoIdentity/AWSCognitoIdentityService.m +++ b/AWSCore/CognitoIdentity/AWSCognitoIdentityService.m @@ -210,8 +210,7 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSCognitoIdentityRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, - @"Content-Type" : @"application/x-amz-json-1.1"}; + _configuration.headers = @{@"Content-Type" : @"application/x-amz-json-1.1"}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSCore/Mantle/extobjc/AWSEXTKeyPathCoding.h b/AWSCore/Mantle/extobjc/AWSEXTKeyPathCoding.h index f34dc4a4400..f005c4babec 100644 --- a/AWSCore/Mantle/extobjc/AWSEXTKeyPathCoding.h +++ b/AWSCore/Mantle/extobjc/AWSEXTKeyPathCoding.h @@ -8,7 +8,7 @@ // #import -#import "metamacros.h" +#import "AWSmetamacros.h" /** * \@keypath allows compile-time verification of key paths. Given a real object diff --git a/AWSCore/Networking/AWSNetworking.m b/AWSCore/Networking/AWSNetworking.m index 9592044a421..128c3032d4e 100644 --- a/AWSCore/Networking/AWSNetworking.m +++ b/AWSCore/Networking/AWSNetworking.m @@ -22,7 +22,7 @@ #import "AWSService.h" NSString *const AWSNetworkingErrorDomain = @"com.amazonaws.AWSNetworkingErrorDomain"; -NSString *const AWSiOSSDKVersion = @"2.2.0"; +NSString *const AWSiOSSDKVersion = @"2.2.1"; #pragma mark - AWSHTTPMethod diff --git a/AWSCore/STS/AWSSTSService.m b/AWSCore/STS/AWSSTSService.m index 6536a5248b6..fd05fce4033 100644 --- a/AWSCore/STS/AWSSTSService.m +++ b/AWSCore/STS/AWSSTSService.m @@ -218,7 +218,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSTSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSCore/Serialization/AWSURLRequestSerialization.m b/AWSCore/Serialization/AWSURLRequestSerialization.m index 9dec23f4329..8316065bd85 100644 --- a/AWSCore/Serialization/AWSURLRequestSerialization.m +++ b/AWSCore/Serialization/AWSURLRequestSerialization.m @@ -549,5 +549,4 @@ - (AWSTask *)serializeRequest:(NSMutableURLRequest *)request return [AWSTask taskWithResult:nil]; } - -@end \ No newline at end of file +@end diff --git a/AWSCore/Service/AWSService.h b/AWSCore/Service/AWSService.h index b68b3ce7d54..bd9c79f1e52 100644 --- a/AWSCore/Service/AWSService.h +++ b/AWSCore/Service/AWSService.h @@ -91,4 +91,8 @@ service:(AWSServiceType)serviceType useUnsafeURL:(BOOL)useUnsafeURL; +- (instancetype)initWithRegion:(AWSRegionType)regionType + service:(AWSServiceType)serviceType + URL:(NSURL *)URL; + @end diff --git a/AWSCore/Service/AWSService.m b/AWSCore/Service/AWSService.m index 9e871f22702..2374920d08e 100644 --- a/AWSCore/Service/AWSService.m +++ b/AWSCore/Service/AWSService.m @@ -134,6 +134,7 @@ - (id)copyWithZone:(NSZone *)zone { NSString *const AWSRegionNameSAEast1 = @"sa-east-1"; NSString *const AWSRegionNameCNNorth1 = @"cn-north-1"; +NSString *const AWSServiceNameAPIGateway = @"execute-api"; NSString *const AWSServiceNameAutoScaling = @"autoscaling"; NSString *const AWSServiceNameCloudWatch = @"monitoring"; NSString *const AWSServiceNameCognitoIdentityBroker = @"cognito-identity"; @@ -167,141 +168,157 @@ - (instancetype)initWithRegion:(AWSRegionType)regionType _regionType = regionType; _serviceType = serviceType; _useUnsafeURL = useUnsafeURL; - - switch (_regionType) { - case AWSRegionUSEast1: - _regionName = AWSRegionNameUSEast1; - break; - case AWSRegionUSWest2: - _regionName = AWSRegionNameUSWest2; - break; - case AWSRegionUSWest1: - _regionName = AWSRegionNameUSWest1; - break; - case AWSRegionEUWest1: - _regionName = AWSRegionNameEUWest1; - break; - case AWSRegionEUCentral1: - _regionName = AWSRegionNameEUCentral1; - break; - case AWSRegionAPSoutheast1: - _regionName = AWSRegionNameAPSoutheast1; - break; - case AWSRegionAPSoutheast2: - _regionName = AWSRegionNameAPSoutheast2; - break; - case AWSRegionAPNortheast1: - _regionName = AWSRegionNameAPNortheast1; - break; - case AWSRegionSAEast1: - _regionName = AWSRegionNameSAEast1; - break; - case AWSRegionCNNorth1: - _regionName = AWSRegionNameCNNorth1; - break; - default: - AWSLogError(@"Invalid region type."); - break; + _regionName = [self regionNameFromType:regionType]; + if (!_regionName) { + AWSLogError(@"Invalid region type."); } - - switch (_serviceType) { - case AWSServiceAutoScaling: - _serviceName = AWSServiceNameAutoScaling; - break; - case AWSServiceCloudWatch: - _serviceName = AWSServiceNameCloudWatch; - break; - case AWSServiceCognitoIdentityBroker: - _serviceName = AWSServiceNameCognitoIdentityBroker; - break; - case AWSServiceCognitoService: - _serviceName = AWSServiceNameCognitoService; - break; - case AWSServiceDynamoDB: - _serviceName = AWSServiceNameDynamoDB; - break; - case AWSServiceEC2: - _serviceName = AWSServiceNameEC2; - break; - case AWSServiceElasticLoadBalancing: - _serviceName = AWSServiceNameElasticLoadBalancing; - break; - case AWSServiceKinesis: - _serviceName = AWSServiceNameKinesis; - break; - case AWSServiceLambda: - _serviceName = AWSServiceNameLambda; - break; - case AWSServiceMachineLearning: - _serviceName = AWSServiceNameMachineLearning; - break; - case AWSServiceMobileAnalytics: - _serviceName = AWSServiceNameMobileAnalytics; - break; - case AWSServiceS3: - _serviceName = AWSServiceNameS3; - break; - case AWSServiceSES: - _serviceName = AWSServiceNameSES; - break; - case AWSServiceSimpleDB: - _serviceName = AWSServiceNameSimpleDB; - break; - case AWSServiceSNS: - _serviceName = AWSServiceNameSNS; - break; - case AWSServiceSQS: - _serviceName = AWSServiceNameSQS; - break; - case AWSServiceSTS: - _serviceName = AWSServiceNameSTS; - break; - default: - AWSLogError(@"Invalid service type."); - break; + _serviceName = [self serviceNameFromType:serviceType]; + if (!_serviceName) { + AWSLogError(@"Invalid service type."); } + _URL = [self URLWithRegion:_regionType + regionName:_regionName + service:_serviceType + serviceName:_serviceName + useUnsafeURL:useUnsafeURL]; + _hostName = [_URL host]; + } - NSString *separator = @"."; - if (_serviceType == AWSServiceS3 - && (_regionType == AWSRegionUSEast1 - || _regionType == AWSRegionUSWest1 - || _regionType == AWSRegionUSWest2 - || _regionType == AWSRegionEUWest1 - || _regionType == AWSRegionAPSoutheast1 - || _regionType == AWSRegionAPNortheast1 - || _regionType == AWSRegionAPSoutheast2 - || _regionType == AWSRegionSAEast1)) { - separator = @"-"; - } - - NSString *HTTP_Type = @"https"; - if (_useUnsafeURL) { - HTTP_Type = @"http"; - } + return self; +} - if (_serviceType == AWSServiceS3 && _regionType == AWSRegionUSEast1) { - _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://s3.amazonaws.com", HTTP_Type]]; - } else if (_serviceType == AWSServiceSTS) { - if (_regionType == AWSRegionCNNorth1) { - _URL = [NSURL URLWithString:@"https://sts.cn-north-1.amazonaws.com"]; - } else { - _URL = [NSURL URLWithString:@"https://sts.amazonaws.com"]; - } - } else if (_serviceType == AWSServiceSimpleDB && _regionType == AWSRegionUSEast1) { - _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://sdb.amazonaws.com", HTTP_Type]]; - } else { - _URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@%@%@.amazonaws.com", HTTP_Type, _serviceName, separator, _regionName]]; +- (instancetype)initWithRegion:(AWSRegionType)regionType + service:(AWSServiceType)serviceType + URL:(NSURL *)URL { + if (self = [super init]) { + _regionType = regionType; + _serviceType = serviceType; + _useUnsafeURL = NO; + _regionName = [self regionNameFromType:regionType]; + _serviceName = [self serviceNameFromType:serviceType]; + _URL = URL; + _hostName = [_URL host]; + } + + return self; +} + +- (NSString *)regionNameFromType:(AWSRegionType)regionType { + switch (regionType) { + case AWSRegionUSEast1: + return AWSRegionNameUSEast1; + case AWSRegionUSWest2: + return AWSRegionNameUSWest2; + case AWSRegionUSWest1: + return AWSRegionNameUSWest1; + case AWSRegionEUWest1: + return AWSRegionNameEUWest1; + case AWSRegionEUCentral1: + return AWSRegionNameEUCentral1; + case AWSRegionAPSoutheast1: + return AWSRegionNameAPSoutheast1; + case AWSRegionAPSoutheast2: + return AWSRegionNameAPSoutheast2; + case AWSRegionAPNortheast1: + return AWSRegionNameAPNortheast1; + case AWSRegionSAEast1: + return AWSRegionNameSAEast1; + case AWSRegionCNNorth1: + return AWSRegionNameCNNorth1; + default: + return nil; + } +} + +- (NSString *)serviceNameFromType:(AWSServiceType)serviceType { + switch (serviceType) { + case AWSServiceAPIGateway: + return AWSServiceNameAPIGateway; + case AWSServiceAutoScaling: + return AWSServiceNameAutoScaling; + case AWSServiceCloudWatch: + return AWSServiceNameCloudWatch; + case AWSServiceCognitoIdentityBroker: + return AWSServiceNameCognitoIdentityBroker; + case AWSServiceCognitoService: + return AWSServiceNameCognitoService; + case AWSServiceDynamoDB: + return AWSServiceNameDynamoDB; + case AWSServiceEC2: + return AWSServiceNameEC2; + case AWSServiceElasticLoadBalancing: + return AWSServiceNameElasticLoadBalancing; + case AWSServiceKinesis: + return AWSServiceNameKinesis; + case AWSServiceLambda: + return AWSServiceNameLambda; + case AWSServiceMachineLearning: + return AWSServiceNameMachineLearning; + case AWSServiceMobileAnalytics: + return AWSServiceNameMobileAnalytics; + case AWSServiceS3: + return AWSServiceNameS3; + case AWSServiceSES: + return AWSServiceNameSES; + case AWSServiceSimpleDB: + return AWSServiceNameSimpleDB; + case AWSServiceSNS: + return AWSServiceNameSNS; + case AWSServiceSQS: + return AWSServiceNameSQS; + case AWSServiceSTS: + return AWSServiceNameSTS; + default: + return nil; + } +} + +- (NSURL *)URLWithRegion:(AWSRegionType)regionType + regionName:(NSString *)regionName + service:(AWSServiceType)serviceType + serviceName:(NSString *)serviceName + useUnsafeURL:(BOOL)useUnsafeURL { + NSURL *URL = nil; + + NSString *separator = @"."; + if (serviceType == AWSServiceS3 + && (regionType == AWSRegionUSEast1 + || regionType == AWSRegionUSWest1 + || regionType == AWSRegionUSWest2 + || regionType == AWSRegionEUWest1 + || regionType == AWSRegionAPSoutheast1 + || regionType == AWSRegionAPNortheast1 + || regionType == AWSRegionAPSoutheast2 + || regionType == AWSRegionSAEast1)) { + separator = @"-"; } - //need to add ".cn" at end of URL if it is in China Region - if ([_regionName hasPrefix:@"cn"]) { - NSString *urlString = [_URL absoluteString]; - _URL = [NSURL URLWithString:[urlString stringByAppendingString:@".cn"]]; + NSString *HTTPType = @"https"; + if (useUnsafeURL) { + HTTPType = @"http"; + } + + if (serviceType == AWSServiceS3 && regionType == AWSRegionUSEast1) { + URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://s3.amazonaws.com", HTTPType]]; + } else if (serviceType == AWSServiceSTS) { + if (regionType == AWSRegionCNNorth1) { + URL = [NSURL URLWithString:@"https://sts.cn-north-1.amazonaws.com"]; + } else { + URL = [NSURL URLWithString:@"https://sts.amazonaws.com"]; } - _hostName = [_URL host]; + } else if (serviceType == AWSServiceSimpleDB && regionType == AWSRegionUSEast1) { + URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://sdb.amazonaws.com", HTTPType]]; + } else { + URL = [NSURL URLWithString:[NSString stringWithFormat:@"%@://%@%@%@.amazonaws.com", HTTPType, serviceName, separator, regionName]]; } - return self; + //need to add ".cn" at end of URL if it is in China Region + if ([regionName hasPrefix:@"cn"]) { + NSString *urlString = [URL absoluteString]; + URL = [NSURL URLWithString:[urlString stringByAppendingString:@".cn"]]; + } + + return URL; } @end diff --git a/AWSCore/Service/AWSServiceEnum.h b/AWSCore/Service/AWSServiceEnum.h index 2020926aca4..b37d41aa085 100644 --- a/AWSCore/Service/AWSServiceEnum.h +++ b/AWSCore/Service/AWSServiceEnum.h @@ -32,6 +32,7 @@ typedef NS_ENUM(NSInteger, AWSRegionType) { typedef NS_ENUM(NSInteger, AWSServiceType) { AWSServiceUnknown, + AWSServiceAPIGateway, AWSServiceAutoScaling, AWSServiceCloudWatch, AWSServiceCognitoIdentityBroker, diff --git a/AWSCoreTests/AWSGeneralCognitoIdentityTests.m b/AWSCoreTests/AWSGeneralCognitoIdentityTests.m index fe76a305830..c805bc171b9 100644 --- a/AWSCoreTests/AWSGeneralCognitoIdentityTests.m +++ b/AWSCoreTests/AWSGeneralCognitoIdentityTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSCognitoIdentity.h" +static id mockNetworking = nil; + @interface AWSGeneralCognitoIdentityTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralCognitoIdentityTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testCreateIdentityPool { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] createIdentityPool:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -70,13 +84,20 @@ - (void)testDeleteIdentityPool { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] deleteIdentityPool:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -85,13 +106,20 @@ - (void)testDescribeIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] describeIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDescribeIdentityPool { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] describeIdentityPool:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -115,13 +150,20 @@ - (void)testGetCredentialsForIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] getCredentialsForIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -130,13 +172,20 @@ - (void)testGetId { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] getId:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetIdentityPoolRoles { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] getIdentityPoolRoles:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -160,13 +216,20 @@ - (void)testGetOpenIdToken { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] getOpenIdToken:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -175,13 +238,20 @@ - (void)testGetOpenIdTokenForDeveloperIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] getOpenIdTokenForDeveloperIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -190,13 +260,20 @@ - (void)testListIdentities { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] listIdentities:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -205,13 +282,20 @@ - (void)testListIdentityPools { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] listIdentityPools:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -220,13 +304,20 @@ - (void)testLookupDeveloperIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] lookupDeveloperIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -235,13 +326,20 @@ - (void)testMergeDeveloperIdentities { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] mergeDeveloperIdentities:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -250,13 +348,20 @@ - (void)testSetIdentityPoolRoles { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] setIdentityPoolRoles:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -265,13 +370,20 @@ - (void)testUnlinkDeveloperIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] unlinkDeveloperIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -280,13 +392,20 @@ - (void)testUnlinkIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] unlinkIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } @@ -295,13 +414,20 @@ - (void)testUpdateIdentityPool { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSCognitoIdentity registerCognitoIdentityWithConfiguration:configuration forKey:key]; + AWSCognitoIdentity *awsClient = [AWSCognitoIdentity CognitoIdentityForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSCognitoIdentity CognitoIdentityForKey:key] updateIdentityPool:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSCognitoIdentity removeCognitoIdentityForKey:key]; } diff --git a/AWSCoreTests/AWSGeneralSTSTests.m b/AWSCoreTests/AWSGeneralSTSTests.m index 7b1262ebd1a..6284ea09ae2 100644 --- a/AWSCoreTests/AWSGeneralSTSTests.m +++ b/AWSCoreTests/AWSGeneralSTSTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSSTS.h" +static id mockNetworking = nil; + @interface AWSGeneralSTSTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralSTSTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAssumeRole { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] assumeRole:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } @@ -70,13 +84,20 @@ - (void)testAssumeRoleWithSAML { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] assumeRoleWithSAML:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } @@ -85,13 +106,20 @@ - (void)testAssumeRoleWithWebIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] assumeRoleWithWebIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDecodeAuthorizationMessage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] decodeAuthorizationMessage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } @@ -115,13 +150,20 @@ - (void)testGetFederationToken { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] getFederationToken:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } @@ -130,13 +172,20 @@ - (void)testGetSessionToken { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSTS registerSTSWithConfiguration:configuration forKey:key]; + AWSSTS *awsClient = [AWSSTS STSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSTS STSForKey:key] getSessionToken:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSTS removeSTSForKey:key]; } diff --git a/AWSCoreTests/AWSServiceTests.m b/AWSCoreTests/AWSServiceTests.m index dd0ccc21650..a8f59ac1a7f 100644 --- a/AWSCoreTests/AWSServiceTests.m +++ b/AWSCoreTests/AWSServiceTests.m @@ -26,7 +26,7 @@ @implementation AWSServiceTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; } - (void)tearDown { diff --git a/AWSCoreTests/AWSTestUtility.h b/AWSCoreTests/AWSTestUtility.h index 7cada7dbebb..a57658bd83c 100644 --- a/AWSCoreTests/AWSTestUtility.h +++ b/AWSCoreTests/AWSTestUtility.h @@ -21,6 +21,7 @@ FOUNDATION_EXPORT NSString *const AWSTestUtilityCognitoIdentityServiceKey; @interface AWSTestUtility : NSObject +(void)setupCrdentialsViaFile; ++ (void)setupFakeCognitoCredentialsProvider; + (void)setupCognitoCredentialsProvider; + (void)setupSTS; + (void)setupCognitoIdentityService; diff --git a/AWSCoreTests/AWSTestUtility.m b/AWSCoreTests/AWSTestUtility.m index ba81dd30518..4590daada8a 100644 --- a/AWSCoreTests/AWSTestUtility.m +++ b/AWSCoreTests/AWSTestUtility.m @@ -57,6 +57,17 @@ + (void)setupCrdentialsViaFile { } } ++ (void)setupFakeCognitoCredentialsProvider { + + AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"fakeIdentityPoolId"]; + + + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 + credentialsProvider:credentialsProvider]; + [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; + +} + + (void)setupCognitoCredentialsProvider { #if AWS_TEST_BJS_INSTEAD //since BJS doesn't support Cognito, we are using STS instead diff --git a/AWSCoreTests/AWSUtilityTests.m b/AWSCoreTests/AWSUtilityTests.m index 79f852416b0..138c928807e 100644 --- a/AWSCoreTests/AWSUtilityTests.m +++ b/AWSCoreTests/AWSUtilityTests.m @@ -37,66 +37,6 @@ - (void)tearDown { [super tearDown]; } -- (void)testAtomicCopy { - - NSFileManager *fileManager = [NSFileManager defaultManager]; - - NSURL* possibleCachesURL = [[fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; - XCTAssertNotNil(possibleCachesURL); - NSString *testCachesPath = [[possibleCachesURL path] stringByAppendingPathComponent:@"com.amazonaws.test"]; - NSError *error = nil; - - - NSURL* possibleApplicationSupportURL = [[fileManager URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; - XCTAssertNotNil(possibleApplicationSupportURL); - NSString *testAppSupportPath = [[possibleApplicationSupportURL path] stringByAppendingPathComponent:@"com.amazonaws.test"]; - error = nil; - - //clean up - [fileManager removeItemAtPath:testCachesPath error:nil]; - [fileManager removeItemAtPath:testAppSupportPath error:nil]; - - XCTAssertTrue([fileManager createDirectoryAtPath:testCachesPath withIntermediateDirectories:YES attributes:nil error:&error]); - XCTAssertTrue([fileManager createDirectoryAtPath:testAppSupportPath withIntermediateDirectories:YES attributes:nil error:&error]); - - NSString *uuid = [[NSUUID UUID] UUIDString]; - NSDictionary *testDic = @{@"testID":uuid}; - error = nil; - NSData *testData = [NSJSONSerialization dataWithJSONObject:testDic options:kNilOptions error:&error]; - XCTAssertNotNil(testData); - XCTAssertNil(error); - - XCTAssertTrue([testData writeToFile:[testCachesPath stringByAppendingPathComponent:@"testFile"] atomically:YES]); - - error = nil; - BOOL result = [fileManager aws_atomicallyCopyItemAtURL:[NSURL fileURLWithPath:testCachesPath] - toURL:[NSURL fileURLWithPath:testAppSupportPath] - backupItemName:@"com.amazonaws.MobileAnalytics.backupItem" - error:&error]; - if ( NO == result) { - XCTFail(@"aws_atomicCopyItemAtURL failed. %@",error); - } - - XCTAssertTrue([fileManager fileExistsAtPath:[testCachesPath stringByAppendingPathComponent:@"testFile"]]); - XCTAssertTrue([fileManager fileExistsAtPath:[testAppSupportPath stringByAppendingPathComponent:@"testFile"]]); - - NSData *resultTestData = [NSData dataWithContentsOfFile:[testAppSupportPath stringByAppendingPathComponent:@"testFile"]]; - XCTAssertNotNil(resultTestData); - XCTAssertEqualObjects(testData, resultTestData); - error = nil; - NSDictionary *resultTestDic = [NSJSONSerialization JSONObjectWithData:resultTestData options:kNilOptions error:&error]; - XCTAssertNotNil(resultTestDic); - XCTAssertNil(error); - - NSString *resultUUID = resultTestDic[@"testID"]; - XCTAssertEqualObjects(uuid, resultUUID); - - - //clean up - [fileManager removeItemAtPath:testCachesPath error:nil]; - [fileManager removeItemAtPath:testAppSupportPath error:nil]; - -} - (void)testCategoryNSString { NSString *inputString = @"U29tZSBpbnB1dCBzdHJpbmc="; // Base64 encoded "Some input string" XCTAssertTrue([inputString aws_isBase64Data]); diff --git a/AWSCoreTests/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h b/AWSCoreTests/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h new file mode 100644 index 00000000000..c20a9c2b208 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2009-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCObserverMockObject; + + +@interface NSNotificationCenter(OCMAdditions) + +- (void)addMockObserver:(OCObserverMockObject *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; + +@end diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMArg.h b/AWSCoreTests/OCMock/OCMock/OCMArg.h similarity index 55% rename from AWSMobileAnalyticsTests/usr/include/OCMock/OCMArg.h rename to AWSCoreTests/OCMock/OCMock/OCMArg.h index 670dd3bade9..d53437cb7dc 100644 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMArg.h +++ b/AWSCoreTests/OCMock/OCMock/OCMArg.h @@ -1,7 +1,18 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2009-2013 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- +/* + * Copyright (c) 2009-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ #import @@ -15,11 +26,11 @@ + (id __autoreleasing *)anyObjectRef; + (id)isNil; + (id)isNotNil; ++ (id)isEqual:(id)value; + (id)isNotEqual:(id)value; ++ (id)isKindOfClass:(Class)cls; + (id)checkWithSelector:(SEL)selector onObject:(id)anObject; -#if NS_BLOCKS_AVAILABLE + (id)checkWithBlock:(BOOL (^)(id obj))block; -#endif // manipulating arguments diff --git a/AWSCoreTests/OCMock/OCMock/OCMConstraint.h b/AWSCoreTests/OCMock/OCMock/OCMConstraint.h new file mode 100644 index 00000000000..777966ab7d6 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMConstraint.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2007-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + + +@interface OCMConstraint : NSObject + ++ (instancetype)constraint; +- (BOOL)evaluate:(id)value; + +// if you are looking for any, isNil, etc, they have moved to OCMArg + +// try to use [OCMArg checkWith...] instead of the constraintWith... methods below + ++ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; ++ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; + + +@end + +@interface OCMAnyConstraint : OCMConstraint +@end + +@interface OCMIsNilConstraint : OCMConstraint +@end + +@interface OCMIsNotNilConstraint : OCMConstraint +@end + +@interface OCMIsNotEqualConstraint : OCMConstraint +{ + @public + id testValue; +} + +@end + +@interface OCMInvocationConstraint : OCMConstraint +{ + @public + NSInvocation *invocation; +} + +@end + +@interface OCMBlockConstraint : OCMConstraint +{ + BOOL (^block)(id); +} + +- (instancetype)initWithConstraintBlock:(BOOL (^)(id))block; + +@end + + +#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] +#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/AWSCoreTests/OCMock/OCMock/OCMLocation.h b/AWSCoreTests/OCMock/OCMock/OCMLocation.h new file mode 100644 index 00000000000..e510db7aaf9 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMLocation.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@interface OCMLocation : NSObject +{ + id testCase; + NSString *file; + NSUInteger line; +} + ++ (instancetype)locationWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; + +- (instancetype)initWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; + +- (id)testCase; +- (NSString *)file; +- (NSUInteger)line; + +@end + +extern OCMLocation *OCMMakeLocation(id testCase, const char *file, int line); diff --git a/AWSCoreTests/OCMock/OCMock/OCMMacroState.h b/AWSCoreTests/OCMock/OCMock/OCMMacroState.h new file mode 100644 index 00000000000..4b2d635086f --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMMacroState.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMLocation; +@class OCMRecorder; +@class OCMStubRecorder; +@class OCMockObject; + + +@interface OCMMacroState : NSObject +{ + OCMRecorder *recorder; +} + ++ (void)beginStubMacro; ++ (OCMStubRecorder *)endStubMacro; + ++ (void)beginExpectMacro; ++ (OCMStubRecorder *)endExpectMacro; + ++ (void)beginVerifyMacroAtLocation:(OCMLocation *)aLocation; ++ (void)endVerifyMacro; + ++ (OCMMacroState *)globalState; + +- (OCMRecorder *)recorder; + +- (void)switchToClassMethod; + +@end diff --git a/AWSCoreTests/OCMock/OCMock/OCMRecorder.h b/AWSCoreTests/OCMock/OCMock/OCMRecorder.h new file mode 100644 index 00000000000..f56d2ca4c03 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMRecorder.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMockObject; +@class OCMInvocationMatcher; + + +@interface OCMRecorder : NSProxy +{ + OCMockObject *mockObject; + OCMInvocationMatcher *invocationMatcher; +} + +- (instancetype)init; +- (instancetype)initWithMockObject:(OCMockObject *)aMockObject; + +- (void)setMockObject:(OCMockObject *)aMockObject; + +- (OCMInvocationMatcher *)invocationMatcher; + +- (id)classMethod; +- (id)ignoringNonObjectArgs; + +@end diff --git a/AWSCoreTests/OCMock/OCMock/OCMStubRecorder.h b/AWSCoreTests/OCMock/OCMock/OCMStubRecorder.h new file mode 100644 index 00000000000..890c9ef3bc6 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMStubRecorder.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import "OCMRecorder.h" + + +@interface OCMStubRecorder : OCMRecorder + +- (id)andReturn:(id)anObject; +- (id)andReturnValue:(NSValue *)aValue; +- (id)andThrow:(NSException *)anException; +- (id)andPost:(NSNotification *)aNotification; +- (id)andCall:(SEL)selector onObject:(id)anObject; +- (id)andDo:(void (^)(NSInvocation *invocation))block; +- (id)andForwardToRealObject; + +@end + + +@interface OCMStubRecorder (Properties) + +#define andReturn(aValue) _andReturn(({ __typeof__(aValue) _v = (aValue); [NSValue value:&_v withObjCType:@encode(__typeof__(_v))]; })) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andReturn)(NSValue *); + +#define andThrow(anException) _andThrow(anException) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andThrow)(NSException *); + +#define andPost(aNotification) _andPost(aNotification) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andPost)(NSNotification *); + +#define andCall(anObject, aSelector) _andCall(anObject, aSelector) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andCall)(id, SEL); + +#define andDo(aBlock) _andDo(aBlock) +@property (nonatomic, readonly) OCMStubRecorder *(^ _andDo)(void (^)(NSInvocation *)); + +#define andForwardToRealObject() _andForwardToRealObject() +@property (nonatomic, readonly) OCMStubRecorder *(^ _andForwardToRealObject)(void); + +@end + + + diff --git a/AWSCoreTests/OCMock/OCMock/OCMock.h b/AWSCoreTests/OCMock/OCMock/OCMock.h new file mode 100644 index 00000000000..f0083b3507e --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMock.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import +#import +#import +#import +#import +#import +#import +#import + + +#define OCMClassMock(cls) [OCMockObject niceMockForClass:cls] + +#define OCMStrictClassMock(cls) [OCMockObject mockForClass:cls] + +#define OCMProtocolMock(protocol) [OCMockObject niceMockForProtocol:protocol] + +#define OCMStrictProtocolMock(protocol) [OCMockObject mockForProtocol:protocol] + +#define OCMPartialMock(obj) [OCMockObject partialMockForObject:obj] + +#define OCMObserverMock() [OCMockObject observerMock] + + +#define OCMStub(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginStubMacro]; \ + invocation; \ + [OCMMacroState endStubMacro]; \ + ); \ +}) + +#define OCMExpect(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginExpectMacro]; \ + invocation; \ + [OCMMacroState endExpectMacro]; \ + ); \ +}) + +#define ClassMethod(invocation) \ + _OCMSilenceWarnings( \ + [[OCMMacroState globalState] switchToClassMethod]; \ + invocation; \ + ); + + +#define OCMVerifyAll(mock) [mock verifyAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)] + +#define OCMVerifyAllWithDelay(mock, delay) [mock verifyWithDelay:delay atLocation:OCMMakeLocation(self, __FILE__, __LINE__)] + +#define OCMVerify(invocation) \ +({ \ + _OCMSilenceWarnings( \ + [OCMMacroState beginVerifyMacroAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)]; \ + invocation; \ + [OCMMacroState endVerifyMacro]; \ + ); \ +}) + +#define _OCMSilenceWarnings(macro) \ +({ \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wunused-value\"") \ + macro \ + _Pragma("clang diagnostic pop") \ +}) diff --git a/AWSCoreTests/OCMock/OCMock/OCMockObject.h b/AWSCoreTests/OCMock/OCMock/OCMockObject.h new file mode 100644 index 00000000000..63f2bae2be9 --- /dev/null +++ b/AWSCoreTests/OCMock/OCMock/OCMockObject.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2004-2014 Erik Doernenburg and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use these files except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#import + +@class OCMLocation; +@class OCMInvocationStub; +@class OCMStubRecorder; +@class OCMInvocationMatcher; +@class OCMInvocationExpectation; + + +@interface OCMockObject : NSProxy +{ + BOOL isNice; + BOOL expectationOrderMatters; + NSMutableArray *stubs; + NSMutableArray *expectations; + NSMutableArray *exceptions; + NSMutableArray *invocations; +} + ++ (id)mockForClass:(Class)aClass; ++ (id)mockForProtocol:(Protocol *)aProtocol; ++ (id)partialMockForObject:(NSObject *)anObject; + ++ (id)niceMockForClass:(Class)aClass; ++ (id)niceMockForProtocol:(Protocol *)aProtocol; + ++ (id)observerMock; + +- (instancetype)init; + +- (void)setExpectationOrderMatters:(BOOL)flag; + +- (id)stub; +- (id)expect; +- (id)reject; + +- (id)verify; +- (id)verifyAtLocation:(OCMLocation *)location; + +- (void)verifyWithDelay:(NSTimeInterval)delay; +- (void)verifyWithDelay:(NSTimeInterval)delay atLocation:(OCMLocation *)location; + +- (void)stopMocking; + +// internal use only + +- (void)addStub:(OCMInvocationStub *)aStub; +- (void)addExpectation:(OCMInvocationExpectation *)anExpectation; + +- (BOOL)handleInvocation:(NSInvocation *)anInvocation; +- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; +- (BOOL)handleSelector:(SEL)sel; + +- (void)verifyInvocation:(OCMInvocationMatcher *)matcher; +- (void)verifyInvocation:(OCMInvocationMatcher *)matcher atLocation:(OCMLocation *)location; + +@end + diff --git a/AWSCoreTests/OCMock/libOCMock.a b/AWSCoreTests/OCMock/libOCMock.a new file mode 100644 index 0000000000000000000000000000000000000000..9bb38e21a3b12ae932680ed8919b61f143087b6e GIT binary patch literal 2071640 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≪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
    e|=N+W(t^mS4-BeC^PS_RD7dkgmF;@4EW;Be#C` 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 VDQ{ZPSeo*VEjC<8D?IlQ{s%n#jcot` literal 0 HcmV?d00001 diff --git a/AWSDynamoDB.podspec b/AWSDynamoDB.podspec index f3f10d5cce5..6d14019115f 100644 --- a/AWSDynamoDB.podspec +++ b/AWSDynamoDB.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSDynamoDB' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSDynamoDB/*.{h,m}' end diff --git a/AWSDynamoDB.xcodeproj/project.pbxproj b/AWSDynamoDB.xcodeproj/project.pbxproj index 534e0d47fa5..09b1fae1ff1 100644 --- a/AWSDynamoDB.xcodeproj/project.pbxproj +++ b/AWSDynamoDB.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - BD0000001AB8C461004496EF /* AWSGeneralDynamoDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFFC1AB8C461004496EF /* AWSGeneralDynamoDBTests.m */; }; BD0000011AB8C461004496EF /* AWSDynamoDBObjectMapperSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFFD1AB8C461004496EF /* AWSDynamoDBObjectMapperSwiftTests.swift */; }; BD0000021AB8C461004496EF /* AWSDynamoDBObjectMapperTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFFE1AB8C461004496EF /* AWSDynamoDBObjectMapperTests.m */; }; BD0000031AB8C461004496EF /* AWSDynamoDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFFF1AB8C461004496EF /* AWSDynamoDBTests.m */; }; @@ -20,6 +19,12 @@ BDC91C571ABBA0E900F74D49 /* AWSDynamoDB.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559431AB375260067F4F1 /* AWSDynamoDB.h */; }; BDC91C581ABBA0E900F74D49 /* AWSDynamoDBModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559451AB375260067F4F1 /* AWSDynamoDBModel.h */; }; BDC91C591ABBA0E900F74D49 /* AWSDynamoDBObjectMapper.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559471AB375260067F4F1 /* AWSDynamoDBObjectMapper.h */; }; + BDD876A41B4B52AE009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876A31B4B52AE009268C7 /* libOCMock.a */; }; + BDF1258E1B45C12600DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000631AB8E20C004496EF /* AWSTestUtility.m */; }; + BDF1258F1B45C12600DFBFEC /* AWSGeneralDynamoDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFFC1AB8C461004496EF /* AWSGeneralDynamoDBTests.m */; }; + BDF125921B45C12600DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532591B03D374002CED62 /* libz.dylib */; }; + BDF125931B45C12600DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF481AB8B6F8004496EF /* libAWSCore.a */; }; + BDF125941B45C12600DFBFEC /* libAWSDynamoDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559271AB374F00067F4F1 /* libAWSDynamoDB.a */; }; BDF559331AB374F00067F4F1 /* libAWSDynamoDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559271AB374F00067F4F1 /* libAWSDynamoDB.a */; }; BDF5594B1AB375270067F4F1 /* AWSDynamoDB.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF559431AB375260067F4F1 /* AWSDynamoDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF5594C1AB375270067F4F1 /* AWSDynamoDBService.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF559441AB375260067F4F1 /* AWSDynamoDBService.m */; }; @@ -32,6 +37,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF1258A1B45C12600DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF5591F1AB374F00067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF559261AB374F00067F4F1; + remoteInfo = DynamoDB; + }; BDF559341AB374F00067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF5591F1AB374F00067F4F1 /* Project object */; @@ -58,7 +70,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 9F85B3DCB7942BDFD5AC15D6 /* Pods-AWSDynamoDB.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSDynamoDB.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSDynamoDB/Pods-AWSDynamoDB.release.xcconfig"; sourceTree = ""; }; BD0000411AB8C56E004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000621AB8E20C004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000631AB8E20C004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -70,6 +81,8 @@ BDB6EC2E1AB915B9004C4D80 /* AWSiOSSDKv2Tests-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AWSiOSSDKv2Tests-Bridging-Header.h"; path = "AWSCoreTests/AWSiOSSDKv2Tests-Bridging-Header.h"; sourceTree = SOURCE_ROOT; }; BDB73D6D1B1D3E9B00717559 /* AWSDynamoDBResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSDynamoDBResources.h; sourceTree = ""; }; BDB73D6E1B1D3E9B00717559 /* AWSDynamoDBResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSDynamoDBResources.m; sourceTree = ""; }; + BDD876A31B4B52AE009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF1259A1B45C12600DFBFEC /* AWSDynamoDBUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSDynamoDBUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559271AB374F00067F4F1 /* libAWSDynamoDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSDynamoDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559321AB374F00067F4F1 /* AWSDynamoDBTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSDynamoDBTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559381AB374F00067F4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../AWSDynamoDBTests/Info.plist; sourceTree = ""; }; @@ -81,11 +94,20 @@ BDF559481AB375260067F4F1 /* AWSDynamoDBObjectMapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSDynamoDBObjectMapper.m; path = ../AWSDynamoDB/AWSDynamoDBObjectMapper.m; sourceTree = ""; }; CEE532591B03D374002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE6A1AC1E1500095C4B7 /* AWSDynamoDBService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSDynamoDBService.h; path = ../AWSDynamoDB/AWSDynamoDBService.h; sourceTree = ""; }; - DDFD2473B32B034328A614B9 /* libPods-AWSDynamoDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSDynamoDB.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - EBAF4E5A29F812E8DB81C584 /* Pods-AWSDynamoDB.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSDynamoDB.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSDynamoDB/Pods-AWSDynamoDB.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125911B45C12600DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876A41B4B52AE009268C7 /* libOCMock.a in Frameworks */, + BDF125921B45C12600DFBFEC /* libz.dylib in Frameworks */, + BDF125931B45C12600DFBFEC /* libAWSCore.a in Frameworks */, + BDF125941B45C12600DFBFEC /* libAWSDynamoDB.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559241AB374F00067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -109,9 +131,9 @@ A5F6D5DAB609D2CE34387FFD /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876A31B4B52AE009268C7 /* libOCMock.a */, CEE532591B03D374002CED62 /* libz.dylib */, BD00FF481AB8B6F8004496EF /* libAWSCore.a */, - DDFD2473B32B034328A614B9 /* libPods-AWSDynamoDB.a */, ); name = Frameworks; sourceTree = ""; @@ -122,7 +144,6 @@ BDF559291AB374F00067F4F1 /* AWSDynamoDB */, BDF559361AB374F00067F4F1 /* AWSDynamoDBTests */, BDF559281AB374F00067F4F1 /* Products */, - FB0C9163F76D9A9E125E73BA /* Pods */, A5F6D5DAB609D2CE34387FFD /* Frameworks */, ); sourceTree = ""; @@ -132,6 +153,7 @@ children = ( BDF559271AB374F00067F4F1 /* libAWSDynamoDB.a */, BDF559321AB374F00067F4F1 /* AWSDynamoDBTests.xctest */, + BDF1259A1B45C12600DFBFEC /* AWSDynamoDBUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -176,15 +198,6 @@ name = "Supporting Files"; sourceTree = ""; }; - FB0C9163F76D9A9E125E73BA /* Pods */ = { - isa = PBXGroup; - children = ( - EBAF4E5A29F812E8DB81C584 /* Pods-AWSDynamoDB.debug.xcconfig */, - 9F85B3DCB7942BDFD5AC15D6 /* Pods-AWSDynamoDB.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -203,6 +216,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125881B45C12600DFBFEC /* AWSDynamoDBUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125971B45C12600DFBFEC /* Build configuration list for PBXNativeTarget "AWSDynamoDBUnitTests" */; + buildPhases = ( + BDF1258B1B45C12600DFBFEC /* Sources */, + BDF125911B45C12600DFBFEC /* Frameworks */, + BDF125951B45C12600DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125891B45C12600DFBFEC /* PBXTargetDependency */, + ); + name = AWSDynamoDBUnitTests; + productName = DynamoDBTests; + productReference = BDF1259A1B45C12600DFBFEC /* AWSDynamoDBUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF559261AB374F00067F4F1 /* AWSDynamoDB */ = { isa = PBXNativeTarget; buildConfigurationList = BDF5593B1AB374F00067F4F1 /* Build configuration list for PBXNativeTarget "AWSDynamoDB" */; @@ -270,11 +301,19 @@ targets = ( BDF559261AB374F00067F4F1 /* AWSDynamoDB */, BDF559311AB374F00067F4F1 /* AWSDynamoDBTests */, + BDF125881B45C12600DFBFEC /* AWSDynamoDBUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125951B45C12600DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559301AB374F00067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -286,6 +325,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF1258B1B45C12600DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF1258E1B45C12600DFBFEC /* AWSTestUtility.m in Sources */, + BDF1258F1B45C12600DFBFEC /* AWSGeneralDynamoDBTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559231AB374F00067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -304,7 +352,6 @@ BD0000021AB8C461004496EF /* AWSDynamoDBObjectMapperTests.m in Sources */, BD0000031AB8C461004496EF /* AWSDynamoDBTests.m in Sources */, BD0000641AB8E20C004496EF /* AWSTestUtility.m in Sources */, - BD0000001AB8C461004496EF /* AWSGeneralDynamoDBTests.m in Sources */, BD0000011AB8C461004496EF /* AWSDynamoDBObjectMapperSwiftTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -312,6 +359,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125891B45C12600DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF559261AB374F00067F4F1 /* AWSDynamoDB */; + targetProxy = BDF1258A1B45C12600DFBFEC /* PBXContainerItemProxy */; + }; BDF559351AB374F00067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF559261AB374F00067F4F1 /* AWSDynamoDB */; @@ -320,10 +372,74 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125981B45C12600DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSDynamoDBTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSDynamoDBUnitTests; + SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/AWSCoreTests/AWSiOSSDKv2Tests-Bridging-Header.h"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125991B45C12600DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSDynamoDBTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSDynamoDBUnitTests; + SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/AWSCoreTests/AWSiOSSDKv2Tests-Bridging-Header.h"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF559391AB374F00067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -365,6 +481,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -439,6 +559,7 @@ ); INFOPLIST_FILE = AWSDynamoDBTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSDynamoDBTests; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/AWSCoreTests/AWSiOSSDKv2Tests-Bridging-Header.h"; }; @@ -455,6 +576,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSDynamoDBTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSDynamoDBTests; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/AWSCoreTests/AWSiOSSDKv2Tests-Bridging-Header.h"; }; @@ -463,6 +585,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125971B45C12600DFBFEC /* Build configuration list for PBXNativeTarget "AWSDynamoDBUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125981B45C12600DFBFEC /* Debug */, + BDF125991B45C12600DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF559221AB374F00067F4F1 /* Build configuration list for PBXProject "AWSDynamoDB" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSDynamoDB.xcodeproj/xcshareddata/xcschemes/AWSDynamoDB.xcscheme b/AWSDynamoDB.xcodeproj/xcshareddata/xcschemes/AWSDynamoDB.xcscheme new file mode 100644 index 00000000000..a806a4d1694 --- /dev/null +++ b/AWSDynamoDB.xcodeproj/xcshareddata/xcschemes/AWSDynamoDB.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSDynamoDB/AWSDynamoDBService.m b/AWSDynamoDB/AWSDynamoDBService.m index 1ac789f41eb..1996bb46679 100644 --- a/AWSDynamoDB/AWSDynamoDBService.m +++ b/AWSDynamoDB/AWSDynamoDBService.m @@ -217,9 +217,7 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.requestSerializer = [AWSJSONRequestSerializer new]; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSDynamoDBRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, - @"Content-Type" : @"application/x-amz-json-1.0", - @"Accept-Encoding" : @""}; + _configuration.headers = @{@"Content-Type" : @"application/x-amz-json-1.0"}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSDynamoDBTests/AWSGeneralDynamoDBTests.m b/AWSDynamoDBTests/AWSGeneralDynamoDBTests.m index 6e298d54b7b..5da769ca399 100644 --- a/AWSDynamoDBTests/AWSGeneralDynamoDBTests.m +++ b/AWSDynamoDBTests/AWSGeneralDynamoDBTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSDynamoDB.h" +static id mockNetworking = nil; + @interface AWSGeneralDynamoDBTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralDynamoDBTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testBatchGetItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] batchGetItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -70,13 +84,20 @@ - (void)testBatchWriteItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] batchWriteItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreateTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] createTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDeleteItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] deleteItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDeleteTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] deleteTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDescribeTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] describeTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] getItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -160,13 +216,20 @@ - (void)testListTables { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] listTables:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -175,13 +238,20 @@ - (void)testPutItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] putItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -190,13 +260,20 @@ - (void)testQuery { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] query:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -205,13 +282,20 @@ - (void)testScan { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] scan:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -220,13 +304,20 @@ - (void)testUpdateItem { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] updateItem:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } @@ -235,13 +326,20 @@ - (void)testUpdateTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSDynamoDB DynamoDBForKey:key] updateTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSDynamoDB removeDynamoDBForKey:key]; } diff --git a/AWSEC2.podspec b/AWSEC2.podspec index 282dbf9f4dd..7930290ded0 100644 --- a/AWSEC2.podspec +++ b/AWSEC2.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSEC2' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSEC2/*.{h,m}' end diff --git a/AWSEC2.xcodeproj/project.pbxproj b/AWSEC2.xcodeproj/project.pbxproj index 932c542ca1a..19ee3cf3bdf 100644 --- a/AWSEC2.xcodeproj/project.pbxproj +++ b/AWSEC2.xcodeproj/project.pbxproj @@ -10,13 +10,18 @@ BD0000401AB8C560004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00003F1AB8C560004496EF /* credentials.json */; }; BD0000611AB8E1FD004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000601AB8E1FD004496EF /* AWSTestUtility.m */; }; BD00FF471AB8B6F0004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF461AB8B6F0004496EF /* libAWSCore.a */; }; - BD00FFFA1AB8C456004496EF /* AWSGeneralEC2Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF81AB8C456004496EF /* AWSGeneralEC2Tests.m */; }; BD00FFFB1AB8C456004496EF /* AWSEC2Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF91AB8C456004496EF /* AWSEC2Tests.m */; }; BD9D97601AC1EE9700CEEE08 /* AWSEC2Service.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE6C1AC1E1780095C4B7 /* AWSEC2Service.h */; }; BDB73D731B1D3ECD00717559 /* AWSEC2Resources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D711B1D3ECD00717559 /* AWSEC2Resources.h */; }; BDB73D741B1D3ECD00717559 /* AWSEC2Resources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D721B1D3ECD00717559 /* AWSEC2Resources.m */; }; BDC91C541ABBA0DB00F74D49 /* AWSEC2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559761AB375AE0067F4F1 /* AWSEC2.h */; }; BDC91C551ABBA0DB00F74D49 /* AWSEC2Model.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559781AB375AE0067F4F1 /* AWSEC2Model.h */; }; + BDD876A61B4B52C1009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876A51B4B52C0009268C7 /* libOCMock.a */; }; + BDF125A11B45C17D00DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000601AB8E1FD004496EF /* AWSTestUtility.m */; }; + BDF125A21B45C17D00DFBFEC /* AWSGeneralEC2Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF81AB8C456004496EF /* AWSGeneralEC2Tests.m */; }; + BDF125A41B45C17D00DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5326B1B03D3C4002CED62 /* libz.dylib */; }; + BDF125A51B45C17D00DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF461AB8B6F0004496EF /* libAWSCore.a */; }; + BDF125A61B45C17D00DFBFEC /* libAWSEC2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF5595A1AB375800067F4F1 /* libAWSEC2.a */; }; BDF559661AB375800067F4F1 /* libAWSEC2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF5595A1AB375800067F4F1 /* libAWSEC2.a */; }; BDF5597C1AB375AE0067F4F1 /* AWSEC2.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF559761AB375AE0067F4F1 /* AWSEC2.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF5597D1AB375AE0067F4F1 /* AWSEC2Service.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF559771AB375AE0067F4F1 /* AWSEC2Service.m */; }; @@ -27,6 +32,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF1259E1B45C17D00DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF559521AB375800067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF559591AB375800067F4F1; + remoteInfo = EC2; + }; BDF559671AB375800067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF559521AB375800067F4F1 /* Project object */; @@ -52,7 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1652315196F8BFB7080141B4 /* libPods-AWSEC2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSEC2.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD00003F1AB8C560004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD00005F1AB8E1FD004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000601AB8E1FD004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -61,6 +72,8 @@ BD00FFF91AB8C456004496EF /* AWSEC2Tests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSEC2Tests.m; path = ../AWSEC2Tests/AWSEC2Tests.m; sourceTree = ""; }; BDB73D711B1D3ECD00717559 /* AWSEC2Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSEC2Resources.h; sourceTree = ""; }; BDB73D721B1D3ECD00717559 /* AWSEC2Resources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSEC2Resources.m; sourceTree = ""; }; + BDD876A51B4B52C0009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125AC1B45C17D00DFBFEC /* AWSEC2UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSEC2UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF5595A1AB375800067F4F1 /* libAWSEC2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSEC2.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559651AB375800067F4F1 /* AWSEC2Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSEC2Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF5596B1AB375800067F4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../AWSEC2Tests/Info.plist; sourceTree = ""; }; @@ -68,13 +81,22 @@ BDF559771AB375AE0067F4F1 /* AWSEC2Service.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSEC2Service.m; path = ../AWSEC2/AWSEC2Service.m; sourceTree = ""; }; BDF559781AB375AE0067F4F1 /* AWSEC2Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEC2Model.h; path = ../AWSEC2/AWSEC2Model.h; sourceTree = ""; }; BDF559791AB375AE0067F4F1 /* AWSEC2Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSEC2Model.m; path = ../AWSEC2/AWSEC2Model.m; sourceTree = ""; }; - C77BF0C233DD79AB8C40D0C2 /* Pods-AWSEC2.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSEC2.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSEC2/Pods-AWSEC2.debug.xcconfig"; sourceTree = ""; }; CEE5326B1B03D3C4002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE6C1AC1E1780095C4B7 /* AWSEC2Service.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSEC2Service.h; path = ../AWSEC2/AWSEC2Service.h; sourceTree = ""; }; - DC7D62494B298408B770C894 /* Pods-AWSEC2.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSEC2.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSEC2/Pods-AWSEC2.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125A31B45C17D00DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876A61B4B52C1009268C7 /* libOCMock.a in Frameworks */, + BDF125A41B45C17D00DFBFEC /* libz.dylib in Frameworks */, + BDF125A51B45C17D00DFBFEC /* libAWSCore.a in Frameworks */, + BDF125A61B45C17D00DFBFEC /* libAWSEC2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559571AB375800067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -98,9 +120,9 @@ 44F883773B67388A29D3A410 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876A51B4B52C0009268C7 /* libOCMock.a */, CEE5326B1B03D3C4002CED62 /* libz.dylib */, BD00FF461AB8B6F0004496EF /* libAWSCore.a */, - 1652315196F8BFB7080141B4 /* libPods-AWSEC2.a */, ); name = Frameworks; sourceTree = ""; @@ -111,7 +133,6 @@ BDF5595C1AB375800067F4F1 /* AWSEC2 */, BDF559691AB375800067F4F1 /* AWSEC2Tests */, BDF5595B1AB375800067F4F1 /* Products */, - CB7989A3CE5779C4C4D6F37E /* Pods */, 44F883773B67388A29D3A410 /* Frameworks */, ); sourceTree = ""; @@ -121,6 +142,7 @@ children = ( BDF5595A1AB375800067F4F1 /* libAWSEC2.a */, BDF559651AB375800067F4F1 /* AWSEC2Tests.xctest */, + BDF125AC1B45C17D00DFBFEC /* AWSEC2UnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -160,15 +182,6 @@ name = "Supporting Files"; sourceTree = ""; }; - CB7989A3CE5779C4C4D6F37E /* Pods */ = { - isa = PBXGroup; - children = ( - C77BF0C233DD79AB8C40D0C2 /* Pods-AWSEC2.debug.xcconfig */, - DC7D62494B298408B770C894 /* Pods-AWSEC2.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -186,6 +199,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF1259C1B45C17D00DFBFEC /* AWSEC2UnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125A91B45C17D00DFBFEC /* Build configuration list for PBXNativeTarget "AWSEC2UnitTests" */; + buildPhases = ( + BDF1259F1B45C17D00DFBFEC /* Sources */, + BDF125A31B45C17D00DFBFEC /* Frameworks */, + BDF125A71B45C17D00DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF1259D1B45C17D00DFBFEC /* PBXTargetDependency */, + ); + name = AWSEC2UnitTests; + productName = EC2Tests; + productReference = BDF125AC1B45C17D00DFBFEC /* AWSEC2UnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF559591AB375800067F4F1 /* AWSEC2 */ = { isa = PBXNativeTarget; buildConfigurationList = BDF5596E1AB375800067F4F1 /* Build configuration list for PBXNativeTarget "AWSEC2" */; @@ -253,11 +284,19 @@ targets = ( BDF559591AB375800067F4F1 /* AWSEC2 */, BDF559641AB375800067F4F1 /* AWSEC2Tests */, + BDF1259C1B45C17D00DFBFEC /* AWSEC2UnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125A71B45C17D00DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559631AB375800067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -269,6 +308,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF1259F1B45C17D00DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125A11B45C17D00DFBFEC /* AWSTestUtility.m in Sources */, + BDF125A21B45C17D00DFBFEC /* AWSGeneralEC2Tests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559561AB375800067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -285,13 +333,17 @@ files = ( BD00FFFB1AB8C456004496EF /* AWSEC2Tests.m in Sources */, BD0000611AB8E1FD004496EF /* AWSTestUtility.m in Sources */, - BD00FFFA1AB8C456004496EF /* AWSGeneralEC2Tests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF1259D1B45C17D00DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF559591AB375800067F4F1 /* AWSEC2 */; + targetProxy = BDF1259E1B45C17D00DFBFEC /* PBXContainerItemProxy */; + }; BDF559681AB375800067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF559591AB375800067F4F1 /* AWSEC2 */; @@ -300,10 +352,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125AA1B45C17D00DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSEC2Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSEC2UnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125AB1B45C17D00DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSEC2Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSEC2UnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF5596C1AB375800067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +459,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -419,6 +537,7 @@ ); INFOPLIST_FILE = AWSEC2Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSEC2Tests; }; name = Debug; @@ -434,6 +553,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSEC2Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSEC2Tests; }; name = Release; @@ -441,6 +561,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125A91B45C17D00DFBFEC /* Build configuration list for PBXNativeTarget "AWSEC2UnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125AA1B45C17D00DFBFEC /* Debug */, + BDF125AB1B45C17D00DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF559551AB375800067F4F1 /* Build configuration list for PBXProject "AWSEC2" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSEC2.xcodeproj/xcshareddata/xcschemes/AWSEC2.xcscheme b/AWSEC2.xcodeproj/xcshareddata/xcschemes/AWSEC2.xcscheme new file mode 100644 index 00000000000..d3b57ecb835 --- /dev/null +++ b/AWSEC2.xcodeproj/xcshareddata/xcschemes/AWSEC2.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSEC2/AWSEC2Service.m b/AWSEC2/AWSEC2Service.m index 821d4477723..35e1f67fe63 100644 --- a/AWSEC2/AWSEC2Service.m +++ b/AWSEC2/AWSEC2Service.m @@ -201,7 +201,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSEC2RequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSEC2Tests/AWSEC2Tests.m b/AWSEC2Tests/AWSEC2Tests.m index 838fac1af70..44c84211099 100644 --- a/AWSEC2Tests/AWSEC2Tests.m +++ b/AWSEC2Tests/AWSEC2Tests.m @@ -13,6 +13,7 @@ permissions and limitations under the License. */ +#import #import #import "AWSEC2.h" #import "AWSTestUtility.h" diff --git a/AWSEC2Tests/AWSGeneralEC2Tests.m b/AWSEC2Tests/AWSGeneralEC2Tests.m index 34f244dff9e..e2ac6c7a76a 100644 --- a/AWSEC2Tests/AWSGeneralEC2Tests.m +++ b/AWSEC2Tests/AWSGeneralEC2Tests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSEC2.h" +static id mockNetworking = nil; + @interface AWSGeneralEC2Tests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralEC2Tests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAcceptVpcPeeringConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] acceptVpcPeeringConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -70,13 +84,20 @@ - (void)testAllocateAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] allocateAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -85,13 +106,20 @@ - (void)testAssignPrivateIpAddresses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] assignPrivateIpAddresses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -100,13 +128,20 @@ - (void)testAssociateAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] associateAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -115,13 +150,20 @@ - (void)testAssociateDhcpOptions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] associateDhcpOptions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -130,13 +172,42 @@ - (void)testAssociateRouteTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] associateRouteTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testAttachClassicLinkVpc { + NSString *key = @"testAttachClassicLinkVpc"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] attachClassicLinkVpc:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -145,13 +216,20 @@ - (void)testAttachInternetGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] attachInternetGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -160,13 +238,20 @@ - (void)testAttachNetworkInterface { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] attachNetworkInterface:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -175,13 +260,20 @@ - (void)testAttachVolume { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] attachVolume:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -190,13 +282,20 @@ - (void)testAttachVpnGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] attachVpnGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -205,13 +304,20 @@ - (void)testAuthorizeSecurityGroupEgress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] authorizeSecurityGroupEgress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -220,13 +326,20 @@ - (void)testAuthorizeSecurityGroupIngress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] authorizeSecurityGroupIngress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -235,13 +348,20 @@ - (void)testBundleInstance { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] bundleInstance:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -250,13 +370,20 @@ - (void)testCancelBundleTask { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] cancelBundleTask:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -265,13 +392,20 @@ - (void)testCancelConversionTask { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] cancelConversionTask:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -280,13 +414,20 @@ - (void)testCancelExportTask { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] cancelExportTask:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -295,13 +436,20 @@ - (void)testCancelReservedInstancesListing { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] cancelReservedInstancesListing:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -310,13 +458,20 @@ - (void)testCancelSpotInstanceRequests { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] cancelSpotInstanceRequests:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -325,13 +480,20 @@ - (void)testConfirmProductInstance { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] confirmProductInstance:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -340,13 +502,20 @@ - (void)testCreateCustomerGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createCustomerGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -355,13 +524,20 @@ - (void)testCreateDhcpOptions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createDhcpOptions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -370,13 +546,20 @@ - (void)testCreateImage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createImage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -385,13 +568,20 @@ - (void)testCreateInstanceExportTask { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createInstanceExportTask:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -400,13 +590,20 @@ - (void)testCreateInternetGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createInternetGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -415,13 +612,20 @@ - (void)testCreateKeyPair { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createKeyPair:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -430,13 +634,20 @@ - (void)testCreateNetworkAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createNetworkAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -445,13 +656,20 @@ - (void)testCreateNetworkAclEntry { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createNetworkAclEntry:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -460,13 +678,20 @@ - (void)testCreateNetworkInterface { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createNetworkInterface:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -475,13 +700,20 @@ - (void)testCreatePlacementGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createPlacementGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -490,13 +722,20 @@ - (void)testCreateReservedInstancesListing { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createReservedInstancesListing:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -505,13 +744,20 @@ - (void)testCreateRoute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createRoute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -520,13 +766,20 @@ - (void)testCreateRouteTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createRouteTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -535,13 +788,20 @@ - (void)testCreateSecurityGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createSecurityGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -550,13 +810,20 @@ - (void)testCreateSnapshot { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createSnapshot:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -565,13 +832,20 @@ - (void)testCreateSpotDatafeedSubscription { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createSpotDatafeedSubscription:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -580,13 +854,20 @@ - (void)testCreateSubnet { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createSubnet:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -595,13 +876,20 @@ - (void)testCreateTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -610,13 +898,20 @@ - (void)testCreateVolume { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVolume:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -625,13 +920,20 @@ - (void)testCreateVpc { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVpc:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -640,13 +942,20 @@ - (void)testCreateVpcPeeringConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVpcPeeringConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -655,13 +964,20 @@ - (void)testCreateVpnConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVpnConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -670,13 +986,20 @@ - (void)testCreateVpnConnectionRoute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVpnConnectionRoute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -685,13 +1008,20 @@ - (void)testCreateVpnGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] createVpnGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -700,13 +1030,20 @@ - (void)testDeleteCustomerGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteCustomerGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -715,13 +1052,20 @@ - (void)testDeleteDhcpOptions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteDhcpOptions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -730,13 +1074,20 @@ - (void)testDeleteInternetGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteInternetGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -745,13 +1096,20 @@ - (void)testDeleteKeyPair { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteKeyPair:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -760,13 +1118,20 @@ - (void)testDeleteNetworkAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteNetworkAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -775,13 +1140,20 @@ - (void)testDeleteNetworkAclEntry { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteNetworkAclEntry:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -790,13 +1162,20 @@ - (void)testDeleteNetworkInterface { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteNetworkInterface:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -805,13 +1184,20 @@ - (void)testDeletePlacementGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deletePlacementGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -820,13 +1206,20 @@ - (void)testDeleteRoute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteRoute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -835,13 +1228,20 @@ - (void)testDeleteRouteTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteRouteTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -850,13 +1250,20 @@ - (void)testDeleteSecurityGroup { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteSecurityGroup:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -865,13 +1272,20 @@ - (void)testDeleteSnapshot { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteSnapshot:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -880,13 +1294,20 @@ - (void)testDeleteSpotDatafeedSubscription { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteSpotDatafeedSubscription:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -895,13 +1316,20 @@ - (void)testDeleteSubnet { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteSubnet:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -910,13 +1338,20 @@ - (void)testDeleteTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -925,13 +1360,20 @@ - (void)testDeleteVolume { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVolume:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -940,13 +1382,20 @@ - (void)testDeleteVpc { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVpc:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -955,13 +1404,20 @@ - (void)testDeleteVpcPeeringConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVpcPeeringConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -970,13 +1426,20 @@ - (void)testDeleteVpnConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVpnConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -985,13 +1448,20 @@ - (void)testDeleteVpnConnectionRoute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVpnConnectionRoute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1000,13 +1470,20 @@ - (void)testDeleteVpnGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deleteVpnGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1015,13 +1492,20 @@ - (void)testDeregisterImage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] deregisterImage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1030,13 +1514,20 @@ - (void)testDescribeAccountAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeAccountAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1045,13 +1536,20 @@ - (void)testDescribeAddresses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeAddresses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1060,13 +1558,20 @@ - (void)testDescribeAvailabilityZones { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeAvailabilityZones:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1075,13 +1580,42 @@ - (void)testDescribeBundleTasks { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeBundleTasks:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testDescribeClassicLinkInstances { + NSString *key = @"testDescribeClassicLinkInstances"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] describeClassicLinkInstances:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1090,13 +1624,20 @@ - (void)testDescribeConversionTasks { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeConversionTasks:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1105,13 +1646,20 @@ - (void)testDescribeCustomerGateways { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeCustomerGateways:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1120,13 +1668,20 @@ - (void)testDescribeDhcpOptions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeDhcpOptions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1135,13 +1690,20 @@ - (void)testDescribeExportTasks { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeExportTasks:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1150,13 +1712,20 @@ - (void)testDescribeImageAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeImageAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1165,13 +1734,20 @@ - (void)testDescribeImages { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeImages:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1180,13 +1756,20 @@ - (void)testDescribeInstanceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeInstanceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1195,13 +1778,20 @@ - (void)testDescribeInstanceStatus { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeInstanceStatus:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1210,13 +1800,20 @@ - (void)testDescribeInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1225,13 +1822,20 @@ - (void)testDescribeInternetGateways { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeInternetGateways:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1240,13 +1844,20 @@ - (void)testDescribeKeyPairs { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeKeyPairs:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1255,13 +1866,20 @@ - (void)testDescribeNetworkAcls { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeNetworkAcls:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1270,13 +1888,20 @@ - (void)testDescribeNetworkInterfaceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeNetworkInterfaceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1285,13 +1910,20 @@ - (void)testDescribeNetworkInterfaces { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeNetworkInterfaces:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1300,13 +1932,20 @@ - (void)testDescribePlacementGroups { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describePlacementGroups:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1315,13 +1954,20 @@ - (void)testDescribeRegions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeRegions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1330,13 +1976,20 @@ - (void)testDescribeReservedInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeReservedInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1345,13 +1998,20 @@ - (void)testDescribeReservedInstancesListings { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeReservedInstancesListings:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1360,13 +2020,20 @@ - (void)testDescribeReservedInstancesModifications { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeReservedInstancesModifications:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1375,13 +2042,20 @@ - (void)testDescribeReservedInstancesOfferings { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeReservedInstancesOfferings:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1390,13 +2064,20 @@ - (void)testDescribeRouteTables { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeRouteTables:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1405,13 +2086,20 @@ - (void)testDescribeSecurityGroups { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSecurityGroups:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1420,13 +2108,20 @@ - (void)testDescribeSnapshotAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSnapshotAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1435,13 +2130,20 @@ - (void)testDescribeSnapshots { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSnapshots:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1450,13 +2152,20 @@ - (void)testDescribeSpotDatafeedSubscription { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSpotDatafeedSubscription:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1465,13 +2174,20 @@ - (void)testDescribeSpotInstanceRequests { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSpotInstanceRequests:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1480,13 +2196,20 @@ - (void)testDescribeSpotPriceHistory { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSpotPriceHistory:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1495,13 +2218,20 @@ - (void)testDescribeSubnets { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeSubnets:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1510,13 +2240,20 @@ - (void)testDescribeTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1525,13 +2262,20 @@ - (void)testDescribeVolumeAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVolumeAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1540,13 +2284,20 @@ - (void)testDescribeVolumeStatus { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVolumeStatus:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1555,13 +2306,20 @@ - (void)testDescribeVolumes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVolumes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1570,13 +2328,42 @@ - (void)testDescribeVpcAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVpcAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testDescribeVpcClassicLink { + NSString *key = @"testDescribeVpcClassicLink"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] describeVpcClassicLink:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1585,13 +2372,20 @@ - (void)testDescribeVpcPeeringConnections { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVpcPeeringConnections:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1600,13 +2394,20 @@ - (void)testDescribeVpcs { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVpcs:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1615,13 +2416,20 @@ - (void)testDescribeVpnConnections { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVpnConnections:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1630,13 +2438,42 @@ - (void)testDescribeVpnGateways { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] describeVpnGateways:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testDetachClassicLinkVpc { + NSString *key = @"testDetachClassicLinkVpc"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] detachClassicLinkVpc:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1645,13 +2482,20 @@ - (void)testDetachInternetGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] detachInternetGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1660,13 +2504,20 @@ - (void)testDetachNetworkInterface { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] detachNetworkInterface:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1675,13 +2526,20 @@ - (void)testDetachVolume { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] detachVolume:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1690,13 +2548,20 @@ - (void)testDetachVpnGateway { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] detachVpnGateway:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1705,13 +2570,42 @@ - (void)testDisableVgwRoutePropagation { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] disableVgwRoutePropagation:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testDisableVpcClassicLink { + NSString *key = @"testDisableVpcClassicLink"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] disableVpcClassicLink:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1720,13 +2614,20 @@ - (void)testDisassociateAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] disassociateAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1735,13 +2636,20 @@ - (void)testDisassociateRouteTable { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] disassociateRouteTable:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1750,13 +2658,20 @@ - (void)testEnableVgwRoutePropagation { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] enableVgwRoutePropagation:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1765,13 +2680,42 @@ - (void)testEnableVolumeIO { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] enableVolumeIO:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSEC2 removeEC2ForKey:key]; +} + +- (void)testEnableVpcClassicLink { + NSString *key = @"testEnableVpcClassicLink"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; + [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSEC2 EC2ForKey:key] enableVpcClassicLink:nil] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.exception); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1780,13 +2724,20 @@ - (void)testGetConsoleOutput { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] getConsoleOutput:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1795,13 +2746,20 @@ - (void)testGetPasswordData { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] getPasswordData:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1810,13 +2768,20 @@ - (void)testImportInstance { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] importInstance:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1825,13 +2790,20 @@ - (void)testImportKeyPair { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] importKeyPair:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1840,13 +2812,20 @@ - (void)testImportVolume { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] importVolume:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1855,13 +2834,20 @@ - (void)testModifyImageAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyImageAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1870,13 +2856,20 @@ - (void)testModifyInstanceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyInstanceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1885,13 +2878,20 @@ - (void)testModifyNetworkInterfaceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyNetworkInterfaceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1900,13 +2900,20 @@ - (void)testModifyReservedInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyReservedInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1915,13 +2922,20 @@ - (void)testModifySnapshotAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifySnapshotAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1930,13 +2944,20 @@ - (void)testModifySubnetAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifySubnetAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1945,13 +2966,20 @@ - (void)testModifyVolumeAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyVolumeAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1960,13 +2988,20 @@ - (void)testModifyVpcAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] modifyVpcAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1975,13 +3010,20 @@ - (void)testMonitorInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] monitorInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -1990,13 +3032,20 @@ - (void)testPurchaseReservedInstancesOffering { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] purchaseReservedInstancesOffering:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2005,13 +3054,20 @@ - (void)testRebootInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] rebootInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2020,13 +3076,20 @@ - (void)testRegisterImage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] registerImage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2035,13 +3098,20 @@ - (void)testRejectVpcPeeringConnection { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] rejectVpcPeeringConnection:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2050,13 +3120,20 @@ - (void)testReleaseAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] releaseAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2065,13 +3142,20 @@ - (void)testReplaceNetworkAclAssociation { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replaceNetworkAclAssociation:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2080,13 +3164,20 @@ - (void)testReplaceNetworkAclEntry { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replaceNetworkAclEntry:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2095,13 +3186,20 @@ - (void)testReplaceRoute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replaceRoute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2110,13 +3208,20 @@ - (void)testReplaceRouteTableAssociation { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replaceRouteTableAssociation:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2125,13 +3230,20 @@ - (void)testReplicateImage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replicateImage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2140,13 +3252,20 @@ - (void)testReplicateSnapshot { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] replicateSnapshot:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2155,13 +3274,20 @@ - (void)testReportInstanceStatus { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] reportInstanceStatus:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2170,13 +3296,20 @@ - (void)testRequestSpotInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] requestSpotInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2185,13 +3318,20 @@ - (void)testResetImageAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] resetImageAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2200,13 +3340,20 @@ - (void)testResetInstanceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] resetInstanceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2215,13 +3362,20 @@ - (void)testResetNetworkInterfaceAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] resetNetworkInterfaceAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2230,13 +3384,20 @@ - (void)testResetSnapshotAttribute { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] resetSnapshotAttribute:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2245,13 +3406,20 @@ - (void)testRevokeSecurityGroupEgress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] revokeSecurityGroupEgress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2260,13 +3428,20 @@ - (void)testRevokeSecurityGroupIngress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] revokeSecurityGroupIngress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2275,13 +3450,20 @@ - (void)testRunInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] runInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2290,13 +3472,20 @@ - (void)testStartInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] startInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2305,13 +3494,20 @@ - (void)testStopInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] stopInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2320,13 +3516,20 @@ - (void)testTerminateInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] terminateInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2335,13 +3538,20 @@ - (void)testUnassignPrivateIpAddresses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] unassignPrivateIpAddresses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } @@ -2350,13 +3560,20 @@ - (void)testUnmonitorInstances { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSEC2 registerEC2WithConfiguration:configuration forKey:key]; + AWSEC2 *awsClient = [AWSEC2 EC2ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSEC2 EC2ForKey:key] unmonitorInstances:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSEC2 removeEC2ForKey:key]; } diff --git a/AWSElasticLoadBalancing.podspec b/AWSElasticLoadBalancing.podspec index 144585f9e2d..2ce5d35f729 100644 --- a/AWSElasticLoadBalancing.podspec +++ b/AWSElasticLoadBalancing.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSElasticLoadBalancing' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSElasticLoadBalancing/*.{h,m}' end diff --git a/AWSElasticLoadBalancing.xcodeproj/project.pbxproj b/AWSElasticLoadBalancing.xcodeproj/project.pbxproj index 8ebc3781d45..79b32c39970 100644 --- a/AWSElasticLoadBalancing.xcodeproj/project.pbxproj +++ b/AWSElasticLoadBalancing.xcodeproj/project.pbxproj @@ -10,13 +10,18 @@ BD00003E1AB8C554004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00003D1AB8C554004496EF /* credentials.json */; }; BD00005E1AB8E1EA004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00005D1AB8E1EA004496EF /* AWSTestUtility.m */; }; BD00FF451AB8B6E2004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF441AB8B6E2004496EF /* libAWSCore.a */; }; - BD00FFF61AB8C448004496EF /* AWSGeneralElasticLoadBalancingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF41AB8C448004496EF /* AWSGeneralElasticLoadBalancingTests.m */; }; BD00FFF71AB8C448004496EF /* AWSElasticLoadBalancingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF51AB8C448004496EF /* AWSElasticLoadBalancingTests.m */; }; BD9D97611AC1EEA300CEEE08 /* AWSElasticLoadBalancingService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE6E1AC1E19D0095C4B7 /* AWSElasticLoadBalancingService.h */; }; BDB73D771B1D3EEB00717559 /* AWSElasticLoadBalancingResources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D751B1D3EEB00717559 /* AWSElasticLoadBalancingResources.h */; }; BDB73D781B1D3EEB00717559 /* AWSElasticLoadBalancingResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D761B1D3EEB00717559 /* AWSElasticLoadBalancingResources.m */; }; BDC91C511ABBA0D100F74D49 /* AWSElasticLoadBalancing.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559A51AB3761C0067F4F1 /* AWSElasticLoadBalancing.h */; }; BDC91C521ABBA0D100F74D49 /* AWSElasticLoadBalancingModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559A71AB3761C0067F4F1 /* AWSElasticLoadBalancingModel.h */; }; + BDD876A81B4B52CE009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876A71B4B52CE009268C7 /* libOCMock.a */; }; + BDF125B21B45C1A900DFBFEC /* AWSGeneralElasticLoadBalancingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF41AB8C448004496EF /* AWSGeneralElasticLoadBalancingTests.m */; }; + BDF125B31B45C1A900DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00005D1AB8E1EA004496EF /* AWSTestUtility.m */; }; + BDF125B61B45C1A900DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5325F1B03D397002CED62 /* libz.dylib */; }; + BDF125B71B45C1A900DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF441AB8B6E2004496EF /* libAWSCore.a */; }; + BDF125B81B45C1A900DFBFEC /* libAWSElasticLoadBalancing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559891AB375EC0067F4F1 /* libAWSElasticLoadBalancing.a */; }; BDF559951AB375EC0067F4F1 /* libAWSElasticLoadBalancing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559891AB375EC0067F4F1 /* libAWSElasticLoadBalancing.a */; }; BDF559AB1AB3761C0067F4F1 /* AWSElasticLoadBalancing.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF559A51AB3761C0067F4F1 /* AWSElasticLoadBalancing.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF559AC1AB3761C0067F4F1 /* AWSElasticLoadBalancingService.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF559A61AB3761C0067F4F1 /* AWSElasticLoadBalancingService.m */; }; @@ -27,6 +32,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125B01B45C1A900DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF559811AB375EC0067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF559881AB375EC0067F4F1; + remoteInfo = ElasticLoadBalancing; + }; BDF559961AB375EC0067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF559811AB375EC0067F4F1 /* Project object */; @@ -52,9 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1558F3BC5E9EBE610AB64769 /* Pods-AWSElasticLoadBalancing.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSElasticLoadBalancing.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSElasticLoadBalancing/Pods-AWSElasticLoadBalancing.debug.xcconfig"; sourceTree = ""; }; - 25B63F98149D98A84CEDCF46 /* libPods-AWSElasticLoadBalancing.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSElasticLoadBalancing.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - BBFBBE8FE992747E1198A3EE /* Pods-AWSElasticLoadBalancing.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSElasticLoadBalancing.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSElasticLoadBalancing/Pods-AWSElasticLoadBalancing.release.xcconfig"; sourceTree = ""; }; BD00003D1AB8C554004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD00005C1AB8E1EA004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD00005D1AB8E1EA004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -63,6 +72,8 @@ BD00FFF51AB8C448004496EF /* AWSElasticLoadBalancingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSElasticLoadBalancingTests.m; sourceTree = ""; }; BDB73D751B1D3EEB00717559 /* AWSElasticLoadBalancingResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSElasticLoadBalancingResources.h; sourceTree = ""; }; BDB73D761B1D3EEB00717559 /* AWSElasticLoadBalancingResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSElasticLoadBalancingResources.m; sourceTree = ""; }; + BDD876A71B4B52CE009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125BE1B45C1A900DFBFEC /* AWSElasticLoadBalancingUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSElasticLoadBalancingUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559891AB375EC0067F4F1 /* libAWSElasticLoadBalancing.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSElasticLoadBalancing.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559941AB375EC0067F4F1 /* AWSElasticLoadBalancingTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSElasticLoadBalancingTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF5599A1AB375EC0067F4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -75,6 +86,17 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125B51B45C1A900DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876A81B4B52CE009268C7 /* libOCMock.a in Frameworks */, + BDF125B61B45C1A900DFBFEC /* libz.dylib in Frameworks */, + BDF125B71B45C1A900DFBFEC /* libAWSCore.a in Frameworks */, + BDF125B81B45C1A900DFBFEC /* libAWSElasticLoadBalancing.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559861AB375EC0067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -98,29 +120,19 @@ 412CEC016EC21D18D1D11C56 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876A71B4B52CE009268C7 /* libOCMock.a */, CEE5325F1B03D397002CED62 /* libz.dylib */, BD00FF441AB8B6E2004496EF /* libAWSCore.a */, - 25B63F98149D98A84CEDCF46 /* libPods-AWSElasticLoadBalancing.a */, ); name = Frameworks; sourceTree = ""; }; - 4EF3408BFEAC16E73120B5DF /* Pods */ = { - isa = PBXGroup; - children = ( - 1558F3BC5E9EBE610AB64769 /* Pods-AWSElasticLoadBalancing.debug.xcconfig */, - BBFBBE8FE992747E1198A3EE /* Pods-AWSElasticLoadBalancing.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; BDF559801AB375EC0067F4F1 = { isa = PBXGroup; children = ( BDF5598B1AB375EC0067F4F1 /* AWSElasticLoadBalancing */, BDF559981AB375EC0067F4F1 /* AWSElasticLoadBalancingTests */, BDF5598A1AB375EC0067F4F1 /* Products */, - 4EF3408BFEAC16E73120B5DF /* Pods */, 412CEC016EC21D18D1D11C56 /* Frameworks */, ); sourceTree = ""; @@ -130,6 +142,7 @@ children = ( BDF559891AB375EC0067F4F1 /* libAWSElasticLoadBalancing.a */, BDF559941AB375EC0067F4F1 /* AWSElasticLoadBalancingTests.xctest */, + BDF125BE1B45C1A900DFBFEC /* AWSElasticLoadBalancingUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -186,6 +199,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125AE1B45C1A900DFBFEC /* AWSElasticLoadBalancingUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125BB1B45C1A900DFBFEC /* Build configuration list for PBXNativeTarget "AWSElasticLoadBalancingUnitTests" */; + buildPhases = ( + BDF125B11B45C1A900DFBFEC /* Sources */, + BDF125B51B45C1A900DFBFEC /* Frameworks */, + BDF125B91B45C1A900DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125AF1B45C1A900DFBFEC /* PBXTargetDependency */, + ); + name = AWSElasticLoadBalancingUnitTests; + productName = ElasticLoadBalancingTests; + productReference = BDF125BE1B45C1A900DFBFEC /* AWSElasticLoadBalancingUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF559881AB375EC0067F4F1 /* AWSElasticLoadBalancing */ = { isa = PBXNativeTarget; buildConfigurationList = BDF5599D1AB375EC0067F4F1 /* Build configuration list for PBXNativeTarget "AWSElasticLoadBalancing" */; @@ -253,11 +284,19 @@ targets = ( BDF559881AB375EC0067F4F1 /* AWSElasticLoadBalancing */, BDF559931AB375EC0067F4F1 /* AWSElasticLoadBalancingTests */, + BDF125AE1B45C1A900DFBFEC /* AWSElasticLoadBalancingUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125B91B45C1A900DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559921AB375EC0067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -269,6 +308,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125B11B45C1A900DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125B21B45C1A900DFBFEC /* AWSGeneralElasticLoadBalancingTests.m in Sources */, + BDF125B31B45C1A900DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559851AB375EC0067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -283,7 +331,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BD00FFF61AB8C448004496EF /* AWSGeneralElasticLoadBalancingTests.m in Sources */, BD00005E1AB8E1EA004496EF /* AWSTestUtility.m in Sources */, BD00FFF71AB8C448004496EF /* AWSElasticLoadBalancingTests.m in Sources */, ); @@ -292,6 +339,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125AF1B45C1A900DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF559881AB375EC0067F4F1 /* AWSElasticLoadBalancing */; + targetProxy = BDF125B01B45C1A900DFBFEC /* PBXContainerItemProxy */; + }; BDF559971AB375EC0067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF559881AB375EC0067F4F1 /* AWSElasticLoadBalancing */; @@ -300,10 +352,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125BC1B45C1A900DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSElasticLoadBalancingTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSElasticLoadBalancingUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125BD1B45C1A900DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSElasticLoadBalancingTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSElasticLoadBalancingUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF5599B1AB375EC0067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +459,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -419,6 +537,7 @@ ); INFOPLIST_FILE = AWSElasticLoadBalancingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSElasticLoadBalancingTests; }; name = Debug; @@ -434,6 +553,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSElasticLoadBalancingTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSElasticLoadBalancingTests; }; name = Release; @@ -441,6 +561,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125BB1B45C1A900DFBFEC /* Build configuration list for PBXNativeTarget "AWSElasticLoadBalancingUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125BC1B45C1A900DFBFEC /* Debug */, + BDF125BD1B45C1A900DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF559841AB375EC0067F4F1 /* Build configuration list for PBXProject "AWSElasticLoadBalancing" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSElasticLoadBalancing.xcodeproj/xcshareddata/xcschemes/AWSElasticLoadBalancing.xcscheme b/AWSElasticLoadBalancing.xcodeproj/xcshareddata/xcschemes/AWSElasticLoadBalancing.xcscheme new file mode 100644 index 00000000000..ad2a244aaee --- /dev/null +++ b/AWSElasticLoadBalancing.xcodeproj/xcshareddata/xcschemes/AWSElasticLoadBalancing.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m b/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m index 49b8bacf487..7601fcbb38e 100644 --- a/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m +++ b/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m @@ -231,7 +231,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSElasticLoadBalancingRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSElasticLoadBalancingTests/AWSElasticLoadBalancingTests.m b/AWSElasticLoadBalancingTests/AWSElasticLoadBalancingTests.m index a202dc3d657..72c8c4d694b 100644 --- a/AWSElasticLoadBalancingTests/AWSElasticLoadBalancingTests.m +++ b/AWSElasticLoadBalancingTests/AWSElasticLoadBalancingTests.m @@ -13,6 +13,7 @@ permissions and limitations under the License. */ +#import #import #import "AWSElasticLoadBalancing.h" #import "AWSTestUtility.h" diff --git a/AWSElasticLoadBalancingTests/AWSGeneralElasticLoadBalancingTests.m b/AWSElasticLoadBalancingTests/AWSGeneralElasticLoadBalancingTests.m index 426a8edd88c..e77c934bfa9 100644 --- a/AWSElasticLoadBalancingTests/AWSGeneralElasticLoadBalancingTests.m +++ b/AWSElasticLoadBalancingTests/AWSGeneralElasticLoadBalancingTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSElasticLoadBalancing.h" +static id mockNetworking = nil; + @interface AWSGeneralElasticLoadBalancingTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralElasticLoadBalancingTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAddTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] addTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -70,13 +84,20 @@ - (void)testApplySecurityGroupsToLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] applySecurityGroupsToLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -85,13 +106,20 @@ - (void)testAttachLoadBalancerToSubnets { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] attachLoadBalancerToSubnets:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -100,13 +128,20 @@ - (void)testConfigureHealthCheck { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] configureHealthCheck:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -115,13 +150,20 @@ - (void)testCreateAppCookieStickinessPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] createAppCookieStickinessPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -130,13 +172,20 @@ - (void)testCreateLBCookieStickinessPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] createLBCookieStickinessPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -145,13 +194,20 @@ - (void)testCreateLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] createLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -160,13 +216,20 @@ - (void)testCreateLoadBalancerListeners { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] createLoadBalancerListeners:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -175,13 +238,20 @@ - (void)testCreateLoadBalancerPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] createLoadBalancerPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -190,13 +260,20 @@ - (void)testDeleteLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] deleteLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -205,13 +282,20 @@ - (void)testDeleteLoadBalancerListeners { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] deleteLoadBalancerListeners:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -220,13 +304,20 @@ - (void)testDeleteLoadBalancerPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] deleteLoadBalancerPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -235,13 +326,20 @@ - (void)testDeregisterInstancesFromLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] deregisterInstancesFromLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -250,13 +348,20 @@ - (void)testDescribeInstanceHealth { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeInstanceHealth:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -265,13 +370,20 @@ - (void)testDescribeLoadBalancerAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeLoadBalancerAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -280,13 +392,20 @@ - (void)testDescribeLoadBalancerPolicies { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeLoadBalancerPolicies:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -295,13 +414,20 @@ - (void)testDescribeLoadBalancerPolicyTypes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeLoadBalancerPolicyTypes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -310,13 +436,20 @@ - (void)testDescribeLoadBalancers { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeLoadBalancers:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -325,13 +458,20 @@ - (void)testDescribeTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] describeTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -340,13 +480,20 @@ - (void)testDetachLoadBalancerFromSubnets { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] detachLoadBalancerFromSubnets:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -355,13 +502,20 @@ - (void)testDisableAvailabilityZonesForLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] disableAvailabilityZonesForLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -370,13 +524,20 @@ - (void)testEnableAvailabilityZonesForLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] enableAvailabilityZonesForLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -385,13 +546,20 @@ - (void)testModifyLoadBalancerAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] modifyLoadBalancerAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -400,13 +568,20 @@ - (void)testRegisterInstancesWithLoadBalancer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] registerInstancesWithLoadBalancer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -415,13 +590,20 @@ - (void)testRemoveTags { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] removeTags:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -430,13 +612,20 @@ - (void)testSetLoadBalancerListenerSSLCertificate { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] setLoadBalancerListenerSSLCertificate:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -445,13 +634,20 @@ - (void)testSetLoadBalancerPoliciesForBackendServer { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] setLoadBalancerPoliciesForBackendServer:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } @@ -460,13 +656,20 @@ - (void)testSetLoadBalancerPoliciesOfListener { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSElasticLoadBalancing registerElasticLoadBalancingWithConfiguration:configuration forKey:key]; + AWSElasticLoadBalancing *awsClient = [AWSElasticLoadBalancing ElasticLoadBalancingForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSElasticLoadBalancing ElasticLoadBalancingForKey:key] setLoadBalancerPoliciesOfListener:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSElasticLoadBalancing removeElasticLoadBalancingForKey:key]; } diff --git a/AWSKinesis.podspec b/AWSKinesis.podspec index 60b42e54e26..c893c69e7c4 100644 --- a/AWSKinesis.podspec +++ b/AWSKinesis.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSKinesis' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSKinesis/*.{h,m}' end diff --git a/AWSKinesis.xcodeproj/project.pbxproj b/AWSKinesis.xcodeproj/project.pbxproj index c6c22e0e72d..97675ecc257 100644 --- a/AWSKinesis.xcodeproj/project.pbxproj +++ b/AWSKinesis.xcodeproj/project.pbxproj @@ -10,15 +10,21 @@ BD00003C1AB8C533004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD00003B1AB8C533004496EF /* credentials.json */; }; BD00005B1AB8E19E004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00005A1AB8E19E004496EF /* AWSTestUtility.m */; }; BD00FF431AB8B6DA004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF421AB8B6DA004496EF /* libAWSCore.a */; }; - BD00FFF11AB8C437004496EF /* AWSGeneralKinesisTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFEE1AB8C437004496EF /* AWSGeneralKinesisTests.m */; }; BD00FFF21AB8C437004496EF /* AWSKinesisRecorderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFEF1AB8C437004496EF /* AWSKinesisRecorderTests.m */; }; - BD00FFF31AB8C437004496EF /* AWSKinesisTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF01AB8C437004496EF /* AWSKinesisTests.m */; }; BD9D97621AC1EEAE00CEEE08 /* AWSKinesisService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE701AC1E1AF0095C4B7 /* AWSKinesisService.h */; }; BDB73D7B1B1D3EFC00717559 /* AWSKinesisResources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D791B1D3EFC00717559 /* AWSKinesisResources.h */; }; BDB73D7C1B1D3EFC00717559 /* AWSKinesisResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D7A1B1D3EFC00717559 /* AWSKinesisResources.m */; }; BDC91C4D1ABBA0C600F74D49 /* AWSKinesis.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559D51AB376A50067F4F1 /* AWSKinesis.h */; }; BDC91C4E1ABBA0C600F74D49 /* AWSKinesisModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559D71AB376A50067F4F1 /* AWSKinesisModel.h */; }; BDC91C4F1ABBA0C600F74D49 /* AWSKinesisRecorder.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF559D91AB376A50067F4F1 /* AWSKinesisRecorder.h */; }; + BDD876AA1B4B52E3009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876A91B4B52E3009268C7 /* libOCMock.a */; }; + BDF125C61B45C1D000DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00005A1AB8E19E004496EF /* AWSTestUtility.m */; }; + BDF125C71B45C1D000DFBFEC /* AWSGeneralKinesisTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFEE1AB8C437004496EF /* AWSGeneralKinesisTests.m */; }; + BDF125C91B45C1D000DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532651B03D3B2002CED62 /* libz.dylib */; }; + BDF125CA1B45C1D000DFBFEC /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE14DF8C1B02DEBC00EF6D09 /* libsqlite3.dylib */; }; + BDF125CB1B45C1D000DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF421AB8B6DA004496EF /* libAWSCore.a */; }; + BDF125CC1B45C1D000DFBFEC /* libAWSKinesis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559B91AB376720067F4F1 /* libAWSKinesis.a */; }; + BDF126941B45CF4700DFBFEC /* AWSKinesisTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFF01AB8C437004496EF /* AWSKinesisTests.m */; }; BDF559C51AB376720067F4F1 /* libAWSKinesis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559B91AB376720067F4F1 /* libAWSKinesis.a */; }; BDF559DD1AB376A50067F4F1 /* AWSKinesis.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF559D51AB376A50067F4F1 /* AWSKinesis.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF559DE1AB376A50067F4F1 /* AWSKinesisService.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF559D61AB376A50067F4F1 /* AWSKinesisService.m */; }; @@ -32,6 +38,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125C21B45C1D000DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF559B11AB376720067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF559B81AB376720067F4F1; + remoteInfo = Kinesis; + }; BDF559C61AB376720067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF559B11AB376720067F4F1 /* Project object */; @@ -58,7 +71,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 95B2CCFC84B571337F663D6B /* Pods-AWSKinesis.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSKinesis.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSKinesis/Pods-AWSKinesis.debug.xcconfig"; sourceTree = ""; }; BD00003B1AB8C533004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000591AB8E19E004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD00005A1AB8E19E004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -68,6 +80,8 @@ BD00FFF01AB8C437004496EF /* AWSKinesisTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSKinesisTests.m; path = ../AWSKinesisTests/AWSKinesisTests.m; sourceTree = ""; }; BDB73D791B1D3EFC00717559 /* AWSKinesisResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSKinesisResources.h; sourceTree = ""; }; BDB73D7A1B1D3EFC00717559 /* AWSKinesisResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSKinesisResources.m; sourceTree = ""; }; + BDD876A91B4B52E3009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125D21B45C1D000DFBFEC /* AWSKinesisUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSKinesisUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559B91AB376720067F4F1 /* libAWSKinesis.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSKinesis.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559C41AB376720067F4F1 /* AWSKinesisTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSKinesisTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559CA1AB376720067F4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../AWSKinesisTests/Info.plist; sourceTree = ""; }; @@ -80,11 +94,21 @@ CE14DF8C1B02DEBC00EF6D09 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; CEE532651B03D3B2002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE701AC1E1AF0095C4B7 /* AWSKinesisService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSKinesisService.h; sourceTree = ""; }; - DBA83CD943CFA60EB1C5FEE6 /* libPods-AWSKinesis.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSKinesis.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - ED71922BE28C5B428EAC7898 /* Pods-AWSKinesis.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSKinesis.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSKinesis/Pods-AWSKinesis.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125C81B45C1D000DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876AA1B4B52E3009268C7 /* libOCMock.a in Frameworks */, + BDF125C91B45C1D000DFBFEC /* libz.dylib in Frameworks */, + BDF125CA1B45C1D000DFBFEC /* libsqlite3.dylib in Frameworks */, + BDF125CB1B45C1D000DFBFEC /* libAWSCore.a in Frameworks */, + BDF125CC1B45C1D000DFBFEC /* libAWSKinesis.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559B61AB376720067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -112,7 +136,6 @@ BDF559BB1AB376720067F4F1 /* AWSKinesis */, BDF559C81AB376720067F4F1 /* AWSKinesisTests */, BDF559BA1AB376720067F4F1 /* Products */, - D34ABF3BE6D22A110003BCB2 /* Pods */, D34BD40ED7327D8616BDFE58 /* Frameworks */, ); sourceTree = ""; @@ -122,6 +145,7 @@ children = ( BDF559B91AB376720067F4F1 /* libAWSKinesis.a */, BDF559C41AB376720067F4F1 /* AWSKinesisTests.xctest */, + BDF125D21B45C1D000DFBFEC /* AWSKinesisUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -164,22 +188,13 @@ name = "Supporting Files"; sourceTree = ""; }; - D34ABF3BE6D22A110003BCB2 /* Pods */ = { - isa = PBXGroup; - children = ( - 95B2CCFC84B571337F663D6B /* Pods-AWSKinesis.debug.xcconfig */, - ED71922BE28C5B428EAC7898 /* Pods-AWSKinesis.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; D34BD40ED7327D8616BDFE58 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876A91B4B52E3009268C7 /* libOCMock.a */, CEE532651B03D3B2002CED62 /* libz.dylib */, CE14DF8C1B02DEBC00EF6D09 /* libsqlite3.dylib */, BD00FF421AB8B6DA004496EF /* libAWSCore.a */, - DBA83CD943CFA60EB1C5FEE6 /* libPods-AWSKinesis.a */, ); name = Frameworks; sourceTree = ""; @@ -202,6 +217,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125C01B45C1D000DFBFEC /* AWSKinesisUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125CF1B45C1D000DFBFEC /* Build configuration list for PBXNativeTarget "AWSKinesisUnitTests" */; + buildPhases = ( + BDF125C31B45C1D000DFBFEC /* Sources */, + BDF125C81B45C1D000DFBFEC /* Frameworks */, + BDF125CD1B45C1D000DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125C11B45C1D000DFBFEC /* PBXTargetDependency */, + ); + name = AWSKinesisUnitTests; + productName = KinesisTests; + productReference = BDF125D21B45C1D000DFBFEC /* AWSKinesisUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF559B81AB376720067F4F1 /* AWSKinesis */ = { isa = PBXNativeTarget; buildConfigurationList = BDF559CD1AB376720067F4F1 /* Build configuration list for PBXNativeTarget "AWSKinesis" */; @@ -269,11 +302,19 @@ targets = ( BDF559B81AB376720067F4F1 /* AWSKinesis */, BDF559C31AB376720067F4F1 /* AWSKinesisTests */, + BDF125C01B45C1D000DFBFEC /* AWSKinesisUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125CD1B45C1D000DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559C21AB376720067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -285,6 +326,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125C31B45C1D000DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125C61B45C1D000DFBFEC /* AWSTestUtility.m in Sources */, + BDF125C71B45C1D000DFBFEC /* AWSGeneralKinesisTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559B51AB376720067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -301,15 +351,19 @@ buildActionMask = 2147483647; files = ( BD00FFF21AB8C437004496EF /* AWSKinesisRecorderTests.m in Sources */, - BD00FFF31AB8C437004496EF /* AWSKinesisTests.m in Sources */, + BDF126941B45CF4700DFBFEC /* AWSKinesisTests.m in Sources */, BD00005B1AB8E19E004496EF /* AWSTestUtility.m in Sources */, - BD00FFF11AB8C437004496EF /* AWSGeneralKinesisTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125C11B45C1D000DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF559B81AB376720067F4F1 /* AWSKinesis */; + targetProxy = BDF125C21B45C1D000DFBFEC /* PBXContainerItemProxy */; + }; BDF559C71AB376720067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF559B81AB376720067F4F1 /* AWSKinesis */; @@ -318,10 +372,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125D01B45C1D000DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSKinesisTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSKinesisUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125D11B45C1D000DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSKinesisTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSKinesisUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF559CB1AB376720067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -363,6 +479,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -437,6 +557,7 @@ ); INFOPLIST_FILE = AWSKinesisTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSKinesisTests; }; name = Debug; @@ -452,6 +573,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSKinesisTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSKinesisTests; }; name = Release; @@ -459,6 +581,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125CF1B45C1D000DFBFEC /* Build configuration list for PBXNativeTarget "AWSKinesisUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125D01B45C1D000DFBFEC /* Debug */, + BDF125D11B45C1D000DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF559B41AB376720067F4F1 /* Build configuration list for PBXProject "AWSKinesis" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSKinesis.xcodeproj/xcshareddata/xcschemes/AWSKinesis.xcscheme b/AWSKinesis.xcodeproj/xcshareddata/xcschemes/AWSKinesis.xcscheme new file mode 100644 index 00000000000..86210c2c601 --- /dev/null +++ b/AWSKinesis.xcodeproj/xcshareddata/xcschemes/AWSKinesis.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSKinesis/AWSKinesisService.m b/AWSKinesis/AWSKinesisService.m index 13fbfca0ac4..de5e8c20a24 100644 --- a/AWSKinesis/AWSKinesisService.m +++ b/AWSKinesis/AWSKinesisService.m @@ -116,6 +116,10 @@ - (AWSNetworkingRetryType)shouldRetry:(uint32_t)currentRetryCount retryType = AWSNetworkingRetryTypeShouldRefreshCredentialsAndRetry; break; + case AWSKinesisErrorProvisionedThroughputExceeded: + retryType = AWSNetworkingRetryTypeShouldRetry; + break; + default: break; } @@ -207,10 +211,7 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSKinesisRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{ - @"Host" : _configuration.endpoint.hostName, - @"Content-Type" : @"application/x-amz-json-1.1" - }; + _configuration.headers = @{@"Content-Type" : @"application/x-amz-json-1.1"}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSKinesisTests/AWSGeneralKinesisTests.m b/AWSKinesisTests/AWSGeneralKinesisTests.m index ca82f5d236a..874f6606856 100644 --- a/AWSKinesisTests/AWSGeneralKinesisTests.m +++ b/AWSKinesisTests/AWSGeneralKinesisTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSKinesis.h" +static id mockNetworking = nil; + @interface AWSGeneralKinesisTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralKinesisTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAddTagsToStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] addTagsToStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -70,13 +84,20 @@ - (void)testCreateStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] createStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -85,13 +106,20 @@ - (void)testDeleteStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] deleteStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDescribeStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] describeStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -115,13 +150,20 @@ - (void)testGetRecords { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] getRecords:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -130,13 +172,20 @@ - (void)testGetShardIterator { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] getShardIterator:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -145,13 +194,20 @@ - (void)testListStreams { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] listStreams:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -160,13 +216,20 @@ - (void)testListTagsForStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] listTagsForStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -175,13 +238,20 @@ - (void)testMergeShards { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] mergeShards:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -190,13 +260,20 @@ - (void)testPutRecord { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] putRecord:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -205,13 +282,20 @@ - (void)testPutRecords { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] putRecords:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -220,13 +304,20 @@ - (void)testRemoveTagsFromStream { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] removeTagsFromStream:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } @@ -235,13 +326,20 @@ - (void)testSplitShard { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSKinesis registerKinesisWithConfiguration:configuration forKey:key]; + AWSKinesis *awsClient = [AWSKinesis KinesisForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSKinesis KinesisForKey:key] splitShard:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSKinesis removeKinesisForKey:key]; } diff --git a/AWSKinesisTests/AWSKinesisRecorderTests.m b/AWSKinesisTests/AWSKinesisRecorderTests.m index bc06af02ca6..c79e8b611fb 100644 --- a/AWSKinesisTests/AWSKinesisRecorderTests.m +++ b/AWSKinesisTests/AWSKinesisRecorderTests.m @@ -15,6 +15,7 @@ #if !AWS_TEST_BJS_INSTEAD +#import #import #import "AWSKinesis.h" #import "AWSTestUtility.h" diff --git a/AWSKinesisTests/AWSKinesisTests.m b/AWSKinesisTests/AWSKinesisTests.m index 2337097626f..356745646e6 100644 --- a/AWSKinesisTests/AWSKinesisTests.m +++ b/AWSKinesisTests/AWSKinesisTests.m @@ -141,7 +141,7 @@ - (void)testListStreams { - (void)testAll { AWSKinesis *kinesis = [AWSKinesis defaultKinesis]; - NSMutableArray *tasks = [NSMutableArray new]; + AWSTask *task = [AWSTask taskWithResult:nil]; NSMutableArray *returnedRecords = [NSMutableArray new]; for (int32_t i = 0; i < 100; i++) { @@ -150,11 +150,12 @@ - (void)testAll { putRecordInput.data = [[NSString stringWithFormat:@"TestString-%02d", i] dataUsingEncoding:NSUTF8StringEncoding]; putRecordInput.partitionKey = @"test-partition-key"; - [tasks addObject:[kinesis putRecord:putRecordInput]]; + task = [task continueWithSuccessBlock:^id(AWSTask *task) { + return [kinesis putRecord:putRecordInput]; + }]; } - [[[[[[AWSTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(AWSTask *task) { - sleep(10); + [[[[[task continueWithSuccessBlock:^id(AWSTask *task) { AWSKinesisDescribeStreamInput *describeStreamInput = [AWSKinesisDescribeStreamInput new]; describeStreamInput.streamName = testStreamName; return [kinesis describeStream:describeStreamInput]; @@ -168,7 +169,6 @@ - (void)testAll { getShardIteratorInput.shardId = shard.shardId; getShardIteratorInput.shardIteratorType = AWSKinesisShardIteratorTypeAtSequenceNumber; getShardIteratorInput.startingSequenceNumber = shard.sequenceNumberRange.startingSequenceNumber; - return [kinesis getShardIterator:getShardIteratorInput]; }] continueWithSuccessBlock:^id(AWSTask *task) { AWSKinesisGetShardIteratorOutput *getShardIteratorOutput = task.result; diff --git a/AWSLambda.podspec b/AWSLambda.podspec index 089aac89e6d..68020844c60 100644 --- a/AWSLambda.podspec +++ b/AWSLambda.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSLambda' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSLambda/*.{h,m}' end diff --git a/AWSLambda.xcodeproj/project.pbxproj b/AWSLambda.xcodeproj/project.pbxproj index 6253cae457f..a947af45a34 100644 --- a/AWSLambda.xcodeproj/project.pbxproj +++ b/AWSLambda.xcodeproj/project.pbxproj @@ -9,9 +9,14 @@ /* Begin PBXBuildFile section */ BDB73D7F1B1D3F1400717559 /* AWSLambdaResources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D7D1B1D3F1400717559 /* AWSLambdaResources.h */; }; BDB73D801B1D3F1400717559 /* AWSLambdaResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D7E1B1D3F1400717559 /* AWSLambdaResources.m */; }; + BDD876AC1B4B52F0009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876AB1B4B52F0009268C7 /* libOCMock.a */; }; + BDF125D91B45C22300DFBFEC /* AWSGeneralLambdaTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6397141AC494C100459E23 /* AWSGeneralLambdaTests.m */; }; + BDF125DD1B45C22300DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532631B03D3A8002CED62 /* libz.dylib */; }; + BDF125DE1B45C22300DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6397121AC48EF300459E23 /* libAWSCore.a */; }; + BDF125DF1B45C22300DFBFEC /* libAWSLambda.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CED822151AC4895F0017E687 /* libAWSLambda.a */; }; + BDF126931B45C98400DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CE63971E1AC495CD00459E23 /* AWSTestUtility.m */; }; CE5502C81AD361AC00AE9F4A /* AWSLambdaInvoker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE6397261AC4A7F300459E23 /* AWSLambdaInvoker.h */; }; CE6397131AC48EF300459E23 /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE6397121AC48EF300459E23 /* libAWSCore.a */; }; - CE6397151AC494C100459E23 /* AWSGeneralLambdaTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6397141AC494C100459E23 /* AWSGeneralLambdaTests.m */; }; CE63971D1AC4957D00459E23 /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = CE63971C1AC4957D00459E23 /* credentials.json */; }; CE63971F1AC495CD00459E23 /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CE63971E1AC495CD00459E23 /* AWSTestUtility.m */; }; CE6397251AC4A4CC00459E23 /* AWSLambdaTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6397241AC4A4CC00459E23 /* AWSLambdaTests.m */; }; @@ -31,6 +36,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125D61B45C22300DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CED8220D1AC4895F0017E687 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CED822141AC4895F0017E687; + remoteInfo = AWSLambda; + }; CED822221AC4895F0017E687 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CED8220D1AC4895F0017E687 /* Project object */; @@ -57,10 +69,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0B0DD4512530E61F3A5F0F9D /* libPods-AWSLambda.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSLambda.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 177BE039058FBD96196C8D2B /* Pods-AWSLambda.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSLambda.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSLambda/Pods-AWSLambda.release.xcconfig"; sourceTree = ""; }; BDB73D7D1B1D3F1400717559 /* AWSLambdaResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSLambdaResources.h; sourceTree = ""; }; BDB73D7E1B1D3F1400717559 /* AWSLambdaResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSLambdaResources.m; sourceTree = ""; }; + BDD876AB1B4B52F0009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125E51B45C22300DFBFEC /* AWSLambdaUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSLambdaUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE6397121AC48EF300459E23 /* libAWSCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAWSCore.a; path = "build/Debug-iphoneos/libAWSCore.a"; sourceTree = ""; }; CE6397141AC494C100459E23 /* AWSGeneralLambdaTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSGeneralLambdaTests.m; sourceTree = ""; }; CE63971C1AC4957D00459E23 /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; @@ -78,10 +90,20 @@ CED822381AC48A3D0017E687 /* AWSLambdaService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSLambdaService.h; sourceTree = ""; }; CEDE75EF1ACA1D9E002A0D94 /* AWSLambdaInvokerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSLambdaInvokerTests.m; sourceTree = ""; }; CEE532631B03D3A8002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - F85E905FF100126C225C0066 /* Pods-AWSLambda.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSLambda.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSLambda/Pods-AWSLambda.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125DC1B45C22300DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876AC1B4B52F0009268C7 /* libOCMock.a in Frameworks */, + BDF125DD1B45C22300DFBFEC /* libz.dylib in Frameworks */, + BDF125DE1B45C22300DFBFEC /* libAWSCore.a in Frameworks */, + BDF125DF1B45C22300DFBFEC /* libAWSLambda.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CED822121AC4895F0017E687 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -105,29 +127,19 @@ 3EAFA3A380A2651599D9FC74 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876AB1B4B52F0009268C7 /* libOCMock.a */, CEE532631B03D3A8002CED62 /* libz.dylib */, CE6397121AC48EF300459E23 /* libAWSCore.a */, - 0B0DD4512530E61F3A5F0F9D /* libPods-AWSLambda.a */, ); name = Frameworks; sourceTree = ""; }; - 7B5CA8D6936C9696BA07283C /* Pods */ = { - isa = PBXGroup; - children = ( - F85E905FF100126C225C0066 /* Pods-AWSLambda.debug.xcconfig */, - 177BE039058FBD96196C8D2B /* Pods-AWSLambda.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; CED8220C1AC4895F0017E687 = { isa = PBXGroup; children = ( CED822171AC4895F0017E687 /* AWSLambda */, CED822241AC4895F0017E687 /* AWSLambdaTests */, 3EAFA3A380A2651599D9FC74 /* Frameworks */, - 7B5CA8D6936C9696BA07283C /* Pods */, CED822161AC4895F0017E687 /* Products */, ); sourceTree = ""; @@ -137,6 +149,7 @@ children = ( CED822151AC4895F0017E687 /* libAWSLambda.a */, CED822201AC4895F0017E687 /* AWSLambdaTests.xctest */, + BDF125E51B45C22300DFBFEC /* AWSLambdaUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -196,6 +209,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125D41B45C22300DFBFEC /* AWSLambdaUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125E21B45C22300DFBFEC /* Build configuration list for PBXNativeTarget "AWSLambdaUnitTests" */; + buildPhases = ( + BDF125D71B45C22300DFBFEC /* Sources */, + BDF125DC1B45C22300DFBFEC /* Frameworks */, + BDF125E01B45C22300DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125D51B45C22300DFBFEC /* PBXTargetDependency */, + ); + name = AWSLambdaUnitTests; + productName = AWSLambdaTests; + productReference = BDF125E51B45C22300DFBFEC /* AWSLambdaUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; CED822141AC4895F0017E687 /* AWSLambda */ = { isa = PBXNativeTarget; buildConfigurationList = CED822291AC4895F0017E687 /* Build configuration list for PBXNativeTarget "AWSLambda" */; @@ -263,11 +294,19 @@ targets = ( CED822141AC4895F0017E687 /* AWSLambda */, CED8221F1AC4895F0017E687 /* AWSLambdaTests */, + BDF125D41B45C22300DFBFEC /* AWSLambdaUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125E01B45C22300DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CED8221E1AC4895F0017E687 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -279,6 +318,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125D71B45C22300DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126931B45C98400DFBFEC /* AWSTestUtility.m in Sources */, + BDF125D91B45C22300DFBFEC /* AWSGeneralLambdaTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CED822111AC4895F0017E687 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -295,7 +343,6 @@ buildActionMask = 2147483647; files = ( CE63971F1AC495CD00459E23 /* AWSTestUtility.m in Sources */, - CE6397151AC494C100459E23 /* AWSGeneralLambdaTests.m in Sources */, CE6397251AC4A4CC00459E23 /* AWSLambdaTests.m in Sources */, CEDE75F01ACA1D9E002A0D94 /* AWSLambdaInvokerTests.m in Sources */, ); @@ -304,6 +351,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125D51B45C22300DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CED822141AC4895F0017E687 /* AWSLambda */; + targetProxy = BDF125D61B45C22300DFBFEC /* PBXContainerItemProxy */; + }; CED822231AC4895F0017E687 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CED822141AC4895F0017E687 /* AWSLambda */; @@ -312,10 +364,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125E31B45C22300DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSLambdaTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSLambdaUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125E41B45C22300DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSLambdaTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSLambdaUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; CED822271AC4895F0017E687 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -357,6 +471,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -431,6 +549,7 @@ ); INFOPLIST_FILE = AWSLambdaTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -446,6 +565,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSLambdaTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -453,6 +573,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125E21B45C22300DFBFEC /* Build configuration list for PBXNativeTarget "AWSLambdaUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125E31B45C22300DFBFEC /* Debug */, + BDF125E41B45C22300DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CED822101AC4895F0017E687 /* Build configuration list for PBXProject "AWSLambda" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSLambda.xcodeproj/xcshareddata/xcschemes/AWSLambda.xcscheme b/AWSLambda.xcodeproj/xcshareddata/xcschemes/AWSLambda.xcscheme new file mode 100644 index 00000000000..0353fad365d --- /dev/null +++ b/AWSLambda.xcodeproj/xcshareddata/xcschemes/AWSLambda.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSLambda/AWSLambdaService.m b/AWSLambda/AWSLambdaService.m index c2395776621..74b3320e5a1 100644 --- a/AWSLambda/AWSLambdaService.m +++ b/AWSLambda/AWSLambdaService.m @@ -259,9 +259,7 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.requestSerializer = [AWSJSONRequestSerializer new]; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSLambdaRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, - @"Content-Type" : @"application/x-amz-json-1.0", - @"Accept-Encoding" : @""}; + _configuration.headers = @{@"Content-Type" : @"application/x-amz-json-1.0"}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSLambdaTests/AWSGeneralLambdaTests.m b/AWSLambdaTests/AWSGeneralLambdaTests.m index 8ad5f8b58da..f1143fec7ac 100644 --- a/AWSLambdaTests/AWSGeneralLambdaTests.m +++ b/AWSLambdaTests/AWSGeneralLambdaTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSLambda.h" +static id mockNetworking = nil; + @interface AWSGeneralLambdaTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralLambdaTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAddPermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] addPermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -70,13 +84,20 @@ - (void)testCreateEventSourceMapping { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] createEventSourceMapping:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreateFunction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] createFunction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDeleteEventSourceMapping { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] deleteEventSourceMapping:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDeleteFunction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] deleteFunction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -130,13 +172,20 @@ - (void)testGetEventSourceMapping { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] getEventSourceMapping:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetFunction { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] getFunction:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -160,13 +216,20 @@ - (void)testGetFunctionConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] getFunctionConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -175,13 +238,20 @@ - (void)testGetPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] getPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -190,13 +260,20 @@ - (void)testInvoke { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] invoke:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -205,13 +282,20 @@ - (void)testInvokeAsync { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] invokeAsync:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -220,13 +304,20 @@ - (void)testListEventSourceMappings { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] listEventSourceMappings:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -235,13 +326,20 @@ - (void)testListFunctions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] listFunctions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -250,13 +348,20 @@ - (void)testRemovePermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] removePermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -265,13 +370,20 @@ - (void)testUpdateEventSourceMapping { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] updateEventSourceMapping:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -280,13 +392,20 @@ - (void)testUpdateFunctionCode { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] updateFunctionCode:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } @@ -295,13 +414,20 @@ - (void)testUpdateFunctionConfiguration { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSLambda registerLambdaWithConfiguration:configuration forKey:key]; + AWSLambda *awsClient = [AWSLambda LambdaForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSLambda LambdaForKey:key] updateFunctionConfiguration:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSLambda removeLambdaForKey:key]; } diff --git a/AWSMachineLearning.podspec b/AWSMachineLearning.podspec index 21ea1e186b3..bf2b424b241 100644 --- a/AWSMachineLearning.podspec +++ b/AWSMachineLearning.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSMachineLearning' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSMachineLearning/*.{h,m}' end diff --git a/AWSMachineLearning.xcodeproj/project.pbxproj b/AWSMachineLearning.xcodeproj/project.pbxproj index 7f3ef3190c2..f865a93e2fb 100644 --- a/AWSMachineLearning.xcodeproj/project.pbxproj +++ b/AWSMachineLearning.xcodeproj/project.pbxproj @@ -9,8 +9,13 @@ /* Begin PBXBuildFile section */ BDB73D831B1D3F3000717559 /* AWSMachineLearningResources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D811B1D3F3000717559 /* AWSMachineLearningResources.h */; }; BDB73D841B1D3F3000717559 /* AWSMachineLearningResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D821B1D3F3000717559 /* AWSMachineLearningResources.m */; }; + BDD876AE1B4B5302009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876AD1B4B5302009268C7 /* libOCMock.a */; }; + BDF125EB1B45C24500DFBFEC /* AWSGeneralMachineLearningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9200361ACF7BE700637171 /* AWSGeneralMachineLearningTests.m */; }; + BDF125EF1B45C24500DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5325B1B03D386002CED62 /* libz.dylib */; }; + BDF125F01B45C24500DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE92004C1ACF7FBB00637171 /* libAWSCore.a */; }; + BDF125F11B45C24500DFBFEC /* libAWSMachineLearning.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE7123551ACF7A0B00D96A87 /* libAWSMachineLearning.a */; }; + BDF126921B45C87C00DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CE92004A1ACF7F3700637171 /* AWSTestUtility.m */; }; CE7123611ACF7A0B00D96A87 /* libAWSMachineLearning.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE7123551ACF7A0B00D96A87 /* libAWSMachineLearning.a */; }; - CE9200381ACF7BE700637171 /* AWSGeneralMachineLearningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9200361ACF7BE700637171 /* AWSGeneralMachineLearningTests.m */; }; CE9200391ACF7BE700637171 /* AWSMachineLearningTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9200371ACF7BE700637171 /* AWSMachineLearningTests.m */; }; CE9200401ACF7CC500637171 /* AWSMachineLearning.h in Headers */ = {isa = PBXBuildFile; fileRef = CE92003A1ACF7CC500637171 /* AWSMachineLearning.h */; settings = {ATTRIBUTES = (Public, ); }; }; CE9200411ACF7CC500637171 /* AWSMachineLearningService.m in Sources */ = {isa = PBXBuildFile; fileRef = CE92003B1ACF7CC500637171 /* AWSMachineLearningService.m */; }; @@ -27,6 +32,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125E91B45C24500DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE71234D1ACF7A0B00D96A87 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CE7123541ACF7A0B00D96A87; + remoteInfo = AWSMachineLearning; + }; CE7123621ACF7A0B00D96A87 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE71234D1ACF7A0B00D96A87 /* Project object */; @@ -52,11 +64,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 11873971354373936B380D88 /* Pods-AWSMachineLearning.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSMachineLearning.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSMachineLearning/Pods-AWSMachineLearning.debug.xcconfig"; sourceTree = ""; }; - 36818999D668F95B30403A91 /* libPods-AWSMachineLearning.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSMachineLearning.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 983A09C75DB47041C7FC62B3 /* Pods-AWSMachineLearning.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSMachineLearning.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSMachineLearning/Pods-AWSMachineLearning.release.xcconfig"; sourceTree = ""; }; BDB73D811B1D3F3000717559 /* AWSMachineLearningResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSMachineLearningResources.h; sourceTree = ""; }; BDB73D821B1D3F3000717559 /* AWSMachineLearningResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSMachineLearningResources.m; sourceTree = ""; }; + BDD876AD1B4B5302009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF125F71B45C24500DFBFEC /* AWSMachineLearningUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSMachineLearningUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE7123551ACF7A0B00D96A87 /* libAWSMachineLearning.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSMachineLearning.a; sourceTree = BUILT_PRODUCTS_DIR; }; CE7123601ACF7A0B00D96A87 /* AWSMachineLearningTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSMachineLearningTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE7123661ACF7A0B00D96A87 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -74,6 +85,17 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF125EE1B45C24500DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876AE1B4B5302009268C7 /* libOCMock.a in Frameworks */, + BDF125EF1B45C24500DFBFEC /* libz.dylib in Frameworks */, + BDF125F01B45C24500DFBFEC /* libAWSCore.a in Frameworks */, + BDF125F11B45C24500DFBFEC /* libAWSMachineLearning.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE7123521ACF7A0B00D96A87 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -97,29 +119,19 @@ 13BA91A9ED2214407949A932 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876AD1B4B5302009268C7 /* libOCMock.a */, CEE5325B1B03D386002CED62 /* libz.dylib */, CE92004C1ACF7FBB00637171 /* libAWSCore.a */, - 36818999D668F95B30403A91 /* libPods-AWSMachineLearning.a */, ); name = Frameworks; sourceTree = ""; }; - B25AA71BE8549EECD8B6BF6D /* Pods */ = { - isa = PBXGroup; - children = ( - 11873971354373936B380D88 /* Pods-AWSMachineLearning.debug.xcconfig */, - 983A09C75DB47041C7FC62B3 /* Pods-AWSMachineLearning.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; CE71234C1ACF7A0B00D96A87 = { isa = PBXGroup; children = ( CE7123571ACF7A0B00D96A87 /* AWSMachineLearning */, CE7123641ACF7A0B00D96A87 /* AWSMachineLearningTests */, CE7123561ACF7A0B00D96A87 /* Products */, - B25AA71BE8549EECD8B6BF6D /* Pods */, 13BA91A9ED2214407949A932 /* Frameworks */, ); sourceTree = ""; @@ -129,6 +141,7 @@ children = ( CE7123551ACF7A0B00D96A87 /* libAWSMachineLearning.a */, CE7123601ACF7A0B00D96A87 /* AWSMachineLearningTests.xctest */, + BDF125F71B45C24500DFBFEC /* AWSMachineLearningUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -184,6 +197,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125E71B45C24500DFBFEC /* AWSMachineLearningUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF125F41B45C24500DFBFEC /* Build configuration list for PBXNativeTarget "AWSMachineLearningUnitTests" */; + buildPhases = ( + BDF125EA1B45C24500DFBFEC /* Sources */, + BDF125EE1B45C24500DFBFEC /* Frameworks */, + BDF125F21B45C24500DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125E81B45C24500DFBFEC /* PBXTargetDependency */, + ); + name = AWSMachineLearningUnitTests; + productName = AWSMachineLearningTests; + productReference = BDF125F71B45C24500DFBFEC /* AWSMachineLearningUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; CE7123541ACF7A0B00D96A87 /* AWSMachineLearning */ = { isa = PBXNativeTarget; buildConfigurationList = CE7123691ACF7A0B00D96A87 /* Build configuration list for PBXNativeTarget "AWSMachineLearning" */; @@ -251,11 +282,19 @@ targets = ( CE7123541ACF7A0B00D96A87 /* AWSMachineLearning */, CE71235F1ACF7A0B00D96A87 /* AWSMachineLearningTests */, + BDF125E71B45C24500DFBFEC /* AWSMachineLearningUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF125F21B45C24500DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE71235E1ACF7A0B00D96A87 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -267,6 +306,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125EA1B45C24500DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126921B45C87C00DFBFEC /* AWSTestUtility.m in Sources */, + BDF125EB1B45C24500DFBFEC /* AWSGeneralMachineLearningTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE7123511ACF7A0B00D96A87 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -281,7 +329,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CE9200381ACF7BE700637171 /* AWSGeneralMachineLearningTests.m in Sources */, CE92004B1ACF7F3700637171 /* AWSTestUtility.m in Sources */, CE9200391ACF7BE700637171 /* AWSMachineLearningTests.m in Sources */, ); @@ -290,6 +337,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125E81B45C24500DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CE7123541ACF7A0B00D96A87 /* AWSMachineLearning */; + targetProxy = BDF125E91B45C24500DFBFEC /* PBXContainerItemProxy */; + }; CE7123631ACF7A0B00D96A87 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CE7123541ACF7A0B00D96A87 /* AWSMachineLearning */; @@ -298,10 +350,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF125F51B45C24500DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSMachineLearningTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSMachineLearningUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF125F61B45C24500DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSMachineLearningTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSMachineLearningUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; CE7123671ACF7A0B00D96A87 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -343,6 +457,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -415,6 +533,7 @@ ); INFOPLIST_FILE = AWSMachineLearningTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -430,6 +549,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSMachineLearningTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -437,6 +557,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF125F41B45C24500DFBFEC /* Build configuration list for PBXNativeTarget "AWSMachineLearningUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF125F51B45C24500DFBFEC /* Debug */, + BDF125F61B45C24500DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CE7123501ACF7A0B00D96A87 /* Build configuration list for PBXProject "AWSMachineLearning" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSMachineLearning.xcodeproj/xcshareddata/xcschemes/AWSMachineLearning.xcscheme b/AWSMachineLearning.xcodeproj/xcshareddata/xcschemes/AWSMachineLearning.xcscheme new file mode 100644 index 00000000000..8445a6f0940 --- /dev/null +++ b/AWSMachineLearning.xcodeproj/xcshareddata/xcschemes/AWSMachineLearning.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSMachineLearning/AWSMachineLearningService.m b/AWSMachineLearning/AWSMachineLearningService.m index 03d9802ea8a..d6b6e4fbde2 100644 --- a/AWSMachineLearning/AWSMachineLearningService.m +++ b/AWSMachineLearning/AWSMachineLearningService.m @@ -206,10 +206,7 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSMachineLearningRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{ - @"Host" : _configuration.endpoint.hostName, - @"Content-Type" : @"application/x-amz-json-1.1" - }; + _configuration.headers = @{@"Content-Type" : @"application/x-amz-json-1.1"}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSMachineLearningTests/AWSGeneralMachineLearningTests.m b/AWSMachineLearningTests/AWSGeneralMachineLearningTests.m index 8be679a56c6..2ec0b19a66c 100644 --- a/AWSMachineLearningTests/AWSGeneralMachineLearningTests.m +++ b/AWSMachineLearningTests/AWSGeneralMachineLearningTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSMachineLearning.h" +static id mockNetworking = nil; + @interface AWSGeneralMachineLearningTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralMachineLearningTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testGetMLModel { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSMachineLearning registerMachineLearningWithConfiguration:configuration forKey:key]; + AWSMachineLearning *awsClient = [AWSMachineLearning MachineLearningForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSMachineLearning MachineLearningForKey:key] getMLModel:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSMachineLearning removeMachineLearningForKey:key]; } @@ -70,13 +84,20 @@ - (void)testPredict { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSMachineLearning registerMachineLearningWithConfiguration:configuration forKey:key]; + AWSMachineLearning *awsClient = [AWSMachineLearning MachineLearningForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSMachineLearning MachineLearningForKey:key] predict:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSMachineLearning removeMachineLearningForKey:key]; } diff --git a/AWSMobileAnalytics.podspec b/AWSMobileAnalytics.podspec index 27b9f83916f..acdd53d7238 100644 --- a/AWSMobileAnalytics.podspec +++ b/AWSMobileAnalytics.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSMobileAnalytics' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSMobileAnalytics/*.{h,m}', 'AWSMobileAnalytics/**/*.{h,m}' s.private_header_files = 'AWSMobileAnalytics/Internal/*.h' diff --git a/AWSMobileAnalytics.xcodeproj/project.pbxproj b/AWSMobileAnalytics.xcodeproj/project.pbxproj index f95952a5343..d9814bc0b8b 100644 --- a/AWSMobileAnalytics.xcodeproj/project.pbxproj +++ b/AWSMobileAnalytics.xcodeproj/project.pbxproj @@ -7,15 +7,23 @@ objects = { /* Begin PBXBuildFile section */ + BD4C9AEA1B4C697400267270 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876AF1B4B5316009268C7 /* libOCMock.a */; }; + BD4C9AEB1B4C69DB00267270 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C901B03F2B400DE3906 /* SystemConfiguration.framework */; }; BDB73D631B1D3E3300717559 /* AWSMobileAnalyticsERSResources.h in Headers */ = {isa = PBXBuildFile; fileRef = BDB73D611B1D3E3300717559 /* AWSMobileAnalyticsERSResources.h */; }; BDB73D641B1D3E3300717559 /* AWSMobileAnalyticsERSResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D621B1D3E3300717559 /* AWSMobileAnalyticsERSResources.m */; }; + BDD876B01B4B5316009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876AF1B4B5316009268C7 /* libOCMock.a */; }; + BDF125FE1B45C27900DFBFEC /* AWSGeneralMobileAnalyticsERSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533BE1B03E4FB002CED62 /* AWSGeneralMobileAnalyticsERSTests.m */; }; + BDF125FF1B45C27900DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE5341B1B03E5C0002CED62 /* AWSTestUtility.m */; }; + BDF126021B45C27900DFBFEC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C901B03F2B400DE3906 /* SystemConfiguration.framework */; }; + BDF126031B45C27900DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C8E1B03F2A300DE3906 /* libAWSCore.a */; }; + BDF126041B45C27900DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C681B03EBDB00DE3906 /* libz.dylib */; }; + BDF126051B45C27900DFBFEC /* libAWSMobileAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532781B03DE7F002CED62 /* libAWSMobileAnalytics.a */; }; CE2E0C671B03EB9100DE3906 /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C661B03EB9100DE3906 /* libAWSCore.a */; }; CE2E0C691B03EBDB00DE3906 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C681B03EBDB00DE3906 /* libz.dylib */; }; CE2E0C6B1B03EBE600DE3906 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E0C6A1B03EBE600DE3906 /* libsqlite3.dylib */; }; CE2E0C6D1B03EC6D00DE3906 /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = CE2E0C6C1B03EC6D00DE3906 /* credentials.json */; }; CE2E0C7D1B03EFD300DE3906 /* libAWSMobileAnalytics.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532781B03DE7F002CED62 /* libAWSMobileAnalytics.a */; }; CE2E0C831B03F07C00DE3906 /* AWSAnalyticsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533BD1B03E4FB002CED62 /* AWSAnalyticsTests.m */; }; - CE2E0C841B03F08000DE3906 /* AWSGeneralMobileAnalyticsERSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533BE1B03E4FB002CED62 /* AWSGeneralMobileAnalyticsERSTests.m */; }; CE2E0C851B03F08000DE3906 /* AWSMobileAnalyticsERSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533C11B03E4FB002CED62 /* AWSMobileAnalyticsERSTests.m */; }; CE2E0C881B03F0F900DE3906 /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = CE2E0C6C1B03EC6D00DE3906 /* credentials.json */; }; CE2E0C891B03F0F900DE3906 /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE5341B1B03E5C0002CED62 /* AWSTestUtility.m */; }; @@ -221,10 +229,16 @@ CEE534181B03E4FB002CED62 /* TestEventObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533D51B03E4FB002CED62 /* TestEventObserver.m */; }; CEE534191B03E4FB002CED62 /* TestInsightsContext.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE533D71B03E4FB002CED62 /* TestInsightsContext.m */; }; CEE5341C1B03E5C0002CED62 /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE5341B1B03E5C0002CED62 /* AWSTestUtility.m */; }; - CEE534281B03E612002CED62 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE534271B03E612002CED62 /* libOCMock.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF125FB1B45C27900DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CEE532701B03DE7F002CED62 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CEE532771B03DE7F002CED62; + remoteInfo = AWSMobileAnalytics; + }; CE2E0C7E1B03EFD300DE3906 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CEE532701B03DE7F002CED62 /* Project object */; @@ -265,6 +279,8 @@ /* Begin PBXFileReference section */ BDB73D611B1D3E3300717559 /* AWSMobileAnalyticsERSResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSMobileAnalyticsERSResources.h; path = AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSResources.h; sourceTree = SOURCE_ROOT; }; BDB73D621B1D3E3300717559 /* AWSMobileAnalyticsERSResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSMobileAnalyticsERSResources.m; path = AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSResources.m; sourceTree = SOURCE_ROOT; }; + BDD876AF1B4B5316009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF1260B1B45C27900DFBFEC /* AWSMobileAnalyticsUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSMobileAnalyticsUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CE2E0C661B03EB9100DE3906 /* libAWSCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libAWSCore.a; path = "../build/Debug-iphoneos/libAWSCore.a"; sourceTree = ""; }; CE2E0C681B03EBDB00DE3906 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CE2E0C6A1B03EBE600DE3906 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; @@ -520,16 +536,21 @@ CEE533D61B03E4FB002CED62 /* TestInsightsContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestInsightsContext.h; sourceTree = ""; }; CEE533D71B03E4FB002CED62 /* TestInsightsContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestInsightsContext.m; sourceTree = ""; }; CEE5341B1B03E5C0002CED62 /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; - CEE534201B03E612002CED62 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; - CEE534211B03E612002CED62 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; - CEE534221B03E612002CED62 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; - CEE534231B03E612002CED62 /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; - CEE534241B03E612002CED62 /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; - CEE534251B03E612002CED62 /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = ""; }; - CEE534271B03E612002CED62 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF126011B45C27900DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876B01B4B5316009268C7 /* libOCMock.a in Frameworks */, + BDF126021B45C27900DFBFEC /* SystemConfiguration.framework in Frameworks */, + BDF126031B45C27900DFBFEC /* libAWSCore.a in Frameworks */, + BDF126041B45C27900DFBFEC /* libz.dylib in Frameworks */, + BDF126051B45C27900DFBFEC /* libAWSMobileAnalytics.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2E0C741B03EFD300DE3906 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -552,10 +573,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + BD4C9AEB1B4C69DB00267270 /* SystemConfiguration.framework in Frameworks */, + BD4C9AEA1B4C697400267270 /* libOCMock.a in Frameworks */, CE2E0C6B1B03EBE600DE3906 /* libsqlite3.dylib in Frameworks */, CE2E0C691B03EBDB00DE3906 /* libz.dylib in Frameworks */, CE2E0C671B03EB9100DE3906 /* libAWSCore.a in Frameworks */, - CEE534281B03E612002CED62 /* libOCMock.a in Frameworks */, CEE532841B03DE7F002CED62 /* libAWSMobileAnalytics.a in Frameworks */, CEE534131B03E4FB002CED62 /* OCHamcrestIOS.framework in Frameworks */, ); @@ -590,6 +612,7 @@ CEE5326F1B03DE7F002CED62 = { isa = PBXGroup; children = ( + BDD876AF1B4B5316009268C7 /* libOCMock.a */, CEE5327A1B03DE7F002CED62 /* AWSMobileAnalytics */, CE2E0C781B03EFD300DE3906 /* AWSMobileAnalyticsTests */, CEE532871B03DE7F002CED62 /* AWSMobileAnalyticsLegacyTests */, @@ -603,6 +626,7 @@ CEE532781B03DE7F002CED62 /* libAWSMobileAnalytics.a */, CEE532831B03DE7F002CED62 /* AWSMobileAnalyticsLegacyTests.xctest */, CE2E0C771B03EFD300DE3906 /* AWSMobileAnalyticsTests.xctest */, + BDF1260B1B45C27900DFBFEC /* AWSMobileAnalyticsUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -735,7 +759,6 @@ CEE533D51B03E4FB002CED62 /* TestEventObserver.m */, CEE533D61B03E4FB002CED62 /* TestInsightsContext.h */, CEE533D71B03E4FB002CED62 /* TestInsightsContext.m */, - CEE5341D1B03E612002CED62 /* usr */, CEE532881B03DE7F002CED62 /* Supporting Files */, ); name = AWSMobileAnalyticsLegacyTests; @@ -902,44 +925,6 @@ path = Frameworks; sourceTree = ""; }; - CEE5341D1B03E612002CED62 /* usr */ = { - isa = PBXGroup; - children = ( - CEE5341E1B03E612002CED62 /* include */, - CEE534261B03E612002CED62 /* lib */, - ); - path = usr; - sourceTree = ""; - }; - CEE5341E1B03E612002CED62 /* include */ = { - isa = PBXGroup; - children = ( - CEE5341F1B03E612002CED62 /* OCMock */, - ); - path = include; - sourceTree = ""; - }; - CEE5341F1B03E612002CED62 /* OCMock */ = { - isa = PBXGroup; - children = ( - CEE534201B03E612002CED62 /* NSNotificationCenter+OCMAdditions.h */, - CEE534211B03E612002CED62 /* OCMArg.h */, - CEE534221B03E612002CED62 /* OCMConstraint.h */, - CEE534231B03E612002CED62 /* OCMock.h */, - CEE534241B03E612002CED62 /* OCMockObject.h */, - CEE534251B03E612002CED62 /* OCMockRecorder.h */, - ); - path = OCMock; - sourceTree = ""; - }; - CEE534261B03E612002CED62 /* lib */ = { - isa = PBXGroup; - children = ( - CEE534271B03E612002CED62 /* libOCMock.a */, - ); - path = lib; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1038,6 +1023,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF125F91B45C27900DFBFEC /* AWSMobileAnalyticsUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF126081B45C27900DFBFEC /* Build configuration list for PBXNativeTarget "AWSMobileAnalyticsUnitTests" */; + buildPhases = ( + BDF125FC1B45C27900DFBFEC /* Sources */, + BDF126011B45C27900DFBFEC /* Frameworks */, + BDF126061B45C27900DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF125FA1B45C27900DFBFEC /* PBXTargetDependency */, + ); + name = AWSMobileAnalyticsUnitTests; + productName = AWSMobileAnalyticsTests; + productReference = BDF1260B1B45C27900DFBFEC /* AWSMobileAnalyticsUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; CE2E0C761B03EFD300DE3906 /* AWSMobileAnalyticsTests */ = { isa = PBXNativeTarget; buildConfigurationList = CE2E0C801B03EFD300DE3906 /* Build configuration list for PBXNativeTarget "AWSMobileAnalyticsTests" */; @@ -1127,11 +1130,19 @@ CEE532771B03DE7F002CED62 /* AWSMobileAnalytics */, CE2E0C761B03EFD300DE3906 /* AWSMobileAnalyticsTests */, CEE532821B03DE7F002CED62 /* AWSMobileAnalyticsLegacyTests */, + BDF125F91B45C27900DFBFEC /* AWSMobileAnalyticsUnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF126061B45C27900DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2E0C751B03EFD300DE3906 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1151,12 +1162,20 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF125FC1B45C27900DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF125FE1B45C27900DFBFEC /* AWSGeneralMobileAnalyticsERSTests.m in Sources */, + BDF125FF1B45C27900DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2E0C731B03EFD300DE3906 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( CE2E0C851B03F08000DE3906 /* AWSMobileAnalyticsERSTests.m in Sources */, - CE2E0C841B03F08000DE3906 /* AWSGeneralMobileAnalyticsERSTests.m in Sources */, CE2E0C891B03F0F900DE3906 /* AWSTestUtility.m in Sources */, CE2E0C831B03F07C00DE3906 /* AWSAnalyticsTests.m in Sources */, ); @@ -1284,6 +1303,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF125FA1B45C27900DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CEE532771B03DE7F002CED62 /* AWSMobileAnalytics */; + targetProxy = BDF125FB1B45C27900DFBFEC /* PBXContainerItemProxy */; + }; CE2E0C7F1B03EFD300DE3906 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = CEE532771B03DE7F002CED62 /* AWSMobileAnalytics */; @@ -1297,6 +1321,64 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF126091B45C27900DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSMobileAnalyticsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSMobileAnalyticsUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF1260A1B45C27900DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = AWSMobileAnalyticsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSMobileAnalyticsUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; CE2E0C811B03EFD300DE3906 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1311,7 +1393,10 @@ ); INFOPLIST_FILE = AWSMobileAnalyticsTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SYMROOT)", + ); PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -1326,7 +1411,10 @@ ); INFOPLIST_FILE = AWSMobileAnalyticsTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SYMROOT)", + ); PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -1335,6 +1423,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -1378,6 +1470,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -1446,13 +1542,16 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/AWSMobileAnalyticsTests/usr/lib", + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", ); OTHER_LDFLAGS = ( "$(inherited)", - "-ObjC", + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", ); PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; }; name = Debug; }; @@ -1469,19 +1568,31 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", - "$(PROJECT_DIR)/AWSMobileAnalyticsTests/usr/lib", + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", ); OTHER_LDFLAGS = ( "$(inherited)", - "-ObjC", + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", ); PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF126081B45C27900DFBFEC /* Build configuration list for PBXNativeTarget "AWSMobileAnalyticsUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF126091B45C27900DFBFEC /* Debug */, + BDF1260A1B45C27900DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CE2E0C801B03EFD300DE3906 /* Build configuration list for PBXNativeTarget "AWSMobileAnalyticsTests" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSMobileAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AWSMobileAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/AWSMobileAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/AWSMobileAnalytics.xcodeproj/xcshareddata/xcschemes/AWSMobileAnalytics.xcscheme b/AWSMobileAnalytics.xcodeproj/xcshareddata/xcschemes/AWSMobileAnalytics.xcscheme new file mode 100644 index 00000000000..4761056e181 --- /dev/null +++ b/AWSMobileAnalytics.xcodeproj/xcshareddata/xcschemes/AWSMobileAnalytics.xcscheme @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSService.m b/AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSService.m index 3e3646975f5..506405502ab 100644 --- a/AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSService.m +++ b/AWSMobileAnalytics/AWSMobileAnalyticsERS/AWSMobileAnalyticsERSService.m @@ -253,9 +253,8 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSMobileAnalyticsERSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName, + _configuration.headers = @{ @"Content-Type" : @"application/x-amz-json-1.1", - @"Accept-Encoding" : @"", @"Content-Encoding": @"gzip" }; diff --git a/AWSMobileAnalyticsTests/AIDeliveryIntegrationTests.m b/AWSMobileAnalyticsTests/AIDeliveryIntegrationTests.m index d6a6102ec58..a056c84ec94 100644 --- a/AWSMobileAnalyticsTests/AIDeliveryIntegrationTests.m +++ b/AWSMobileAnalyticsTests/AIDeliveryIntegrationTests.m @@ -373,55 +373,55 @@ - (void)test_submitEvents_forbiddenResponse_eventsDeleted assertThatBool(containsMyEvent, is(equalToBool(NO))); } -- (void)test_submitEvents_successfulDelivery_eventsDeleted -{ - [self buildTestContext]; - - AWSMobileAnalyticsDefaultDeliveryClient* deliveryClient = [AWSMobileAnalyticsDefaultDeliveryClient deliveryClientWithContext:_context - withWanDelivery:NO]; - id eventClient = [[AWSMobileAnalyticsDefaultEventClient alloc] initWithContext:_context - withDeliveryClient:deliveryClient - allowsEventCollection:YES]; - - DeliveryBlockingInterceptor* interceptor = [[DeliveryBlockingInterceptor alloc] init]; - [interceptor setExpectedRequestURL:[NSURL URLWithString:[BASE_URL stringByAppendingFormat:@"%@/events", APP_KEY]]]; - [interceptor setExpectedResponseCode:202]; - [[_context httpClient] addInterceptor:interceptor]; - - id event = [eventClient createEventWithEventType:@"my_event"]; - - //add fake session.id - [event addAttribute:@"ccesskey-11111111-20140606-231017274" forKey:AWSSessionIDAttributeKey]; - //add startTimeStamp - [event addAttribute:[[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3] forKey:AWSSessionStartTimeAttributeKey]; - //set eventRecorderService object - idhttpClient = [deliveryClient valueForKey:@"httpClient"]; - httpClient.ers = [AWSMobileAnalyticsERS defaultMobileAnalyticsERS]; - - [eventClient recordEvent:event]; - [deliveryClient attemptDelivery]; - - [interceptor waitForResponse:3]; - assertThat([interceptor exception], is(nilValue())); - assertThatBool([interceptor successfulSend], is(equalToBool(YES))); - assertThatBool([interceptor receivedResponse], is(equalToBool(YES))); - [self verifyRequest:interceptor.theRequest]; - - [NSThread sleepForTimeInterval:.5]; - - NSArray *recordedEvents = [deliveryClient batchedEvents]; - BOOL containsMyEvent = NO; - for (NSString *event in recordedEvents) - { - NSDictionary *eventDict = [_serializer readObject:[event dataUsingEncoding:NSUTF8StringEncoding]]; - if ([[eventDict valueForKey:@"event_type"] isEqualToString:@"my_event"]) { - containsMyEvent = YES; - break; - } - } - - assertThatBool(containsMyEvent, is(equalToBool(NO))); -} +//- (void)test_submitEvents_successfulDelivery_eventsDeleted +//{ +// [self buildTestContext]; +// +// AWSMobileAnalyticsDefaultDeliveryClient* deliveryClient = [AWSMobileAnalyticsDefaultDeliveryClient deliveryClientWithContext:_context +// withWanDelivery:NO]; +// id eventClient = [[AWSMobileAnalyticsDefaultEventClient alloc] initWithContext:_context +// withDeliveryClient:deliveryClient +// allowsEventCollection:YES]; +// +// DeliveryBlockingInterceptor* interceptor = [[DeliveryBlockingInterceptor alloc] init]; +// [interceptor setExpectedRequestURL:[NSURL URLWithString:[BASE_URL stringByAppendingFormat:@"%@/events", APP_KEY]]]; +// [interceptor setExpectedResponseCode:202]; +// [[_context httpClient] addInterceptor:interceptor]; +// +// id event = [eventClient createEventWithEventType:@"my_event"]; +// +// //add fake session.id +// [event addAttribute:@"ccesskey-11111111-20140606-231017274" forKey:AWSSessionIDAttributeKey]; +// //add startTimeStamp +// [event addAttribute:[[NSDate date] aws_stringValue:AWSDateISO8601DateFormat3] forKey:AWSSessionStartTimeAttributeKey]; +// //set eventRecorderService object +// idhttpClient = [deliveryClient valueForKey:@"httpClient"]; +// httpClient.ers = [AWSMobileAnalyticsERS defaultMobileAnalyticsERS]; +// +// [eventClient recordEvent:event]; +// [deliveryClient attemptDelivery]; +// +// [interceptor waitForResponse:3]; +// assertThat([interceptor exception], is(nilValue())); +// assertThatBool([interceptor successfulSend], is(equalToBool(YES))); +// assertThatBool([interceptor receivedResponse], is(equalToBool(YES))); +// [self verifyRequest:interceptor.theRequest]; +// +// [NSThread sleepForTimeInterval:.5]; +// +// NSArray *recordedEvents = [deliveryClient batchedEvents]; +// BOOL containsMyEvent = NO; +// for (NSString *event in recordedEvents) +// { +// NSDictionary *eventDict = [_serializer readObject:[event dataUsingEncoding:NSUTF8StringEncoding]]; +// if ([[eventDict valueForKey:@"event_type"] isEqualToString:@"my_event"]) { +// containsMyEvent = YES; +// break; +// } +// } +// +// assertThatBool(containsMyEvent, is(equalToBool(NO))); +//} - (void)test_eventsReadingAndWriting_threadSafety_CoveredAtOtherPlaces { diff --git a/AWSMobileAnalyticsTests/AIMonetizationEventBuilderTests.m b/AWSMobileAnalyticsTests/AIMonetizationEventBuilderTests.m index b56ebbfe530..8d2eb208dc9 100644 --- a/AWSMobileAnalyticsTests/AIMonetizationEventBuilderTests.m +++ b/AWSMobileAnalyticsTests/AIMonetizationEventBuilderTests.m @@ -256,9 +256,8 @@ -(void) test_appleMonetizationEvent_nilValues assertThat(monetizationEvent, is(nilValue())); //nil transaction id } --(void) test_appleMonetizationEvent_manyLocaleCurrencyConversions -{ - AWSMobileAnalyticsAppleMonetizationEventBuilder* appleBuilder = [AWSMobileAnalyticsAppleMonetizationEventBuilder builderWithEventClient:mockEventClient]; +-(void) test_appleMonetizationEvent_manyLocaleCurrencyConversions { + AWSMobileAnalyticsAppleMonetizationEventBuilder* appleBuilder = nil; NSInteger quantity = 1; NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; diff --git a/AWSMobileAnalyticsTests/AISessionClientTests.m b/AWSMobileAnalyticsTests/AISessionClientTests.m index 55b2ee8da54..a920efbf501 100644 --- a/AWSMobileAnalyticsTests/AISessionClientTests.m +++ b/AWSMobileAnalyticsTests/AISessionClientTests.m @@ -474,7 +474,7 @@ -(void)test_StartSession_PreviousPersistedSessionSubmitted_DoesNotFireStopEvent_ TestEventObserver2* newInterceptor = [[TestEventObserver2 alloc] initObserver]; [AWSMobileAnalytics removeCachedInstances]; - insights = [AWSMobileAnalytics mobileAnalyticsForAppId:[NSStringFromSelector(_cmd) stringByAppendingString:@"-2"] + [AWSMobileAnalytics mobileAnalyticsForAppId:[NSStringFromSelector(_cmd) stringByAppendingString:@"-2"] configuration:[AWSMobileAnalyticsConfiguration new] completionBlock:^(AWSMobileAnalytics *newInsights) { id newEc = (id) [newInsights eventClient]; diff --git a/AWSMobileAnalyticsTests/AISubmissionTimePolicyTests.m b/AWSMobileAnalyticsTests/AISubmissionTimePolicyTests.m index 0c44710947a..18cf56e823d 100644 --- a/AWSMobileAnalyticsTests/AISubmissionTimePolicyTests.m +++ b/AWSMobileAnalyticsTests/AISubmissionTimePolicyTests.m @@ -16,7 +16,7 @@ #import "AISubmissionTimePolicyTests.h" #import "AIInsightsContextBuilder.h" #import "AWSMobileAnalyticsSubmissionTimePolicy.h" -#import "OCMock.h" +#import static id mockContext = nil; static id mockPreferences = nil; diff --git a/AWSMobileAnalyticsTests/AWSAnalyticsTests.m b/AWSMobileAnalyticsTests/AWSAnalyticsTests.m index f2f76dd4c4b..2006df31b58 100644 --- a/AWSMobileAnalyticsTests/AWSAnalyticsTests.m +++ b/AWSMobileAnalyticsTests/AWSAnalyticsTests.m @@ -44,7 +44,66 @@ - (void)tearDown { [super tearDown]; } - +- (void)testAtomicCopy { + + NSFileManager *fileManager = [NSFileManager defaultManager]; + + NSURL* possibleCachesURL = [[fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; + XCTAssertNotNil(possibleCachesURL); + NSString *testCachesPath = [[possibleCachesURL path] stringByAppendingPathComponent:@"com.amazonaws.test"]; + NSError *error = nil; + + + NSURL* possibleApplicationSupportURL = [[fileManager URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; + XCTAssertNotNil(possibleApplicationSupportURL); + NSString *testAppSupportPath = [[possibleApplicationSupportURL path] stringByAppendingPathComponent:@"com.amazonaws.test"]; + error = nil; + + //clean up + [fileManager removeItemAtPath:testCachesPath error:nil]; + [fileManager removeItemAtPath:testAppSupportPath error:nil]; + + XCTAssertTrue([fileManager createDirectoryAtPath:testCachesPath withIntermediateDirectories:YES attributes:nil error:&error]); + XCTAssertTrue([fileManager createDirectoryAtPath:testAppSupportPath withIntermediateDirectories:YES attributes:nil error:&error]); + + NSString *uuid = [[NSUUID UUID] UUIDString]; + NSDictionary *testDic = @{@"testID":uuid}; + error = nil; + NSData *testData = [NSJSONSerialization dataWithJSONObject:testDic options:kNilOptions error:&error]; + XCTAssertNotNil(testData); + XCTAssertNil(error); + + XCTAssertTrue([testData writeToFile:[testCachesPath stringByAppendingPathComponent:@"testFile"] atomically:YES]); + + error = nil; + BOOL result = [fileManager aws_atomicallyCopyItemAtURL:[NSURL fileURLWithPath:testCachesPath] + toURL:[NSURL fileURLWithPath:testAppSupportPath] + backupItemName:@"com.amazonaws.MobileAnalytics.backupItem" + error:&error]; + if ( NO == result) { + XCTFail(@"aws_atomicCopyItemAtURL failed. %@",error); + } + + XCTAssertTrue([fileManager fileExistsAtPath:[testCachesPath stringByAppendingPathComponent:@"testFile"]]); + XCTAssertTrue([fileManager fileExistsAtPath:[testAppSupportPath stringByAppendingPathComponent:@"testFile"]]); + + NSData *resultTestData = [NSData dataWithContentsOfFile:[testAppSupportPath stringByAppendingPathComponent:@"testFile"]]; + XCTAssertNotNil(resultTestData); + XCTAssertEqualObjects(testData, resultTestData); + error = nil; + NSDictionary *resultTestDic = [NSJSONSerialization JSONObjectWithData:resultTestData options:kNilOptions error:&error]; + XCTAssertNotNil(resultTestDic); + XCTAssertNil(error); + + NSString *resultUUID = resultTestDic[@"testID"]; + XCTAssertEqualObjects(uuid, resultUUID); + + + //clean up + [fileManager removeItemAtPath:testCachesPath error:nil]; + [fileManager removeItemAtPath:testAppSupportPath error:nil]; + +} - (void)test_clientID_persistence { #pragma clang diagnostic push diff --git a/AWSMobileAnalyticsTests/AWSGeneralMobileAnalyticsERSTests.m b/AWSMobileAnalyticsTests/AWSGeneralMobileAnalyticsERSTests.m index cd987da13d3..3c7818f86c9 100644 --- a/AWSMobileAnalyticsTests/AWSGeneralMobileAnalyticsERSTests.m +++ b/AWSMobileAnalyticsTests/AWSGeneralMobileAnalyticsERSTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSMobileAnalyticsERS.h" +static id mockNetworking = nil; + @interface AWSGeneralMobileAnalyticsERSTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralMobileAnalyticsERSTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testPutEvents { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSMobileAnalyticsERS registerMobileAnalyticsERSWithConfiguration:configuration forKey:key]; + AWSMobileAnalyticsERS *awsClient = [AWSMobileAnalyticsERS MobileAnalyticsERSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSMobileAnalyticsERS MobileAnalyticsERSForKey:key] putEvents:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSMobileAnalyticsERS removeMobileAnalyticsERSForKey:key]; } diff --git a/AWSMobileAnalyticsTests/AWSMobileAnalyticsERSTests.m b/AWSMobileAnalyticsTests/AWSMobileAnalyticsERSTests.m index 95711fe08af..d1dea0ce445 100644 --- a/AWSMobileAnalyticsTests/AWSMobileAnalyticsERSTests.m +++ b/AWSMobileAnalyticsTests/AWSMobileAnalyticsERSTests.m @@ -15,6 +15,7 @@ #if !AWS_TEST_BJS_INSTEAD +#import #import #import "AWSCore.h" #import "AWSTestUtility.h" diff --git a/AWSMobileAnalyticsTests/AmazonInsightsSDKTests.h b/AWSMobileAnalyticsTests/AmazonInsightsSDKTests.h index 08b40d103b6..9a19fe5c98c 100644 --- a/AWSMobileAnalyticsTests/AmazonInsightsSDKTests.h +++ b/AWSMobileAnalyticsTests/AmazonInsightsSDKTests.h @@ -18,7 +18,7 @@ #import #import #import -#import "OCMock.h" +#import @interface NSString (RegExpExtensions) - (BOOL)doesMatchRegStringExp:(NSString *)string; diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/NSNotificationCenter+OCMAdditions.h b/AWSMobileAnalyticsTests/usr/include/OCMock/NSNotificationCenter+OCMAdditions.h deleted file mode 100644 index ab4832bbfb6..00000000000 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/NSNotificationCenter+OCMAdditions.h +++ /dev/null @@ -1,15 +0,0 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2009 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- - -#import - -@class OCMockObserver; - - -@interface NSNotificationCenter(OCMAdditions) - -- (void)addMockObserver:(OCMockObserver *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; - -@end diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMConstraint.h b/AWSMobileAnalyticsTests/usr/include/OCMock/OCMConstraint.h deleted file mode 100644 index 3ae12646038..00000000000 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMConstraint.h +++ /dev/null @@ -1,64 +0,0 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2007-2010 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- - -#import - - -@interface OCMConstraint : NSObject - -+ (id)constraint; -- (BOOL)evaluate:(id)value; - -// if you are looking for any, isNil, etc, they have moved to OCMArg - -// try to use [OCMArg checkWith...] instead of the constraintWith... methods below - -+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; -+ (id)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; - - -@end - -@interface OCMAnyConstraint : OCMConstraint -@end - -@interface OCMIsNilConstraint : OCMConstraint -@end - -@interface OCMIsNotNilConstraint : OCMConstraint -@end - -@interface OCMIsNotEqualConstraint : OCMConstraint -{ - @public - id testValue; -} - -@end - -@interface OCMInvocationConstraint : OCMConstraint -{ - @public - NSInvocation *invocation; -} - -@end - -#if NS_BLOCKS_AVAILABLE - -@interface OCMBlockConstraint : OCMConstraint -{ - BOOL (^block)(id); -} - -- (id)initWithConstraintBlock:(BOOL (^)(id))block; - -@end - -#endif - - -#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] -#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMock.h b/AWSMobileAnalyticsTests/usr/include/OCMock/OCMock.h deleted file mode 100644 index 1b2d1a41e3f..00000000000 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMock.h +++ /dev/null @@ -1,10 +0,0 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- - -#import "OCMockObject.h" -#import "OCMockRecorder.h" -#import "OCMConstraint.h" -#import "OCMArg.h" -#import "NSNotificationCenter+OCMAdditions.h" diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockObject.h b/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockObject.h deleted file mode 100644 index e796705941f..00000000000 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockObject.h +++ /dev/null @@ -1,46 +0,0 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2004-2008 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- - -#import - -@interface OCMockObject : NSProxy -{ - BOOL isNice; - BOOL expectationOrderMatters; - NSMutableArray *recorders; - NSMutableArray *expectations; - NSMutableArray *rejections; - NSMutableArray *exceptions; -} - -+ (id)mockForClass:(Class)aClass; -+ (id)mockForProtocol:(Protocol *)aProtocol; -+ (id)partialMockForObject:(NSObject *)anObject; - -+ (id)niceMockForClass:(Class)aClass; -+ (id)niceMockForProtocol:(Protocol *)aProtocol; - -+ (id)observerMock; - -- (id)init; - -- (void)setExpectationOrderMatters:(BOOL)flag; - -- (id)stub; -- (id)expect; -- (id)reject; - -- (void)verify; - -- (void)stopMocking; - -// internal use only - -- (id)getNewRecorder; -- (BOOL)handleInvocation:(NSInvocation *)anInvocation; -- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; -- (BOOL)handleSelector:(SEL)sel; - -@end diff --git a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockRecorder.h b/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockRecorder.h deleted file mode 100644 index 0dcd3f2c34c..00000000000 --- a/AWSMobileAnalyticsTests/usr/include/OCMock/OCMockRecorder.h +++ /dev/null @@ -1,38 +0,0 @@ -//--------------------------------------------------------------------------------------- -// $Id$ -// Copyright (c) 2004-2013 by Mulle Kybernetik. See License file for details. -//--------------------------------------------------------------------------------------- - -#import - -@interface OCMockRecorder : NSProxy -{ - id signatureResolver; - BOOL recordedAsClassMethod; - BOOL ignoreNonObjectArgs; - NSInvocation *recordedInvocation; - NSMutableArray *invocationHandlers; -} - -- (id)initWithSignatureResolver:(id)anObject; - -- (BOOL)matchesSelector:(SEL)sel; -- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; -- (void)releaseInvocation; - -- (id)andReturn:(id)anObject; -- (id)andReturnValue:(NSValue *)aValue; -- (id)andThrow:(NSException *)anException; -- (id)andPost:(NSNotification *)aNotification; -- (id)andCall:(SEL)selector onObject:(id)anObject; -#if NS_BLOCKS_AVAILABLE -- (id)andDo:(void (^)(NSInvocation *))block; -#endif -- (id)andForwardToRealObject; - -- (id)classMethod; -- (id)ignoringNonObjectArgs; - -- (NSArray *)invocationHandlers; - -@end diff --git a/AWSMobileAnalyticsTests/usr/lib/libOCMock.a b/AWSMobileAnalyticsTests/usr/lib/libOCMock.a deleted file mode 100644 index a8ecb3aabe01f5a6d75ecf4df6104600c439d792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1738764 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%0Ac&O&-M^z-=0 zV;-av(;o47@?bAb>|t%SrZM0RGwcx$5xM?iZ!hc(1h21Qk2nG8<=BnD zy#e~;QT}S+BBT@39`QX0w3jFLPQu;{@Fp4dh%-bk4RT(bZ}!7pI(Wk%M@)UhKBTvz z{8)dh=_=r4q!TlpI0@-lus<07Tn?OobYi9x$042HeVLnMHT4CKK{_$hi7f;_{B3vZ zdOis|oo=)Pcc7k$F%@HH5%iYB&S~HyNGHa&k+>CsdJaO4{la|69Rd%lOgZ&Tyk6uU zgB;sUZW69*!Fv>Pb~_?|80il|57shkdIER_(urx0csT;?;T1S#?>)#Z09^65y-8FKQBV=7{96jS<0!}6 zi!iPVUOnW9DMws~^i{~`ML8RQ@v@?Gokct!fqLdZZYAU{ha4YQ-v>Ej>LKR4j+Emx zj!~f5f^Qa@D%1x(T*q)K{7C_C0Q3-34{?8_v)*?heF$)0q}%O^I05PGkA}gI%YoyN zZud{bF$nbIw59h;4&=^3`AIw>xAzP2+X$3<19E3!Z&ZJ)=`HYfK#myOM&cKd&f_%& z>8}7khjjb+CEkQ|9NVkt);>Qp&;m1nIjfS0{ zpxmp#TLC#@Y#WJ}BJlpF4svPWzYMu0;8jA77~4kTxd;;=R|rb^Y{k#B8f#-)j zF}97w;}QIj!#-2@OEHie1Kx1R`DOnSr-&Se$kp}i0LbzE&m_o=7dhfKgc#h;9}(Ir z^svwtp$CQT7rIaAUZH!0HVfS)bcfJagl-qQP3RV(n}u!=x?bp7p{s>93S}MB@0CIy z651eisnB|%bwaC!RtPN@S}L?i=siLUg-#cmCp1@Rj?gTjexc)qW(Z9enkIC(&=jFV zg!+UI6q+nFNobIC}CH$4be@OTZ!e1)zosql-0e~<7Bg+E>R zdBV>Xeva_7gzp#rc;ROVKVA4~!XGaD6yXmMzEAiAg`X_^B;h9tKVJA=;e%LgCw!jC z{mf^Ur2h>;(%%bREwoW+fzYW!FB5u+(8FkK%&*^Xwmjb#{D{z*LJNfQ84l&~oJUbS zS5x$`&>stZTIf8XWkNaMi1~*I?ZDVH@kyagLSGR2pwNF4%CU6Hj}eM-aD_R>P5v)Y zVWe*g{l3sggyss(5!zplAj?I<5CLC96rw(j5Sc---PZI`l?Wj->CEzLNR`#Fvm@p?=z34 ze-ZkE(5*thEA-n!Zx?#2&=+uDLp@uCE*H8)DDIxbIPPuh2b0HwfkZ z3-vA$%6kmrG@&xB+7l-@M(7a;QLa_!E}=Vwt`^!Tv{ERqpYiYE^)TrKp+2Dlg`UN6 z#`M!dcM5$~=qjNrh2k8moC zu}od{BnUn)$I(B8o)&5!pMMg}^$MB)J)!Ri{khQp6uMm~7dfH)GeWt{BJra_IVMj0 zZ$fK@RtUv7xk|rFC|8H1e74XDLPrZ7Av8rO$EqoRkx(vbN$eK-r5yLC?BieP5uvR@ z)w-a_$F(?_{|%w93;mhUe;2wz=z5{w7s@3>nSY7UMMCcvS|aowp&Zkt{Ov-y@G0>a zpDw-*jEAlcuRVc!up&OSeVDwr!!lmDU6144f*^w&b0g>q^?9!65-Dl%JDbKO&2;@C>Q-Ef1J=ULa!EjrO<&wlZEm%2IlJ} z)IPs*Y>xbY;D_{#&~~B6g<@PzrMC!uU+B9+-xm6o(Ekw1760+?*&uYi&>snXTFHdN$&>W$>Ut>D&*GSF#HR2({_X#!c&zK%B zd|W=M{K57Qx~xqnvXO}Kys`;+4gvg;f$>hprgsgz7kIaU_W-|O;AY@w47>~Y`v%7K z?xtl1eg$}efwu$SYv66blMTED_$C8y2ENX~8-On}Fpkqry$rk-_@B21%DWo)gn=7@ zKQizt;CBtY5_q?P9|C^Czzx997%M5%Ea4!QF0{=5BQ2yz_Ck&hi{E>lkf!{T74)AURX92%pU_bCP1|ARmeFJ9z zFEemD@B#y;0pDxj;lPs(oC184fpI)+dg?Y^o_}ILUuIz1k23HO;C6NvIDV+#2mFzN2Liui;AG(cG;k8|W&u82d4_TSaq(Vm~U3{h=u8RZ-NBq9~`L@K;gT zRdlb=9YVJVT`P2@(0ZZeLJNiF2+a_hA~ad(<+u(>!9&$;po2kq|C(gEtqGugKu1IF zW`tV!ncxBw+Y5{%%I8?G2|qCg&+sIE5AF^5>L%s+UfewrKaMz`g(`j==3q$tG~&FT zB%klW-6-)Rh}TPeI8F>NNu2M#os>A=d*hq~=H)wYb0nUNIOkcA&v)HEmN?&Y!`u|b z=R0nbCC>NTc#lPSzT5T-TL$qjB+hr*c)v&)zR$LRanu99W42J@{Dv9kb}2r;SN2_r z^IK(&66bfyct6X${6^VNB+l=Xy&&;bi1VJ9GL4A;LgM@;*>5Gz?~(mp;`|obA0^K3 zkbNp~euM0966g2F{wZ;Odn^|FiTe57u|5*#H^(lOIKMZ>`+v&tTVo?6-i-JS65oS3 z#}FvP?~6^A_&&sEN}S&n<9J>I>V5|r-Uf;D`&d__J)zmC4Sll{XPdM6RYv?8L#D;x zqhE03e__P&Jk{a<%-}y_#HSnaB10a#+sO;I6TiZUbLs=rxXned;}+MlE1A8Z_WlBV zchj1^plm@&Io2M+(kB&Vm5P=usJ3QLDY&hyj>`dMR+eT~%)7sm-(@9RFN>31Q?;O= ztO9G|R3YvZ_J)sJg-8jsVu2pY|WlJVba9e6LT{Q3T6*M?py0i%Bt(I ztQ|8=%$`_PiJX;nTB-UfV}2P{*eRLyn=%i?sCJN#NZ-DI*&hF^%Oo6M1x{plu~ zZ8OrEOxJ`4itlZR1 zUL5t|7ozGWU*rX;y2%)M!L4pG+KZKiEu-$guD67amB`pMJ2J|Sq)TMvD4R8MRDhRZ zr;fH&j7%SG^U`hoBhv$^H`uAyk91;Aj_aKq*E>0`cXEtza-ieYo{t>k4iSnqvt;!9l4a$bVEj=&`@->A+CG2(&*5-NzX{5NcQh{@m zxXqqjS5{xA;~G!DwU8G)#Pg)xrGS z#^XBP+)$1N8_(tfjJ0+6Ev_K%Yv{05AW!wYlG?=!=2TVG)-9Zq{#A9@)rL!U=qRW| zgDAPZa-OP{uc`xC8*E2r%e5U=Bd#o7fD5QF_3?WM2iFJd*WN@24(pn-xwZ5wD|33L zoocD?rltTUp%R&|0Rv^MUfhbX7-~bEq65R%v>hC@Uy$({q>X2TGPbUMl*~1i1pDy{ zgnh`1_f(Z1`{4&}rMhfV7Ob6ITg%b}>o^D<%(GH-v_pq98KW%fdRggUr3Tk&3v}T2 z!CG~}vgm7W>=%9wJ7mA`83b-ctf#uyp&Ba-8C;fg(2)oJb}7qQl!f;R=4RJNab3l{ zTC}oY9l1ELRUP7BhdQhJvWWFDZ$a_>W%DZMRt4+8d~H5r)&r)d@hQz!B6Q5m%+Ge@sN*>l!q!obvfx&l8;hnkTSxJnIW=XA zLUr(2D(1mjFH1%{A84qK8Z6LVRvY36-ZN9%-r$`PM#qBU5>=ewvV0vK6<9!)2E*z2 z0%fuNXbbGykg`-%l_;NsbtGV%gwILdLVwP!9Xi+-U<=Vvy>JfOI*++7`(+|J3u-^p zSLHK*LUiExSLwkz@J_b%C8TEst(gSj5FN5xLh6HKFC1%sR>3a2KIY}d{)2%VDTao=_O|_1e@EUR_e;$kmTPfVkMi?pI#2mK z<_^ue9GvK7SxKL}u1LwA+U|9qKXdGqmD2gXFMIoL>&?bjT`#TJ?#cFdB>Ny~)n~cN zec9*Fw48EfTfRa6(WBn-J$Q}peSgQfL^FLa(jRZ~cN|q*f5%l<)@LC-%3c0oRyp$T zIOSSvr6j-U^0`|vxZP+qy0%TMM(+~XFyW6Z@?eMz+^_$qIiqcZQ*~std zW8>Xz4gT|I#=ohTYR)gKTUb-6mY)u0%$!$OUbV1p+Cq${%$&x zxCWu7a!S?I{2A7~T3@YJ?Suc&?Zax{sFPcKcimcG4OKd+cQ4KtjmU?tRc*vC0^?t8 zU2Ya?hGqEE#-&>&n)o$QlfT)Q(Lb5rV5LLB34|NKr*Eebwjw?ilrqJT<+ThqUQ3u8 z-=DHK&U4Vocw&Mrk#9FR+jkLjx!o_3#Jj#l!n84r%%ot{0We(g*Fl9!iJ~%B{7w92 zZ?3xF=!*#xn0-6~I)Kysam6kK@h-)W`*Zxbl3eX18TfgQk(nFut1Toc3sZ@eg(PKR z0dNmLel{V*4W^Z=IS~V&_KYqj>Q9?%5MXXB9E@@G{1owth`KV}IV9J*{+(nC*m(B_ zMtOyxjb5vavR1XxYn9Po1NV4Y#N+R$nd>&-w+Ab5214`-@>t>C2}kp6GsUAW5I%C)!Fl3F7m_2JH0yFK{T~QD5Wi-HIrW z08HDw5<0!?*?UE^c-~R??U{j}euVKcBSB(4J##>AMu<+lC=bLN9oIVrl$8OqQ>m!3p0j}OLim5!dmHeosx$9*2Z#|YV)#(d zqDdgZpaIelXt1bgsY5Meqoo$DwSlodV3|s+wQ5nRr4F^!QpZ|q(K4-CstA^=BM4rmf$4Mg7BovUhbsJ zKA8t{77ikav3a9-Md~zMuV4D`%>Mr2nMJ|jna8Dd(R2-g9iiFI-N^DD;P-!z(EQB* z9cjvBmf?3Iqhcik^aH&&=tz|^Bgj`je*4z))bW9fSCsALI<|etT3RV*)aw?Ws^^P?ykgCMu z^4xt$s$R)F8$#7vrw%kvm2i0alPacQ(9BcSMem=xuP&5-)^Sf61uV0Gj%a9Hu&lbN z_87-UxnZabRT&3AEp#VgrJH-5T6dTG=Z|P`>gbxfZ;V~;>G%{*ztZ54H{qg-ro4}c zb!_!@I)us%J*Mwkc*l+%Pbm&thD6Ps_hR|k>A04RBy;-9!miG2@tcOOx$N4$9IoN_ z7KaBqBpIY4y5ZR@jNM+@RF^JXK_P2$?N$9+8#l8EFYu0e%Q9Qc9a8Ldf1ik7MtVCI z7WZ)J+fLtjs&s-Y*j`+G8C6rdc$6@?ZeL_!?T@SmqiAqR-y=1z7v9nD$S+4eKKi1O zFZJK{^TU@;?teyY;v2X9V*I&lMvh&HObezJvjwvavkS8qa|q*_uTa&Ax?H;t`VWWL zgN(;maS7bj&m#doq`#InT(l(S&X?6^L5NdjGCMfcWj38h|9I?p}Oq@#IUv{ zR38S$a!poPY91R)O>XH@{jLueE@iP;dMg;qHQZsTv2GsKh?kV!5+ zvGm1bQB`ACEWL=#qdrl@(l?4psSz!fUNyEIyt|*u>#p_^AA@XAzEqADMes)K4@Gbl ziidz#LGiP&nLPmXEYK=%TLF((>Ly{X^}n^rg!XICpcH6)n)-b<>i!r&} zwxm&pHXI&kRCSTurB76TMA7SL+$h9h`NPf0=Me?T3CmqrlsYOu1tovu>V&{Oe=L-A zb(lMju$#lK@P^>7;-&bCpM;99_=>M^#gE2Ud<7`J;vsp63->V`<^G7#i;MDc48dNxxjy$lk@Zk(Va>&w8Q~kvY-i-p_oW;mFEAkB`^FSR!gvtF9E$b*%Y5@~=yK zIz+EtUR1}?=ldK*N2u~x^L@J05kyN>)3N6Jbf*KaD}#s}YrcDy4Ar8}tm$xd5f9ZG>a9R$$2miH;8OwK zaBLmj&XM6gT4--|xPr8FH%DeS(s9f-(=o7LSXXD}N4Ili_TXR1*q)IV zSP>mZpCj`!!n$^L*5Nzw8_aL%ZjOv}@XZ$LNRk%2C*iFLbaXdIW;T+qp(jPdIpgZA z!*ynLo+C3sodaA$c~CR1PCB}qBlAIYbT>yvI(|xi1o0?I-`h^{=x&Zo4<3wJB;sJc zpOUfYu&n8%qq{jWSD-_E)#Z9q3dhn^pr>wgd~=$M4(bv7!O$n zVp6zq8@(0KH=%kwDloeA$k=1!Xz1CwzQ3O>KgeRPOX~1du|egJ)oJEN>TpdqG<$j3 z7nn11V%;zP?49@CTl)`YZQ1fzUG<`x`r2qKqSULdskvybJCMAwG?)oqs#{RXy<~Ba zlelp4ysJa04vs`q@2Clw4)Yq8jVjT+2Ie!29F-b5Myb)`q<)5fu?uZw6dky5D z1wKvi2IqVpzn=u=eA7YtoV=`C6JGASQr2TNzlmG;>FHd1>XTYS`gw1|`x?fE^m{qA z@tod2gjet|KY3nH?M*N?J6YK0ZV58loi`AUB(euP_|X8K;@}YA6LKvU^m_apd#>v| z=s{PUmr(!MrI=WLVWUW44}JOfyp5lD{DO2aUXM|*T-^J951ZFdvAqDBuUGvNiFy1y ziizdFkJ0x(UZ3AL)-RUIt05z^bG+<=(q5nHHM#%je2ucl(+okjdI{Wh%1Lf8aNffo zdQU`$*n5U!-u_@Z$2?^hOzto3{s?+6)gk%m5%k{v2zo&`uf&$NT;f>G`ptZ`EjF>%daZT-TYSa-E7t=yt z)U;$oS?#jg`o#^kjUy`RtDEL8Zd{lixgOqNtccW%vMz?Umo8}>v0%}>`lU6sBU~-} z&k1(M@+D2R3r9>@Ft@R~arubyMrwx7FK)bg$%yjBOBd0=VFAQ&S5t~RVp45&jV6FG za1^a(y82k@a!@_$DHucdhrPNQM6b&#?$53{k*7YaT)Bn*Tbt2kXSW|!RxxjSl;zh; z+GWpGWs$*Z`SfcZwXyV!xbJkoV)XO~hl9j=FuO{#r{^vli$uu#XAKxfv$E^_{~%+= zowa3r=kp%v_AOy!stcA>`x)q_;(Hkbwv`JOHn8k;UUhx_Tvnobl?~N3od= zT^B{Zkb@VNUQChqmlu_pN^wr#o~Vn~*48$5xZw+G^tO!Z>iDAU>i&1kB`+9*Q>l_s zq0>bn!T4V?vOiVv+^4>H$B!-^i+vKt`jLYnBAZ|l4jH{~y^D^&=`+_3FF!xfYkTE{ zdS4)Lg|Bv&t{}eR>B@|+#-sunH8o|5B*>+|sQJn4}irCn5)0HGUY3 z8)_VpzE5!JNC=?oHsz2yOsRiQszhCnLBHd|Cw8fcr;q71-~j;w&Td46WyD@uUGZSF?_M*YUh4T75r7)3oq&CcfRahTqP;b zYsGCCRK-o^RE)0o(~r4`2U`ABPwl*bJxXNx0R5Qqud6^0NaW)CZ)E_FwQlh!Isz4> z<>>1cyVK!6Vt!}UvHCH)(?KL6X}NOVyvka)HAH1o_1w(9zXtN77!QTyhqAJ(%lhrY zPBXsUJFHvOzQ{xHINEg7ToLxmgzAF6zwXuxYEKvH9B+>4cn}@dy`n19U8Y0*nEKQu zk305b9zq9arg$wG_cod?)6wl3%qBuxL1;yEuFKybW-5LRN?$=F9&?v0aWV3LGV?=a zThD{8XxL#r1pip;I1drp^~kjZo%~Y971f81qpssrKS&9FnB?sI6;-)+lhlM)kRMC= z3hHVdXDd3CmXzrzs|xGWNPf81H`5#&o!-p+xCb37*JY-|31$35%ZF}m=DppFj-mLO zf{y6bF+W^9y6xwF9v!RkyzJOIy6xw#qG7O4H4(piV^ zz;Dpc-CbX~blgsz9_ScHTGYPb3U6ss9VnPJw|>z>*%Jh{EDRS>s=MJ zj#nog-Sw4!5FOq1l}pDJ)MG(BifhC2(J3C?^_6cu#q+dJ@*FjCxrU)*hi~nqqr1NH zv&n~-@bjOeeUFjfPCB~lEAM-z=eiJGOREI6; zqObfRdO!8Py`gWq7kqC z4)_ndh=yR7QQi*2bbcIR+O-uuJSv^8mLJ5+#~+^K(c|u=+BZyq+N#gk{aW{V=wR!F z6Mr@S@Hr;2Dk35Gy$8o19v;J&t-#!UaANy2pYw5|s^zg@ZRx-NB^56|)F=L(^7!B1 zxH10sgHNvAlJm8R?X63Tw0@J-utVx{TXNUE_trybcyjvhkL+wwTvF}3oVHYZZfZHJ zQ42Ii;QhU9*yQH2Gwb@*jXxBN<<#}qxV$X>wd~t_-}Z|mV_W)s;}=KDb`{y*2xeoIBrpYlT*_wl8Y%`LVj}WTGX$ zE(@22gNjrA!5$mmd+Vx$MVpI>eKE2BKYtlWTKtu$iFMgSyx+e2((m_qhqAJ=yqpnkPwoGiltu~z-SuI&;DIqt$H{r}leqL;^hQ?Cu zM^0JpR`w3B>s@zES#w$OAo&6 zDn~3gU%`-<1w&a-43rJi0$+^Wr+VbjB?eS@TocGLtGUAn3t1&OH zC7X~&9Z)GMIiQj^>_E}x_`0skUT%0lvbo~%_x{xLuDo^f+t1w>zXaxUU;e=RC69W@ zA9G{1cl%nGd*0gP%Jnp)+H1xKv5U26#rUB&Qti#*Jvy}_S*}sIwErq|%c-lnbkg@z z?Wq+0!}aRV;ybScX9t{OOLNggzYOl=!Z*375ccZ`p@wf3pQ`x^Zc(37X5s4g}8y|>o9p(lKEiQ<=PUopXzmaG`= zdOlaYp>^=7_BCPpQ?nb+51v)!)G|wlQd-#NKliEjA-=xDiyF}zSuH=4cn=I?%JUC? zSEVmjHElT|{_2Rgay;Rt;13u-*jBK^-I8iAG=DRX^eWMw0mG4b$N7chEiXf=Rcq@9 zzwzE%$v5;QznoO6=3lCP0!Vw6kaFw2w+i3LDX%~_-=%(ylN-vtj@6aG&3YqQu2{Ug zKh=J(3&D0N*q;OU@c!I#h4|iE2lmIyhroGle|CA2Rr#Y_z4zF@L#(d<{nqsU0XJ;P zAvPDdJh_cfa_cI}H(&bRThHuQEIaOHuzml)w%C>+AN!R|Qy#cjdo4q_Uk~p8A|Y;Z zKC@iBFFumH(obP-B!#WSO)0#KxTV_t-3tc06sF*|?Dy75+Zs}oYTsU{Fs3_KrRPTc z&W2t`N=2_hhySkdW9FxD(bk|G-00GGm5WUgTD-d9vsHSoaIqZgvob&H8zxjJ9;xL(t4%B3^a{)d=f zx2axBwLjaxr{00tUntAsE;2g)-S^%aL}&mCip5o`{qVnm$>xGBj>*MX(@>r_;^Cn=jzx&xEUR7bzYbhzu;$3j}>+$lL-)A?B2F3fhJDSUK>hzRc zbjV8_x6Z4pIB(DsD(^SHUbL>_$Ph~OD&jqxx8Zwlt$aQ4msq0pyx0CS>yE-?|NEpf zn;dOIr#I}yU$J9G-HCUso{;s#AS)I3cQ%yw#WmcyeBN*;)Wt6? zBsBwdKMohTdw`E#4;InuxDbgg!J4!DvR zr0cp+&x%mb1*Yf0ZuHbRJ@p`QKIf^3KQ3>-;(LXWjQ_Qn-fq>%gCb`#vYsGt~67cBAJxr{|^) zdY+aZ#+b5iTIuOKJxg{zU1Fm2NQ%QA+w>rA1Vyja>0zpny{;eY-ZJDu$D>&Mkz0mn z*v64Hsw+8F*~KD})L+kf31dYpa*kvJH(N zQ+f>$RVh4?>D_saA`V$6^j{+u5Bz;h#iGc>ih@kUf^~_ zo>%M7BF9zYwT)P2*nZ2Uo^A8#r>>@U$-Kq|{-(;c&2;4v+m0#nXKqE~70lJLJdK9p zBI5_14p3VRUtR0XW7bB~gyrY4*-mXEvp4)~(Z+?rgs&x~PNtOmtBsw5WXxc}cD1(C z>5z;-X32EAAr>#HnYlO;;*uFl=gw14{6+IEe^q4Inuk59UFp#sF_(qhh}s$lSb*KM zw82>k%TYfu$`ajj=YGrttABQJP1n(G^kciEV{|{WU{OsN)y7(8=FGDw`Qa~N3!tep z+%2oDboQAG7S>+2coE&m4$i2h6V}--(haYzNi+OCuFbWK+z!0Bq8acP%+q`tCfWpy z>ZWS5j&E$N7MpKip4)cJJD3=Q7bjsxU?yUwVd^l;FgIdu$J~v%7xOUYmzY0b-ozZo zVDl$2<(TQ1I?OegFJkV)v|;vOG|)K+^K;D9#Yx?%^EPrA^62i<1rP;J0A$(j`ev1mXEy zq}?fHy!nHJ-JtxwGxbl6An!G#}~0zW7j=?4ZGGe=^nm` z{c<|LB&Yld@<`(v8dJ!;$R0O$p%ne{`!_ndR9+O;#|c&qV$X+v9-VqBJF;tUf0eNT*x$ge@+h5JDEdw0lkhc8|3mCUv0sW^ci8Rj>0_$zOeFQBfJ;jr6N4o?mj1F;Zl0H;jU|THNW zd6X;hM){JMD=KN1|6^J8J=qvmeLG6G}sQFES_ zLw0^)5Bit=X`ea2ajaQ|J!S-~?D^Od8~9m{i52E#4@)tj^mT!L{zSVf*=OC$Z{F{? z<*|Mn$T%0vyuA)TEX+U&{@l#lfw5Q>K;tH{S^vP+>n+I*ypI%)1LnWupo{CZMZKNU zflg^}r*NQC==F4qWRtO&6wSeJY!=JRyu!#d4H3# z9-DP-sA7mz%nelxiKrOjRP?z9U$5bd8_GsbE)m0|?gn8Vj<29A9?wf>eO&urWqJMX z#345pe+F_dCN@4thpfeO3!*pU*N)Xx*kdmiH!U~&uh?>W5W>KmL}8B~7(e%GSR|dJ zJ-V`TzZ*aoTJBGPx%kOpw=G;>4q$Hw{}R9g2U#fY3-=N9`o}(w&twlm>xBhgEVl@Y zvZjY0S`w(Tfq;BuH-ih#=OlQ*zK-TWjm>%*u3tt64WI`dO>H9o!LB>y%xMZ?S1q_KE^lz$#ethA@@Mr?d6rm&uJ;g#a(hd17Zr?TdU zH{OMJJc;!R+_`>JV)rSoJMfoB9TuCVQxAQ=Q=DHFHs9|Q=T~#3y_|;?hr|Vu+m`(e zJQn;|ahVoVDq{KQ8{~989qOFsbZWM_uXCEyseSuW1o`Bc)B*D3F1D_Q@!Vl`p zE~q=ey{=NMzT84Bt+*CWLX}@1tdXA|!bA6VNbKvem=@l-!>(ujF4X;Xr~B7P_`1LD zbpI9HN9PMCiCt*v`;0>Sh6=3C8s#c@MXK+P-LK*@7THTMREI!6m+p4zD|Gu@6?(T* zKM&mNMJc;mxwK5mJ~HqONId8GtMGin)%@gmIcLF2_Uw@^=D7plNTR3PB{276z(zrT zm%wayF44I#WB(RY%@muB{uM4#zeLQB)W5k%eHke~Qvc>6rK6PmTla5@)cruOpiZhb z`l_U+)u}pxsQaomI#o}Gsx~@Rzm_WZI@qYfwa=+?$G!g4S0y#CI#oKf*jM#ar|KV} zs-HSl1>7mGz*Q?x`+oP~Z#XxcJt{-LPdmRS>#n+Ne%kpR?fkMP!i)XV_gjL$WzMg1 z-w*ef&hPo5-(NbvmpQ+mlHccizs>l2-1$A8g5mpp&iP#!`hCv%UFrO~V|;(>``w1W zT$&)USr>+tuI^V^dg_tU%2`OQ&Da{0W^ z`PBjI6czb>!}q%vf2Yxuip@GN^!tYMduHhO4d?e9=XbsQ9`^kX!JnqO#b(_Q`aSIY zP7D1Wc7AK*H{Imwm-UL&Wb3^9`1kqIp;)ngS$W**SoTlE{TV+41c#*s=AP)@mV@*= zNG0FPep#}Ap5I}$5ijguHIcvCs8^by)keI4 z19z$6dnJIQxxWQzt&{tA(Ay{20kqKHIkazjvrnmYn|7Yls~2UgfB)G2>+`b zB)7b%C|F)}Ty%NSfV2wovk!SVFuic;cz@y23Bkgp6OW5c?teN_q$QvoNxjRsTlDj( zKK;d`ZpKBR=ffq)r_H!@FFIR2F`a`)iM;&ZuZy+`QZe!I}~`U%8Iv zDV+(fizaaP`>p6J@p}bfJDKQWCO-W;_E81lr2F}Nju&nn+Lx_Erz9>Z`F7UW{v~;d zrxTYkI^X}>iAxfnPJBKu@jdV&2Tx9XP0pXq8eWt&wD%KPWBUK_cYn>gpy*rK%M(qB zb-9VJv-2p+r+(wMAbm4&a#l(I#Ne#K{j~=vo0H~cjr&OM5w;`EE;yXMbbi*b{x^)s z8da27dS%wQqQtFNemggDe{SB^?1HRevFznHihoYgw-cAL}qBZg9+`r}KEjWK<;?~6NXJ(z&KR3~wOLVg)pmuWN-`Vjr@9(*ZKe?ctW}=Xr zePUv>&&f)mRIL9YOV&BIXiWV=Ecg=92WwWj)tXN*_Td zs6`M?w^Ft26*|_mz@t8SPV=Qi#yIQDagZTYxRIQc;B@C2`rQiL=2&4oo&>(>Skr?L z)JD*|KIWF=JMKqAmS%>zOQHEv;qBB%P=)hYA+o|*FJ1+C&9?@ACD`Ox(b}{$X^mLbN}%AV*VKJyq}NMIu++Iu7xC4Ef$V|hKF-p2SWv5dxN#zbX!{ZO z;gI>x8v0EOPM6?2&QEw7<(lU_OdAF%^{qj!^aF}biqe|H+|ajHvvaKw(RWnL3v*Pi z`n)2&PeY#bt$QHv`qn(;^PQh*@~Wjn$PR(H54d#Ryovk~=O>KzSfnbPhYqZ9zK$UJ zl5$^b=|!lsVKsI1C{~SQh2>o=_eGWVD7el^g&~Ti4GJPvfmrVQDeX~kr;`djinZCX z!VvYvQ$zzQ@(hdhW=AP~+sx@GC6-R8ibO(RG52(o5=(1&B2xNZ+22u0teqXD^kp(y zUkK@vCzj@SMs(>LWJO0QvF3D?($~iJj#6UX(@{#_6*`6}5~5i9J4)#bVrEAvvDD~{ z#Ono00xttDO-A3FZaKI^Ub`3$@YL^TjStsV6K#8V>J?)Mb)GgBWBkSK7BqE6y6xhr zw>Mm-tj@Yl%^y$QjA6j872~N_D_pj$#((q-J9i9mr`C&0(?4f*bEhQGf_uNKnKgbj zQ^QFN)E#X-a)(R|b0?CqXMVO*G?M87&da^7+`Ark?pl^Hw#=>t8;`z(J zoV7y{jgIYhIjq_#AK9F)6VK&sdc^qh4yB%@*{w@uCu<#sJk-DZ<%)~8A(9b zs*W*YeH2f}8piJ0t3Rar;rvppjyipz>kuPTF1i*t%5eMTtmXH2r$6Ry>RsKZE(Ytn zj=};rm>Z1XcPTTZn<3vbl98eP58*RC5#U33cC!RNgg^Jx+9ZPy;XRm=@FBeV6Bs^( zNB<$Kto#sO(>3ph^X{fne28#eou?p~aWlWWeJ4~yc-8Kk-*)5ot0(`d@ci$5Z*k*- zD;F%PuAh8ig(tIcxjn+>9%ARnY${)2IMv4<-P%UES1(F;6L^*W;+aaOV7Y~Kl{#O+ zP1hmD>_ek@S**?pW@vHf`I7WO1nv-qrOa*`Td5NXB5H%$+TvFoOzwH#la81#lb!=Z zsnKkfNWI(jT$$*db`rsqn_xbdo>jXone&L`lzteGJy*-s+{da&J4`rJ2thG+p$8M1 z;M>HWE@~{7j^K$?v@&1q2xQDZ>T-sfU!c04)zoD>;FzX)bR7ql9v0GiNzBQZQ!vGt(=n160v(1q3!{Of zk(jeFyZ?0dr>ETb-2tV2pWkuk-*)`y%m1E3^>v>vuIyX$;+oAj zU;Fd>rhIa1N#gg7XBE?ve*Nd3Ys$*$x2dSth6DWv&s%-vk6OQY>t}0kOg#Jhz7;H1%PZ#{-`c)T})b?8W)rME+Px#KpDJK=)Q1X22 z`6JbT`Rn4%zkTwW7ydYY*e}jM{np9-HeO%w$cWpHy!pz$vo;U<^3s`~jot9o-;{9g zQW$n>_o^@rn3WjqgxreRg4u@Ih1rWagkb={E5sx*C72XOr^Hra8Zav{Etpo!7R)xx zF3eucA&jQ&sDCPnDZ!*L8k?-bG+8rJkcCrUaA1RA8zw z4VXVs5L7n)Te4i**;)8W6%ek0hKH)KaJgY0=zPPcnEPiHS1vbn2Mzp>F!y&&pLQsb z{sT~5ZpaO)o(f%6ILdv7ez>NYyvDtCU2gak3$NC25TDnPk=L(En9B{1L4)u~q z-Rr#~OYa}df1uCrU*tp+i=SqcNc4V7zneV~!ER;;ILM!arZ313H-iKB;C{Vr?m_%E z;3oaoVRYrV9t&n0Slv`dKFIyO07Hd?@^QS$2lvzO2BKb(5SN>=0e#)#?|0m$%U`Ma z5A?f92FM5Z!wpG;gYq!hol|X;FUZ8BjUV zz102EJy*OGww_nziNaOf6o2KJ@7lb#0T;dq|a_= zr}XKa5XeZk-XTR8T|}L-k_%;?ghvOE!+t)=O}9*b`e35(qH*zCzOEB;5>+>z`^&$s zyjZ8==p>xeF8r@2m5MxFB^$bU` z`hbP&p!BUTydvLwWPc$wT-$KtMi zgodK0985p+CSkb?m*B4X({pmXwleTg+=b;XoWv-c0T!QU&~pO3ev$YHtK(a8M|ydW z?8E*t@loc#*~{A`EPcX&gcTp*jTWCriI4UVpie)Hk8rESXFuUQ z2);8CAK?~^!nw)f!=B!4H^aLz5+C6eCRc~tPQsr}d>Y`@ASbN&2v=Erve2^#JSP$# z;n^0S(Yc(l1)d&>kMJan;&YD0hbdca6X2Cb;v+oT)@?HPFV2~UTyJtf%s^shOw$JKEf+4KKVVowzc4EBJmM! zz$l#g79ZX=ZCAmY8;Osw2G1ln3AyJ8el!sq<7wgkL)dU~6L6(8XvJ^lN| zjI*{}Fyn$@e1s3-uKRNr@ri?9!#%iP!h5Ng70&a>>G>`|?geuWcK=2a$7__y}*Y_&h*-9tSg;8OBF=qs8ZC!r2Pu9UsO=_)d(%xdpj>#HRwe zweVIWC#-Y}uQEMF39oGp__~N5;bj=k29J#&tYeCNxcq!zBrAK(2>6wF`GBEGUFkQldu;hgEP0mAZE9H^-F>Sf< z$hS?xk`tzP>yaJ!+lHPvm|m|ra3k)*au=SDk)A7%+lD{NdD~og zmmw!CIpIr8ZVGa1;8Tv_lEz^1{@o zE?$qD{6omAe#)gjdK4b@QdnOJ-;4W$_|GE#-ve*JU0C{rH6v&W;olBb`Cw*|Ds=9(o=oyn6|+03PYxB&>7@XJHhtxA`s*rJdmNk@szzW^28c zlg>xsmobXp9+Q6#dFA6i@^Lr3UC0OZzVK7HE8kv5-%c>Iz`}eK-ilFtABHL)HzL0U z`FD`t0+06SCSk=_xD}&#u0?J$eA+>6>)^E@CoDPPn{e0jN&C6&X7EbfgXdLv1x9-6 zk!!-=yM)&Wj~CLhe3{8rAh!;F3b~o^rXVLQIpGxUy02A)R|aNgXLw(Q zi!DCQxDNp*Bk>U)gi$^gBByd!LpVk7@{tS5p|FR$@@*}85@05zhWRMGKik`|%F5&2 z^ew#V_a`iT0m=-(h4(`c4yt@uoy~g*y?fBB(S%j#6;}F$SK_{wc*SvF173l< zu-t_k<)8Ohd#Tr^)qM5xZ|^nXI*iKOY~=KQqK(xy2i{ENg7=m1aLfhB4TdUS>Twdy zGx|=JUmwxtY@;pevGy#ikAx54J}kwI!B2Z_hesy+*N-+fcx{{r*IdRyYQ2^w}79-{b}&yxC_f&_#q72PcFP2xhB&8{HMIOJK?n; zCoDPPHJBO5twc`oyNCF$g0}*>AilygvpBod?&o&;b*92Ye4%;{bw39{bw3LY=RuWU zEG>OxHSt)*LvZ@=#rfFxmA4GxZl})Z6Gk#2){` zT6Uu*FbxdEV>NthB&G=i5uR2D2>Ln*nedOe|8e4qoAIHDP_^rmj%lPYz zzt;FI#;5*qdR7~MmGM^^e}(azjo)Pa2IJQopL)ybsWE<)@#h$Sw(-lL%7<}A$3m44 zgP=^Jp`)S7uM(*8YZz4dHN^PE#!ni5knsl^zsUILa(eQOpD;ee zm1|Lj`+1Zryd_3IW%Lt9-@~Ka|6%keMxQYHFGjy;^fN}!H`>Q&FQfm-LnVE`H2Mvr zUo-kyqqB?_8m0f#`THr~iSqwrqa{X%8SQCQ%YY@Pp;pm%a(wzLqrWh^)ad7o^4;X* z`Cf7~&uFgE8{$6yTBAp3%Spe+!$h|k-D;HfrQ@qzDfbei!;Egr^7&hh+R$fQZ4All zITfukda}`zj6TPGl>08DD!;-izoK7((gh#yZTk7ncl;Wo7aP^`Wyw!4s_%N?5k|E% zT6mCAecuab=6Ad0(_y23G^!=tlHX-?r_slZYPq=F?=yO@(Qg>lQgpemGP=@eaNo4d zUG6$lRrE5WpE0T>^x}^-I@;)|MzuU&?){7w7=6#~vzGqLeZSFtMt^Hmy9&ttDWlqT zK=}JcwPS&BtI@lR{;N@Kcp&#{jB48j;VX@5R|a8y!-?{p=jeE&+VesD;YNoVJ;kV& zYRi3~QGKHc_cq$oXqM4;t$e;^RGUsn{$-LLA^&)=!W*JdDc?`O2YXb+>= zM&GgLi0?Tk|7WAG7=6j8_8yVGpBvStCBimQAg(=4gui1{Tb>BtW>h<(2w!jX3r3ra zHW*!CRJ*E3{t~0pjef?c&Blt4H9XqrSw_z=I@qW-agn}0Mm1$Y_#J*kj~M;4QSBWg z{_{qkHL87v#MjO z_&+qd#pq_Enf3Lp#{XBNUov`w(a#xOXmq~OxkmX$bKzZNG-Y(0(X))6VRW!jeJ3fN zwAmcxo#80efuj&d=NO%Bbf(b?qf?AdG8%+C)^N0aqwtE2pENqisM<4fSNlbj=7Xb| z@fk+H!&7_^ajn<68biPjMQ}0r-Uv>DZ;#+X;F}_NAb42>7lG$TF#Q)BE{WiLaCrnL zz+)mf4n8e{J@9}C=6TwX8^JtR8`^b{o~7qa@T(Dg2>g5m?*~5>!TZ1uMexhudn0%+ z`1T0i1HLJOcY~Kj@N?k#5xfh0Nd)f%mq+jp@R$hR4n8e{w}A&l@K$hc1V0RJS7EXA zKL~y`f~h|?JRiZ-BO9KI;EmviBKRKgy%F3BzCD8P0^bzD>%hw*crAE-1h;@MiQqNh z@(5lH9uvWVsx4AE##yVXD0^KK+N@1;*F6+9I=$#@|=Wz61MavooIM=^Ih; z83fh%r0iwTPn*4%Z_?#v-;e!%v)3o+XEi(H(;Nry`<;z_sM%LwpKA72?5oYb5BpEe zUXsV`XR|kB*Bk}KVH@_(n>|4uY39E871&=l`#S8J0WJPs?DNb%gnamx?0o!d&+i}0 z4)0JQa|z6zL&w9f%&t9hHNQskRhVqTmR);;pK11O*k_qt`>1}&?ApJS`CCq2`<5Qh z{pdq_))HPD_p%R-4UKi}F}ud4K4~%=kvWO`!L49r#{U5g`rGtb6#I~OcjzKF9!wYfUyhh4nr^X$l6IpeA+ zS5;20y^_t)#g51|v+I0Ev5VPxJ`l|Czl3ehSplh?sw-J>H$&%7I^8ImyE;Wyh965bSWD@va2r1@i9{{J_A32V zeu{C%&eR=Z9j?YqCvb9yJ=wKZW=6(w%juk4R=m@ zfLSw{87+5zYJ*MX7cbJD*4h-nWwUL1uZ*@u_LY^D>@7d<>dJX_S69wwdvD9UiBrbU zn9)^6oBM_5%^ZI$nY4TQK2c!&7%psRTFw#k^Xhc0YlO9oGi%uq!oS;rhH%@1^n%n* z68;AMnf}gm2jRN(S5{6epUCbAY^C4ir{3L(>9zCOAfDazJ82BE$Q8V3f`k1W{J^3v z9d=vDj7zW@wsSzWJV+UbQ>T}dcXILYgaQchdwa`TPo<{XuJa{X;UKFB^D z=TDp%Ipw&%c4U_Ub+Nqnaxc^Cs4l&BxrVp1=d-)qr$Pyg?vT;dZVK;zON_33N9wyS zm(nNQdTLj~SyUaV)ATG-(HzCou@+%>?e+h)oiMt})Gn5bcb(XdOT@dB>2~pU@_#qD zpb?OMB^*7Y{Du49W9lrf3}tDsO&&jC%6UhL z0Z|=4^Stvfnto~8Tem@w8Qp9h6C^02u2Z6q;+uIwT&Ij2F>+KgeT_VO>?cb`j~X*- zY%=-rlCyCragHNPO2&*HolK4#J!&k3t16GTKl^zMU#zzFGjG4~E}vH#7j*4!K1bXh zcwW-S5AzM#)m3vM-=KU8it-ufOwt4^E1PPYo6^2A&rFxgBECiBAL6wZGsj-cxVKV7 zm#<^q;_CX!MN*ZiL;iK$r-(-`;K~4U4!zn@{8rbC_W^VSD)7^=V4i z*~X_dI&@spf_am5{?!MF2cjz_uPb_Xdt>eVC7sSqCO?wMF?ZJGX~h|C9+SK(3hpu; zYSHT$=uY{;d_S+4Z?Byhd1_f5)xi!kiiP4;Hh$)K3jp#U1!x%b5QR$qT8M|#(QOim z$2_V8eMR_JW}a$1F^SWl-X>tAV?5@~k1ENG2W80xI1U~1w~u&4{Y$0gM~xboKJJ(n z=Cyi5aF}8`j-Z1sj1E`yz9>^O(=rwvdOn(tnikha)qT;?+MVu;zVk0Z#}|&R!xeZ% zFf%_i4|yN_=PWIghWfjiNH(~lX{o0vovB0P?5Od!7WjF&^33p?J#uedS{5vL)VVZI(!FygEPVv2Qksn;mmaDn1%^-tR^iV z^?irMB+yYkcP=MQb=L7Bg+cuy$J3vcadp;VhsbBfLnra+I`=rAMt(c#SXe#JCFlQ- zj(YZWQW#z7$R@-f9?d+&Bu!VRc<3xYU70#^xgQtt>`wTIbM{uE<0{|UNk_xdx$YSG zOdS`~?{^n|Zau;G82Rm_L+uJ(nL7T0jvI)_S-hJvu1-4awsg|b$o)`1_V=t%>>A;h zeOM74)eRgxR;lNns<4xeo6(^<^(oVF2puJUggWWaQzNI$w46XB>fm2;vhT5BWEg=? zI$S&&s^?|uxDg%2cz@h<_?p~rCmrsl;FPK3UUclEK>WdUtRxQ`H|kPYKiDG|)XBUcocxZ%@`a9&6FD3+Y{^qiU3!yD9%+JY>T z%Kh+P?UxQecE4iqz`^nDuZHI#_pB?cXn8Dk_|2p*|LF11p3P-{C%(Tu!mbc+-9cP* zX6`xx7FzuA(>)<>Xo@D*lz7|d%ZgP6ognBONq^Aa7D?8}93{HK9 zo(iX@EYwrbNlyx2V>{>>1E)Ac&#)(Sp7ae{QilsoS8x(-@}SpTI;4mbqH~j1xtt7K z`k`ll%Pa3&x>I=vzcgXMuHJjE7}5*rX9|^zf$Td6a>~84V!t}IeCXcbu77DlALKST zxzyp=S;$99$IJLA+N-mhUpkOmo;rM;$qmbp+jZck2?L)vl{2zqTMj+esrYqZsIB5& z{v3QtgE?(g_fF97Te^7BMRwF``b1XO|D$%Y^ErXa{pwP$dTG<*;84_{lgRa4mTH^A ziRudOcp_=_qUGK^^_qKh9h)RPI|G%y2bcRH(~T(*#7Mi`(V5Hd;-=7Y-shH9*Oz+q zxz4+~o9Ksb7GHXiW-jKOR}l-HPLjp-%W7w^XDu7s=ApvD#siNOP%4;SBK##)y*G%ZcAfxSff8 zDt4N)-dOA!FZwukjYUcRJnR>ky&C%r?3cs87JDUj%|mR%u6cM(*nfrnE7-5cuDMgU zVb_|sYV2CGCBK`n^Y3;=3Ytr58>?N~)g^Y|B)P6GmHFVhkbLF#am5u3^*JkH!b?p+ z&OiKyNI`6sh}`r7i_MZ?_8W>{fpW#UWFL0;Qej3e(Yi^pIaU1TKFE*P<2(G!$7JcO zxty!9C9daZ8zxqe^%If)v7d`5nA2pLbsxWeQ2kv{;`%}LcR{(yFFmt%OL$<+jo%N! z&ieSndMNaJy7T)uT;K2M&aX<9msKji!+gK;w*?cMrBwUj4s(99gk4q)bAFEl z=e^~;DnDMv=;iO_|F?LJ(BV*RaP;;r%d>c}JtV^Bd??}}JQdK&b z;>>g(RJBOec)u)2O_lJhzlN&DJ5|ra^;L~`sx%eT&w%lY#KS-@YrVXd`(;vUHVV%= zhbPoeZ@E)-f>gWomOE9N73!-hFC|v*I8{HC*U$I~lp1x%#AbatRP`CBDix~wj8paX zP}OIo>i59j-@|tumI5~df1&1RpMjd*JK!r8eOy-0R#s1z8!PgFZQZjvJ-{9Teu>U=9>wogVE!RWc#VK3X zckK?x!agxG6mk)uAu z8sJ#dWYwiMKoS#?3Y!I5lECO z+;Efe%&QjJ0_AQc^a(;*PAI)<*d_vabM*a z#|m}G!#R!>rb(WdwJRMW?uD9;hg`37uAvUGZgQ+phde#tOX;1*Bx=-E=+*bOZ!Mq< z>!ku$D>3|485QSX)%z804dg1{8bn`8w>t0Bq*ToVk}joLPH>u(`s+TXNt32WA|Orf zRi3`}()6J7K3#-4?+DHm>F2B$izr@jrAhB{tRlYk;vi01Qor443bR8i{}q$SVN)t! zaJbYxt9Mpqz=c)*Qb&-j|GFHra4nXXbiy&0#@a5ajH(Ld{~8ms)??*TQMk0LKgKCCb2Te`y` zHPIYe;7@Z2WbNbJKO-h!hM(yj*}R?XpYYa?i~=NtXyeGwDkRPH$LNUB9$8(xsA7 z%9?7I_&pxomZLDYs;&RUb0wOxshd?Sa6L7kNl@4;w4~ZK0rayc7smtOoxWW=wbTgQSOI& zZ#s78bkX+``uFb?r$2Pn7lWoq|4?x2{mvlk19BxQ-92<2kKyf@;3edqN`8X9m-Dd? z#E9ymw!zRa z{`beH-PiW9OP_gf)rqfX)xUP-nd=LRUp#Z)u4(`A#I`S7{M5Gl{@!=^e;0i9nJME- zi-&z`U(K@b_DQWBIiu{h7n6Vf_Nm|g)qj8S${+l0$PX@<_LtE^Z~N&^n&Vy)Q-Voh zDlk=;2FyxK3#Jvb1+xva3$qt<2&06k`b}a=Feyw0rV7)5S&6Zgh~C-Qb-B+q=pz5y z$jgCBRk0koc4LHh3UKu__W-;81o*ur#HHRbS$CWMlMJ5%)#bi4p#jzxo#gfXqwAA~ zgZQ|weE9lQ)AbRktd)i}swC@I<;bOTZiR#R%r_kPZ!{eEUxu*cgYYX12l?YVhHww^ z!}VBzzbQ{#&89EFE#^N+|4)#SXb``kJc=jNRe5}OX2DN~;ij)oxhrh>SDq_fio3#7 zniNmPUEwKDgM5pIgSSrMs4NFE1-Q!;NstRQ#4WuqxnzS&?y?iKr&}hwW2PLm8@LdOX-~VwO7v7KIA`|dL-ZN zW4_|!|4@_cj~F$}dJ@ne%m~Z`%*B{G%oi|P{i#NXnh(Fm_-#nfz5Z?EYkj=p;_2(v zZlOM$#Zm*pq_zRYT7}Vr&ZQ4}vD9>M-Fz%UFqYa5<}qn3H5E+i3S;Rryx6I7_ffh^ z(;oG)Etc95=26{gaJ`vOBB5>(i;M2FT+}rIOC2cYqMi%>UAx89s4$47{(@p?c&Q}$ zcP_R(2=|I)ZGDXdSdHl@ zuFAl=`hc(QPtj0c!uIJg%sq8r=%(Y&aZnH;rQ$%TRx2b=m9Cu;43#TwA zqh|~>2_1^O_OqIeKGmY9AulX>VOrUbJcs`c=o=2Eg}X^u?!s|Q52Igm+`44?U0U!GA7t&%)b*oUrr>KW=ig z#UIi7sY2u)hDSHrCSl15-(zy?klPNw7`eOPtwl~)a>A;~l7zb&xgGGwBF8#L??&W= zB_~Y2I=Keqlt7?T@f@w!C!3tn*~UcyO>7x%br82E%pyo8G+L%b3euLqIK zhZm2;OV~5HBif6KbZtZK9oUB%;t=LqFMI%#MBiTIR*_$K60cX`?LkhMYrQaUUYB3b zq331rv$zNOCHyodiJq;<4 zy>K%oiJp4on(@cyW?Lh?I^=}8)(h8|o)mf-z*P}F!gDZ5^i&|%gg<(v+b)4O1vz1^ z^}^I4E)y<6 z?=M=Y@nW!O(x~(bE1sf7Mir*86o?XEN2OO767qR#JIolM+gptK-Rb`rSo*22-QHN( zUA#r5UvknfIq8?26!9){@m6|wfdTQ&P|0sJycQY*w?Jua$Jam=uhqt1W&D-KUt#=a z<2M<@e{^}xbpH3o+0H^u*XWUhsv*v|CrH7jArhIGTQhhMl<&! zxtlU9{dXFres(xzbRUj#f7$3}qZ^GqN;qaQU&J?i)`k`Ao#-x_T-dY4g+FUx(T zQQoT#^ZYwH&gfZ2?TaCPf?@mOi1#tv%V^xFXY}uup1&DAVDvSke>AGGC&g!%(Va$r zYSh+l#ve8OkkR{%e%I(dMq7>EVN^q1(tnfD8;u5gw`g!i?y6fvc@H{TYqZ)Z^^oJM z4I{aWj0StTWZuV-=6;q@+AYrC2}XmxTWq~(+%x_=D3^XWz6{j>qVNkwpEvp+MuWXv zwi;HOga7y@qZ-Q;zTN0;MuWXut~cClRBZ$PpMX1aib82RlkU@`lU;E_ISus<;43;^Alctrz7|X_|XV{6MSC;9|GSQ!TZ5CNAN!IH4)5x*l<+@ z?*(5L!F#|LMDT8KX#_t99vZ>Bz$ZlTPHhKeqnhH|PC?h+2D;+ZXR;5%t~~~1m!A@|kH*foq2rffSG_8k zD(u=nOZFAmuQxmS<$cHOlqK&8vkxRpy*r#=?5~<#@5@}?MFljr_CkBhPJ>8u!A>)~ z<~)^|UGu?G_~}CkB_x5EV?H zoUoi3k~380rYKn~*pZUm_IeJx~fwp(b1)F0c7NE+6qPunnhLvy1fk23ksvI=^GRE%Cp8gz)}86 zzofg4wGQwTV}oUbZXKXsCYcOe+t~ejz;&uxlm2sE;#adUI$mq2;~vCKlEz8ue1VpH*k`wYpM7*Rj?E%D*n1gA~1}N>>K>SnC0gq9ag2JdVB|usa<= zwiTl3SnC11(}CBOK}3$Vc1=2zhsqD-=}KOh>feoCrelfrIO%Fl;U0u}4S6l5V;4HC zZdWqgWjeZDQ@9tY^DsIGD|#tT!4<@#yETPs+bh657LVP;L-FF(nHi4-%c|AVRvvd; zdomUs^0VJ`IH8Omi-()W-ql*Zap=%H`OvY`GEei8q&_nqQ_!Jzux^I(;0S366CplV zBv0MYZ04FmeWTMCYd?p4QaPU3z6@cWe0`A~Q7V zc$J2PJ6@f2bhDOEdxYt_fjThb>ZGH)wR|5$M|W%aq+>g23F5IOeQ!I(qr0_yw^E63 zClTjaX?PeN6jfcFbacCxkHT>i9(wk5{-Qsfbac0t?|10Z+U#N+5|`J`hD{^boyq4uQNwcP(bU&gFRArxPafyu)^E{*v#B<9)r)HCYbP&Sws@Y~P^;AD z8lh(|<`v9qn8O&VJWW}Ov;qBhfQo1EsOX*7)upnpd-gWQ`iz}UoffWdM$KT*clmnk z(uLL2J6PYGDj_Nx3SXBfkGZ=Pp85iHwHlQ@SnI^PCtEL-UhDplW(d;yI zTnpsBjI*-7jbJQ4_B9cCnl6jK7RdE&=IdB;=aRicwtTIQc58v+zjyfO{Hj;Z%hA1z z-#(2`CBRM{2lN7DRJ?AitX{O#Qt8O=i=G(B$!E; zj9#Zfv@RlFu^tStbrHP_CIWKe1&xp%@jkIHLld$5!~&?gW0ktZst}OZxvuvjb{D)N z1V0Wf4+Pa=d%gqlSV9&bBw`75@%m!_qKsIs|rrcfFbAG{3EcXb%J>TW$cY^r^+Ri)?>sbK#1Sa;eeo9z8r~h%Fq9i{B zUa!fJ;&?QKzagY(#T7z!{yPEe?O+b_E_(|cR1?I(J`SD;l=gU`gXdyBU9hj9m+Ph- z#rnohE$E+7TRAgc#+te zid;`cp9im3jCB!Nr}a;~lKZ9Hyj6*xWex71H#MusmPDw}J2KT@Ui5yCOu!dQuaTHH zU8K}mXNsKTtU(h&XQ;XP0H~XTwbi+b=`LC7FcHnI!0$O$s6(uK9BUfC?rPzfJnvmW}g|%(`{m?on@6@#EGoT4R)#(S#tMnV)Oa*UpAJ3JV<6Ygfw2|4}bSyNn!e3k5 z;w)PYorp`ka3Z*y$Gwzk++!=5P9Dw{?@-u2Q1daEKdP3wjGk3p6lYAXn{6npS%-RH z)GFiy)cfStlEfEM-+#MD!_MK$etg*}V<+|5n{(u2i}kEFV^(9<{eSGe51dt1x&Ob< z%$Z?e1{nSs8tD;791V3qFeK6gjEIFY0t$Lf2bi%T`6mntYBm~qiO|rnOGe%qF4w@w zz|^2X$;?Y$@=NA5D=IQ7@*;2%k@}ka-k-JC+Gm|Vdj{_9_I>?cuh#3V^Q`At&wAFM zz4qE`ujg57zMJp2|4qj<;f>JgSZ zzaA1(^j_zO2Ld(UP(37D`4^G_xnNtke6)}t-&>40$@A@PMN@mJ-F)ZTPm4@GU8ARL zY-Mk|d&h_VD0^Dj+sf8fcDBy8_Tbq)&)~B54w6 zNxH@&Y367P0jA!qR!;=^_Op6LaJ^qoopB!CN?2EV4fbJr&sm0Dsd_f_b;5CN!qwxM zI~hB>A<$dlTMmu8VV!WCv7@^SIlDl}XX9cZ&Av`Ju1)x@cwWJ0eG!AifFwdapdfN7?xO#E${L*ozmg$FcIMflsy;hv6FnZ6JKYac#l};8m|v z;H!pSiv8fJ(6}V)gyY(TR}imyynvjZz*6E}y@XeVJjoQ0yT{n2k;d4iF+DVPX@ZrO zk2u3u7UIS(jXOnT$xb>b0zAepLQoNciWgi4geSS!!WJO;BpZN~BUuj=AMK}kOqSh- z;>X(fS|HU;rh%f5u=HV;uC@}L_B8TT59I?e<^3&C>Fr&U{JO=zX5ml^2U)lVX7TG4 zQgEY%k6HMrh5uxs?n3dYo`NkF-eTb_3vaOSItwRSs8>^^OIxV=3C}IpIhH=aLY9dP zpT-ICtHOc+0~>g4=ey`~ZCY!q2QT$-+I{sA=q`Q=`0qV@68NhgUI)(iawGm~a5K$B zzSiNkfnP|+#+Sv zaiJ4>{W-PMKIiL~{T7Ih>Wxmz^|aLOGy2EsW@XGZw&&PhaAByrJ}&+Bu$rNRL-tUA zJ!fHK!-PiW#A16L zCF2niM~QRxmdNU9zsVKoTp+M040y=ftx_+DfvO_h}~1ihFo zgC6C^ab5hQX^}bU(kU8rtviT}YY7hwpHGhL2hZ-{Nn4Idl!He@ma{SQjq+ZM zjGS)ou1oA0xv~RSnlv(eSEw#Jrmm1qT<5+eNj%P$;}y!mrIPcmt?3`JI`Q7fQ2(gQ zDMz-9s3|0yx@Frc^h1W+lzbUs1piK-9j6nQjJGMgld+4ssBXBZNt}#0op=v!j0$92 z5zd3c)Zu@=j2NBx2W)4!Rtv`2E>A|BPW(h<#OcH(LreIs9PehXZC*LzbmAv-VVMU8 zI-^!D$;*!BS-3nIaXRrIA>$4bbk@sGw#$EItkyaXRq{_MX4LcXlDb zymGX!6PJuBBycjGr#iR=9K5zv2c%drO;wg838QQ&-Ay$4hwqrWDR z*)C5;oKCz8_u8lEA7iYH!<54=CwMa2Ki_rhpJUQflP~rNJll7$cXHb_PS;HzT5D**irYDv_3;D6n%L&NAYbLVG=tG}Z$u<)YgDV>**g=i9y<^fzVFd9QVpy7@qg^H{g;4Z3dK zdyw;PXFjWk(wv5g(IRb#hqKa2Iw_UTA0C++P79>5=i@cArZx``8r_GVM7)xNq=(N# z!#`*C@C6(Layf^W4-b5C;~HmwqPfXCW0k`!`Vt-p{n!CuM5`{vYw| zNj3X~-6anNrOa_BsfIa?^Ha0uG^Z%$^rlo;h*Y!^{ozb7)zHXviIwKmS!d2aD>ZFF zvlTHTq@3sE>#S7GeKclhkvwMZZu+~112;5jo>Iu^@rXFHT5I=#88+R6@^VVs8k0Wc z2>&&Y(LBU=Pl9Kx3@E!7uWt~BD0**PwvEAJD4aLCUZ7mB-Qh(@O#U#TVqJ$sxmM{+ zOtID}6Xj|BpG|zY2dey6;1fVgR83vNQk@Wx=qd|~J0O+*L1;Ij_X{;&MeO-8&^A!+ z`rq)EC|k{c=e7Lp6I$MdyUVEi%e7K3kTA<7c-d;5SM@D18v1gX4H(pD=*zX9twNO; z4So524mBG3@|B>HUSc%#K$9i!=jT@I>B7+eiyX+TZ*cC z6%FWJc5P98ud;7kety~MWgjW3wEF#U@HMYFb9HM3Q+5JUh$ToUa$5D*(Q<&h!k`#m z34{DcPE#3l@dBa5>oO9rb6i6Ri0qvhr?`+b$#H3rt1?B2NHY5h2W-6-X-qROa{NhW zuW^b;Qh~NKy2(gyuTiYMN0-J8zgZFcw^ZWC_nZ^c=*P%O<;^bgwELsY8Sqhi&C4v! zWwkda(Zw`(d##J^{3cZ3vl>EKS*rB^bq%^sSj)P!VcpCG&nVr^yvd-`7TmHZ9K8mg(WOgI{{5xv=MRHE7O%lpJbKHKTaWi~CpVOnFIQzxWQ(ph5WV?09k$*=T$mTwKxaltS1ld3blNK4j_pGq zk>1+rvZdpeu3Pne7XLE-cle|DaxyvS?VJ%nksjopAr&ax4XYZI=F z#7D_C?l{4Wtu}YZJbnc)dgKtOzzf3C^r_op4;6@YQ(9eHcEif38JNE3_}c zCmh$-%HO@j??di&#A|AN5AnirZNhmBZGHuO4Dn0BZzo4Li{rDxx@>{ zwF$og&oaTRNkEln6#P4hUktzQ))DXv$F&I`M*K4BF}7>4F%3S1c;UFVG=F+QlAHnX z?I7JF$TSANKH-;ME?! z0=$ohF9$F3@MYi!kn7|x0pI1}i@|^B;Vs}#dw5?Gs=j(cs9Mi~IGy!d3e)+tZt!P? zNvC)9fp~>mfzxbQ@9Ss5)19*EU0v5#VZGPi3Z0*EdI@*otG)159?yebSYwmpmnD@8 z&-B6~I=Xwd5N*Dz;^^mk{MH^qEGC`fv3Y;Kx2=Qch8 zAAZsYp^;PsSC2*<2w(BqttFPB5W+T_pe)FLhT`)LguJ7V{zz1phkqr$q zn)%-S{BYZOK|TGXGH!!Zcz^8E;84H~;{h@kK0&d_f57q`kDmTIc$J8F<*J2q%pTB>dEY#sX&c&6izx&}}poG-`9;5Aa3exsYp z`d;Ba_?7&6oq}j~@%;7}hKwXB)>;`Y$bclL%VnIE5vv~`K?1eu z`kcBz@?^BHAFs8UKAA5gECl~f&laa2myCsYCu51dwj_-%jgt|lAKwD!J0!@p<0vR2 zMnC>7y(;6*U@nv6^2!mXA3qTpar$w|_!jNq%CRzYZS%?zryswG8{^wl;#GBcTq`n8 z34?hu;`HOv(_c!O`*@Maad|T0^yAZzv5mUCd>k_3^yB^Mq?(sLXnW<{-gZKs)j!(T zj}J%26l6SRWh`$;Mx1{9K`W!kJeYWAZbyd3pZNv!<8L6NigH|MWq9rCwP{!v4M6i@ z$ko$p4qir^-eqO%q#U++JsIH{3vs&bzC5E-$X>#8R*BNQL?cozlA(aweJpXX2it(- zVAA+khnLeBBrhkJJC2!%4*m{4rM=xZncdsP-&|OG5}Ms3W`Fn#hBg>IccLi;^$m2u zn>>B->jx?i9_wDRGd1SyF`)+dXU}HBKe5{2$xSn+H(jw{ezQI+vXJ3)IL?+ydQd$l z-;bZcIU!SLPj9>;TZfE#c%nTkYj}Vvc)tCNCA0Mf)3p;QoO$LXC)I6J=VAVsmE7#K zSx;X6v@5vbl0k#hHN%GtA7);tbshc`4vvr_mvA?M3 zQBtzcdcS~#sN!~?bzcaHiuYVhv38{-Dt;t<2!F}y2-ll8gA12>uxQ=IbFa|xLVHRP zxJJ=Ir@j0o%D%{d=eI=YvWLGf<3nBMBZSJI;O`hdQPHVL>C2uIbvu8RLMtjXh$Xt} zzpHWz%3kBI{Ez%;X)Q6#$S?mBxb{&eDl);I-6lfOcIxiRxHE{=uU7WZCYxkQPpv8T zI*-4Spxb;vs<=~SZ^=~&yI)U09L1eMi@QrFIaH`LtHnXtNW#aVhP=Gji7Fzm<|gV$ z4e1n%U3|r2xxb&dq7S=y&*D+mwZwcMty_+=lDF~VZkP8OUjE_oVO<7uPiGX5;dbDj z;dbC&ZaZ-AjM_5zCUq||p9A>&x7I%P*V8x_ek&`mLHNpvIfGQL&QLpoulV$!HolK` z?bf0St0>e{f)7Fo=sCzH-cf*$hSVzo;d0s}LXjIl2%VuA$Am#KhU;xt5sDm75*Q~4 z^f$q41e6Xc|HkQg66SYxCO<9w7^hkB2)wshc_e6&iPRKPV}`FQ)IFHj7G`8{O=*&j z)VJYN&kpEG?H8(PmB^q~tcxbXama~8~--sk{>IZ@}kEVJLKkADa62mirI zsP-QZXS0*ne=rq%vg9fM{8mE4XV5Gq-Q`!*h5KPcHK9@EMPFG~j5!_Bm_p6Dd=~Ae z_OTVbI6owVOsfRd~5a@jl*>T%{5JvcdoG6@5d+$z7Kt zR}Y{oHd z)%d6Ide;5||2AIFK$T6m6)y~O=HU#~6IhGnI6ch8rJK=e;>@!cbU)s5nddjCp4yhA zC$x&HX$B-ck!_4?D9N!IhpiK*V^c4<22U%^(s)t^)Ky?=Z1zVUB)kcom?kfbD(i&f z+Jsl*#mCyn=6!@;fUiHWFMPsrZNfE@(VDZ6y?G(wo8VIqgtksNu1z@cn)j;V1&xjb zn!yEA(7Dn^2gJ|QuAo#o& zp5cYAur%jCSgoWilQ08;;Z2L%j4GjhtD~E)y@NCwBg? z8{PRzp$ldY^vCz4%U+nTx^eW#Nta$We!{gkhHK|;vE5~HV|XmDTjX{N?OwV#PTJJ1 zv)80DuA_DK!8IQm67rjUahYR=+gV@NI$n?puYWr1OAxYM%~{y96DP>HXS~KKx#L-1 zAI>90>5Je$%uTXM2~S{sUFqfC(+%r6#;z8JcC^0UjtnP)y0pK(9w#Fl0>Y_nN9*fx zGAM*s7c*;`6}PS}8TWJ3=C+60*SU_?wYM|M)xoT@dX?_U3yocY-moikWJC+GxqFoQ z!mRiAT~@}V4~0{8mtN4VC(9(P&|bP4J-FaI%wVl@EWRkT93tqIqy4>fBaktj1ep{< zLV00G_CRb;N?;6 z!-NH{t@=knUBP5-(itRszg?%ZS(|#fuq#L0p1y6!sHdMTMuzgkjWu7O~Ey4lx&wT zBSzn_&(3r=I3;ODPM(Z7eZz^!h|@Pn#xQbp<*5Bg)Iajd5vOmcVzT!j{dDhXVI{^P zV`do4lM$zHc=}|XZM5m_XJi_}hVo>@=^K8}P` zFroLKCnHYZ@DMU&&vUJnas4RsP9;&EjQ02AjT;b-L6tRLA_OqZM$X-HaXO1SWbB5! zx0SJFbg0jT6qQ2(&A+Q_!}EQoT*jVi<~$lU>hN;a)@xX1I5lyAg02cVbjdu|@)Vkg zk#o#0HJw2#jYay<`jPB?GpE-cduKm*YlLsz+rs{|JE33CTl&y*6OdJ;y>^MFhsRWs!wUzr_wO3BzplU0iD(bpchHo)y*YhorP=GJ z9f8u6Y&bCL(8E`$H0eVFMlaH7xy4XNE1vjxmH7MAW|MftWtjVD~959~ACWEHUT$)?a(YwQ9=1gRJ&hn9^Ip-{&W28t%c33~pQ-8HZBwsL0a(dJE^F~4#6O?KnvjObuYEmwx`v(XmN;jCpgPntT9H(e8S zZ^pyDyp$}W&#@ndce_0!Nx|#|v!*r98-J5CMw>6u4jDeR`SRHfjSD-LdmFi#6H?f6 zs*MUPo+{DYMJmR1b7q6hm~TJ2p81xGDtU9Gwws3fMk^sx_YRJw)(n$oo84>m4SIzZ8EJehPj%Uf(pl55FG&ZT$22-{IfJcS`cC!q3Am!mq%88Q+FK%(FL*cdkBM zcX6nJvL74h@rXD?6GNO&zaHA89C_yZCpmoE;JY)2@7)6Os(22p$>FPqCgOnPum7{4&ohjY|;kRDtU zAw&ezLuGk-m^+C4hC5jB(tY!hPeBXP{r#;${T)|2b6h!xl9BFG-GxX_Z`)79 z*zi9$zn{Zb$SFVZy8M1D1n1|Ww2O};kN-T*JpQ9V9!e|wz+9JGkN1u*0u8a6{+v-gc>Y6J3^T=+Z(Y{PtT|c#-oS>_gw~_zn$m}ca}a4gP)M=IuK9jCf1x`7iw;e?h13@OKj)BaTE+ zax`rzlMN>RkVoy zfdO2f0YdxJF%qetbNMa;?fS2Z?e{@qDa_SS5@&^lQQDV;PyRLkVZF{Wg^}r4SeUa+ zVQvHu3v-qVvqY#V%vmbTS3tXMP%Z{7`czP^Q*tFb%=~Pd`2$cA7ll`BC*fCwPu5uz zVdfXrP{_pNP{YhG3R?m^ykZwAHzf*+WYv-w6N(Z=$37$`e=QOMG$?rGdoxd-^cYT(QaTqkHyje*(hM4u)bm&NbyBXA%*r16 z{5J?k!Vp@b z^G;7r^n$TBj2nnkkqzV1APJKyndtOPgp?&Z{V-yyNc8*($OW(^?lNCCDH%q%SK@=p zy7&UGtdGH`E?7Ji=|$efFHeqzIZ?8S$g*enyGCeviLPz3(M0_uE9#W@sf^}2lmtD# z2uG>}TSM1BdMdnT?3v@+(4C_Qp4 z8GGhhGWN?3=GlQN$@d0%Mf*w@)Po}Bajlwb&VWKr;S4a0vwUgfW6?3nf1 z8FQdY=4}xJM=pT>W*3?~=2`#cT0-jdl$xs{?i~s^fHON|ARMo4jf7wUC zAMwAs@)`5hmC|uxZauBVWjL31E6;R1_bPIg3G=5}=5V}c^B7G$GoL`okS4f<(F`(L z*fz7(w2>8w&u~QvHDA2WaMdjbtO$cI0bUM+{2M36*?7!9#rS9#6yu&S$iH!7ydICC zr+}G^nxn0w*tsTlqQH5&kuqj{_e0umVz1`kIH948h$Qr*CSjdrG922%MCtAVEDeKC z0GG0E1%(-Am-lL2{irFEDjlNGKXcbYYfE>H?fg8 z&ELKhCU9ILEzRdzW=InRzGH%u1fDU$sBJZm(`In;7cf)0O#X`9Yht7P#W5J~Ra&Hh zhLpvnNetIoz|8hCZ8?w@LMl%BUp++&EN2G5ACryW^Co4w$fJX6s!{KsY6 z%y)cJ<`kh(OYPtTU;TunxC&!IPnx(-whZ0?RS{6I+b5`Q`DTb+CuR; z3%7+?a(Z+=Q-MyC$CT66S>m?eq>7e&Lv2LX7p9^(PO~)HqL^6ks)aV}QAf|ZB>DFt z(K)RYb5CWoFJY4W``lB%{BL|JD(|2xm7_qz+YgIoe{Ji=j79#9H;!2_dwN|npQ_^H z%k!ttn=u#F8{aVHWYb$48-kg0W`80TeYZ-vPMmSOc0W(kSG@crj+8r4QLvngjdCph zh%o8B8iU(ew3oH27Vm?p?q=Z&T;s#hPB)|d*p}O6kUzvtkNQh6)!ZjkEBXjQFx8X_ z-I!B<6}~MqH(B&S*Q^^oi0ipQ)C)VzBXFkuyxW*X)(VZWIG##)#%~*DR5r#{;*;Tm zjNrwq7Z`;VH{PyKdp-NyV_$#lOK06O`0kDW^@$IjvHrt7r>yvN zw`=dX@ZbLJ-3uOF{KG5G`G=p4|JCK+zUu!huJ~xrvA2C`{}(TL=9Y*5Q1#qf$L3u1 zpHufD^C(^mfHEYk#t*}f#ZSRE;TPhU;5Xp6;WZK3jX#LjGqn<*!q?zmL$+PadLy{zZ@A{9*E}z?f+!hd}l?XMLdX?xuyzGN3Z@H(a zbMb|*kGgVouNSJv|EBTUKHcwG(fuEGH^Za1fHn9h@z3L5!SBIqDNFsa3a{&-HdT4t zwbZhfs^i*T3qHc#wbjyUm0j0L?d-0FtGjsR3f0~5=$<(V z-&>40$@90)s69j{YtuHWpV~?KC3nAdC0vPj$Kt8IbTppYOvmEs^KWWTecr9dSMIsf z|LmLESM9oW^{}(m?%IB%Ps3?jj*igNHBcXYAO0NtNAPv{>G)gmpTldjhx&&OV3N}9 z0KSL<>)UG8_z&Z+#5dvZz~7H=!<)rF%B_VtwE@nkHh_!qmgKI2roeU!kF+D?VP>3` z2ZF8%xYuh_uXF(Gy9ta9b8Fwu+=#w3YGx9;@r z@4CCfWEJ6hy;nDN@#6^Z@$ec-pkc|yYuNVF>$Oym85h4h2iHsFg7eZl)-0k z_=LY#6l_j$kM=DKHtL-5KNkh-giDU_Bji5{Idt94>bCumqw~l1z$aXM!gmv|{C80v zy=d|d8kI-*b2k1x;?y364`D}o%0=bjO=SgVm;S;WWgg=TO4d27??V#b$ zf$tG$yh*PUE(x_Y&{wC43%!6mq!TH^RUrGEB;vXcxN5Gd8FI@QvUq<|H@)<)uUjo0E zc;Si{eh=~E25{Z0IF}OqF5-nNUbu#7m18!1M@e@Na^^w%Bz(ffC;TSMhpqVL!_b$* zR}XCxe8R;ioZ;WJa|8960zQs-*UrMn;FTW>UYie+Zas3+&@O~exa0^w#madEIj4f3 z?$8BC<5MPB^YjxTcQcV<_FM z2LSe38+Su{6+Yp(w%z=_O#B|w6>&X&1^yE8!f|cFU&Kq!Gw`*N?iJ*0hxQ%#gyY(T zZy;XRX#jGb27iorcin_PO1!Sq!)FE?9|vDeyt{6~AHfeNAErB|f2<^*mC%;M=lX~6 zC3uzRPWX0_9}k0#_dr_+pKx58@OgOgHNdAmG|wULlhEqn6OL;W&a&v{*GM-LIZfc# z5HB3pCVVVja?#>xARlgb%@suNuCc&|Bdf2(1b};kY*8DZKdl!nXtZ zdieT5V@ec_JHqws5MLR5+u_>;pT_bc_=Mxygpb2h9rJBX!CH%_Eu@?#ewc+Sr}%0t zRGEZRZUd_fop)`Yqf9{P<$(a;#&bs1D6BE zw+twGOMv2A3>04rFb%vDD87XjHUq^s7bw1&z%;N4D82@u;`0>WBOwi5TQxUYZAcTHePcW)1NJ!`He}Zxr^z~mi}&0NauNK=&u2l&laHa*W5yo z`G=ve04o3GK*?b~Ve)SQD*roe{6ZT)1t@tu|Baj>7V^9|^xiVU!l2HrwQa*Z(; zaHz!xS-9W!qc<%4u7$GYR=T?^yxqbJEIi*r&4IPo-R!e$E_ zEwt~g$q5#h!H@Vau~5cB!gU`D>OK}c-9i}`3GZg1ebG!7TUug;9(1YXW?%w zeA&X6EPU2N*;pyvdJETDs8@Q?UHji}@ue1i#zNV5iEpljGcEkMg)$FQ{6{SuW8sG^ zl;xS?t1L`e*uz3uwJH8R{sd+8CitHg$|z2_#sR@sEc}6m-?NbUyouL5o?r5xEtI*R z@MRV*v2c-v3oK;5ZTOgH8>l4{en}Y<3TiwN)OaGOr4_-8EIh};0TyZrhF`Lmg_<`A z*StZ{^~bkuzuRx&8y4#16!HDkLXAVhcUbrX3%_UK6Ba&h;nytu7Yki~Uup5rS@>BC zZ?#bKPUSP*!W%8Dvv8b+vO5=_EK~*0v2cKe_S}f1RwERz0Y(sD;2x&Xjs1lMZ9`MM zH-lg8;k&>u_3+oghk7{U^XfA_oc3AW$HQr-)g>Oj9sKRnm0g(M^WeYp@NM8*J$wuJ zH#~e3_*XsrN$~qTd;|EWJbXR)EDv7`{&5dq1Ac{vw}OAf!?|9o&-HMw+v*Q^_+0R7 z&ro%OwguF4CivwZ-UNP;hc|$q?cw#{Cwuty;GI2u3iuyw`$;|*ZS{q^xa9W`eD4x} zhKC;ouk`T4;D0$Y!+#L`w;sL^e5Z%+1>fr7>K~7J_-^oj^6*{Yi#_}`@K1WU`p0As zSO2K>aP^Nt9R-Y_f2Qg<~xoW?{93eJ#}e+EUD1B2h+&*YOm3KHawm1mn_dVbQRyVVeS3W>Zj6b?@K566xRN)vus%VzOJ-k z?Oj=9!`l0`%7(WQ{(%i^@5vz>*1oUzk%wezzt?CR*4~l%Hmp5g+G`;m?e+Sh4QqeL z|FvPAlX5ANth`yWfV>YZk7AwVH!Kq%zIn#!> z5tbp9=vs5rvs-Cds|hs!QCR!f)>^vuuI;h;9wuzw5#YI#u;wk|-$D2u8(u@W0XZZ$ zjwXx3S3z|2`@HaPz3_G~e6ts}&uSynKF3WMmPqDeFP!_022MdTA5<`BAldWm?8gu? zpA9IaO+U}q>YHygc>MEqifp#E&v_X;f$)>%_K>BC3+6V?8=RMAj-LEHqhrtcOhlZX zzu*TO3e_QBUdG-9y}q$2I%KczeIVxFTZLO>o~Y_x?$nV zlE-B1#|nRuBi`|)=JtLZm;S0XZP`M5hYE&J;v znR_~u2+s3#I7LA*9`GW0)#SzSQqE1qZkMa$hrY!sR1Jjl0zJwD!^zD0@tK3Y5N(DPDeANa*@} z%q?Sjzt`2WOW#f|*`?1Nt!+{A3m(JhmB1@=$IMy9&1DbH7lvC$v4YZKMKIfHZd}+reGX>b7*@*GJNx@MN-tNdvU-ks zv^cb*a~0c>;Y5&c`{ydg$#BK0L{dlRD#pnmX^Sg}f7V=~v-cz;h0kpdwXbtdhRixe z%RMJ<7_4_vB7 zWllLnG6ML+ym)H!REOnXmwh&>Z@!Eukvj)0?)*N<_y&b{GDc7r+ZIuiI2m#0_eqcO zCUSm|dqE>nrY?=s7JTBysWIpG-Kzlx_e5xa6e8h&UOD2iA0ap(6*##^+9E62FZ zwaqI>-1&Wrc!$@T)4!tRlADAKd%xt#h&#XU31oblw7;@4jG*u@Pe$DNeS^sKZR+xI zlxR6FPe$DNeFN;hHX-Vjkt9z>`{(yb#uSn{8H;HT-9NZI8G4siMDF>0cOgS-bncr& zYYO&LuN(!w7xW!uR3YQ{$5EHK^ZR~Np<0qHHI8#p>ZV%{Lre~4wnnCiu03X~M9gVcXW7by*!UmQVj0S5g86vlY5NE6? z0cWfj1{EwZS;s^bUkxE)zNuqkim_t@*UA0ne3j%a2LBrW17HtI{-~s-H}l`=7XA(k zEid~sKqn=1{v83Su{* zxfseO5c4^nqM&PHs92J)eBZJJrIJ}2Siwv5o)4J}2b%^p}Qv`aAi%_seoN(s$0?NZ-Ys08s9q z0D$q$<-Njh26fHfX|Gl9pnK*ZfXd8H`ySy=`<`y6eQ4AkZn6FQ&icRV&ieKSv6#K~ zgSOGr-rR+-XnsXU6uZ}I=}5_G{iM)2i0kJhv3xNnYEJOZ?d;C|9R>*6sh0I>!~hB z2hl?+3J2HCe7NN3X>;_X9*Z{*Q(%?h2m+_=a=4Ql$|)@OEAyY2H<0vttckBsT8Yms zlXj6f`FgpL*NjC@ccs4(N;L7yDG${#i7&xxRu#q^JGNu{&`0#0BW--rcZI%t<2I z^oX{#H?sja^o%_Tk26yYpr#d;w2cIkrDv@r=|L`%?rkex(+-g|l-ON7W^MrLeVNEL zzXlk~MaZ;z*lLM8^{V2og5vt()#A`*G1uFyx%0p-8M|uXIAd3>IV~-n90#O7CDnr{ zl(C0}&Dc-#s%-266|Z&>e+tN)*x13sXY62!H+Hb(Y52vba)}R`dV;ZcMV=`xGzX(^ z44n&~@_#*SoD;Se8iKvVY-L9M^bS=6euIZsgFj|*y&o~JU46D~551?X1V72cSAe^3 z_b7fj_`z`PpiTHP@LziP67Uy2d@=a9J-h{cjfdX}{(y%s1i#C}buHB%x*N3Z(b;3n zR2ZVJ*J>NCC%nssn+ZROm#$o+f$Xdl);#`oJZ#2wBH+T8d-Mh`e4iI?^};?`R zp6(wvoxSW{XuaK>&zuVTWexqkkXy-s`6O|Iy07Fb_N_zt9 z?Mg5ATzH>{2>*g?XS1T$#Bh9iKLF!+v8-Aw8a&qqjl~|+M^m~ z**vLDYflbm4KBT)l@a@m89mvP@a?lQRv^PRv#Md7l@YsEK7s_Fg42%gHdR-^W2lKhU{6LsXYlltcZC8BK0E_-f@mlQ4I!TsF+Q2Ft7r!<6%9 z%VFlpg>)FZk#QPnR)o*8D7DJuoRbl!!%zj*!~CQz$1Bvu&Rv`ccU@w22eK#c4|hGC z+joV^5%=w%oiOX#E=GpZ%{(Rc+Q#Y*WIw1jU6NA{NZxg6Uw5#}7J7NU48(-atwF}= z4kSZc=bemZ>cYH9&PrFG3csBmr#pBbok`E_f7b$Kw#%0hqdPd&X8Q7RtaHcd4o*Zy zobEs}4pSFbjy0KUn^%`O-9b+-?3=X13-(H`M}{5G^JK*74vryXIx@ax*QmW_&65$Q zJDA4U^I5o0lEN+9<;jTC9sI%et*`XX769hS@Yd{!$X)lBjP1~!j8*Tq6YT;r;&cb! zWM*EAjOl&&!@Y|PTY$plD4;ud3mH|U{hF0w1ciTjGU9Xx@1u`jqP}ir=!L^JuO}nC zU*gvNr_jgK1#7Zottj2om*GgG^DO(OwopeeD`JfQwj1&lKOg+I(;bJW1)BxneV7p%zu_tt~l2iB_D>JZNxw$bq zJ;_ZVhfkf|;EsD5UOLd{8wpF6noaWtX+mBE5w0@n zeQ*PQhev~K;*^J+%22HYxJec&Y`=n$9yXk>VB8vh86%_NNt;tcbzPj(Ual~C(onPY zJpTwAdY*3zR3uglDB&~(CTj{^ycI&C;;Z^sO!0FDuh+k(9m#()xKa)fYPR-OD0)0- zQ1TXkiPF3H@ARGsWe50Mj1M(BpCi=ytNe8_V!Ct{=$%M3K-z#$On#pKun@gXA!Z3T zh3IVx@pxq20A-2J{{nIj!Nh4jMgWo}Js*S8>nZ-a1?6c-I;J}#doK}M zW=I;XQ-ux#GN{oyRU8#c&fziL6~!bssL?uAbOV+2@R;t3!JwKY+he**rG+{Ut<&Yb z{%3k8r%5XFHA$U)ZB&<-4E0gH zB7M|B+M*~tKKAeWsK2T{s+~bOMjh2&iVihS*a$Z=43ZnRpJd6)@vo=G0roE;O-GzT((vNLLHIVuE%28<&Zlq}Z47p2keEdkiTO zcOxkGKTa<}8j^iQj)t;mwNK+!2TxNC9slnXW$ks46V#KnBPu$wwBXd`xDJ|aPkQzV zr|og(X{SD(tDnoCG?|MVO`#@UIrOoy+;RR>`?jH(g<}=Z$Xi znb$PYNt=2_kk_p!M~B6SFAfSj1y_%A))V$$*^K7HR{R4{y-s6hw`2a=8ja@rthYQdn)K*3_$+a5*Ui zRVH_GqLhSE5K4I{#i105E8zbc{yX>|;dkRTe=MaAC*w6S(UrD^`xtRD#;A4q*^%h=h(=Q=j z*CFkt7d`^7atwxV8*=W2??Pzj!6zKoCcGN2diR5G3-p!nrJ(hNPdKhE#a{*Ss%MJ$ z-r(FUQN4v%g*?d=kYy61&+Q6Cj?x-^t{`~{cjw3$eXjVD(3#W{Wn>Fg9!aGy11b+e zr56;VAl^VF5DqY~6{vhxTDSs;d~;3|`6Zjd#XlFwva~rjNA!A2zuwa8fK=P)wG}_s z#@AYU8YsHjTk?ik`VdR6v2>MN`2$S74gn>1zl9n=ggVknuLcqX7}&t@_s^zR1Z`T6tOx&shhGo=X%C+QKF7l+f#2xiT+h|x zJ-izH7Z%rA<#O=RbYNVY)(n?{*Le66@DF(SV(=~=-U9v(>0El+bM+n%r(IY7*u&|E ztDo`kx!_;-aMzzGr)iJA7S_^8PKVDJVZyYPIagBj4TN78ojPePtQTHk&6>yBu-0ns zwqdQ;+()#Ig4J5g847b_yhfNdHDQfE>ZjtVBK)6(0mhw8z=eyva34SH@r&2-XYY4+ zo6XIf&u&1s+I(;KdOJGZX!;mx+K(?$G`Y-E&$ly|EnsBO!J9_5^ynSMYS50)&>*u5 zu8Je)$A@-<;U^Q~TcxAve~0P+M-zN&X^^e?Z?9ovO%skIQQ^&hCzdd4BVc<;t$o5^ zyV1{>9dxuW@Ix0}IK;D0V2}HZn`TU(Dsz{*IrI5$%6W6lJypmqVHXdXAQj#_%?cNA zNyek2#0hpHUj8)8cRY3pd*D@ihJ@fPyku14)gEfo^$g++ty#{>h_y?o zV6aS*B1uAXU65hNPgTP>DELA!Fkt3>PhhIeY1M@o(tbNZV=!3ZR58`p?#5h#;bqai43LN65k%Nwhc>2 zsC%O&ryP)?Dq&O5?!L(7w$KIaBM=ihXO|FX+aMWIa5x#y+df8WD_w2czHP$~Xbjml zYz^m9E^EPj88NmEIvYst`EY(0BH@3Yj5ynd6Oj>T+aMYHsEaGd;mozoD@UAd!zLaA z&r|jd_Da5s4Bf}LJQ;De4R_KxW|5$|he_xE<;jS%ZTKTH#=-rYi_O*HV|G4ln2C8%nETRrraz4Nnyr+lC{F-qyAuv}~A`V_C58fNTotBFhF@5WJ3s zz=VjesjeDZh7DP^3^mpUp>Lio!}FwFoMp@KZX(;3;t6BRu>2|6MC`J53coLs^~A#3 z+iMd|iEmam9ebx0IWL-&=|j&H8|#YV&P{jJPMdOa)7HJqu~@kO*`qm)GB9f8OoW~- zdqCT>S7>OwY3hQR&7&JntuAq0fet5m>4a95D zLDCkF_Z(kjIBz8m7Ss3Kt*K{hA*WYS^^tMJ>-i@(<)iODTupcy;YPx3ge6Pynm07# z=RoHdl|^OJb4yP7?GZCh`)!>|M>|UM4G{WYInl36f2C2oJ2%MYM~+5vwmrgKuwjqz zs6ct*ivmhGL4nX7p#?&s{BHd#rdWF|6Xg%+U&|gz)hki1lmirB@-zMtrFsYGWQtMt z9|RZRLj#1{33a}ozk~Qhd6%~YPytT@wkkaNDgKL1u02hzTAT@U?P+q=ARcsKDKtp* zO(a@Dluu&voBW6A`kHht!cA%Wnsiz;N@{^R(f54XWFu%`%Gvn?5M^GKC@;ShUi!_s0HIt~2g%~{%C6^%Xm-cyYY^QMpX6T~UZaSLE1_JAPwKPL*c@ndD_P24qLhWq zpz|{RSg9nt?v?)u#1cUk6Mquvv>xS@4NC-dg#_e_E*B|N0!^|DRhTWXuk_03{X>D^9G`Er(kOZ z8idUXC4bttt1->By!psYcEg*`pZ&ixF(}wqPG|>izJzE+(T^H_T!sXGim>bEd?B>} zL*A4n&un0}KZVI@{=yeAVG~gm=2-D#CJR z-UD>F%<{Mw%m<1TZ)O?5SB2p8u`R_r+{|9UHMfv+8hr7{YmAT!@lq2W`_B9k0|{y3 zph=|iR(dDXmjO9XhU)KlG&;#^k|`&7{?=mGR)UIGIn-`i8_>&*iD`4(P7ktTZk@DiN6wOG?A<)wk87Z9iFilkA=S`BFOBa&u6_6nF;AtcRLG#cZ~ z%nYd6m?fF15+qGyEJ<@D$FjL)r8O{)Wl9)n$6jSrpeVbh3p74 zHFlR(!}vH4ZzWud-;M9ia>Gva&dQR(eB-OoUPSLK9M>kCX56f49Q2JZfj>vQa9o>k zJp?3Y1AMK}e-Gc&(AL8z9M>kC?!9>h_%7m~1YbkEa9o>k-2#=!Sq9&7=V0lt`cyjpIZa9o@4Tk$H-C*jj9wlDhhxzHNm6OL;WUQfL0QA2za`1QoQ zdI=w8<0lY52K-_#Uifgl@~MFj8v)sTZyW+`Abi4cZNdlOE8#l@zQxd|!FMXOli(AM zYZG2Uyy|g;di4Y^CEnFbcom){gk%cHa#_3jfAJyD@Rfz>V)g&MiHGO7_5QHycCO$$ znewR3m0t^xJd?Du@=ewQC6{&;f3glp^^Bfh@nda#t)-`dqK~ljVV15o6rFaC%Bg%n zjh_FvK*{~JgM6b!3vaP-mW4N1 zc%6k4EgWxQ+CtS&a&pUcj-{)=DE@f#_HSxoi2kFswtDp1zw~h0ef5t#dt0}z=amB^)T+&)nE1S72r!fd^z}S9=;5`!NZq;U*+Mn z@9K*^yaoJ&9)2fyUk_ghUgF`dzff+|etj)`KaJ`1_#d@l>TWE`z5!lZ}|m@-Uy6( z-A`hty#;4^_Vn%o?Ac2A0t|Wc!k81U^OL%L{h4-j$4STY7S^;M7k`$5y+Dfpj$VDx zpqioK#(#6(?)Yi*8|U5HIB!DZ^f~j`gJreqeEXrm`MN3Ts#9TK-c&}ofa}{EyE^y; zHT9EES-#`Zt4pt?^nhRz`vUJ!+7r;LE4|!~a2yN~{y|$D(ve=h9T`ppdXDz>>Txn$ zvsEIgBfWZ@43f6Eg4jDVc7MBMBw<#2*rstwBk1W~wY{BkW$Rv7kWk~{&YU*&PRG*&lXN=3NMf>FmIBThHp4;dSfF~!!UqJQ+t5*5qq9|d*uJCJb&++|Gid>2=j zLb~~WbOc=&?H^XUEtDhXy2R?{Q^?SDxjv^Hki6>>buY+9Uzv5LL^U$x8uDd?5&S#7 zdYo=vGS*WGC*yhQV*9D8W}K4|ckaL|44k}21eHB(f(*!)5u=-b(GE7Hdilt9c{1X3 z^Cu!BPB$+ZCy}EoNAEMDYnxY&INkhi8t`Lq_fv<*^+SfE<7>z41rb7vwmv9PR7oC1V&jh?BAY%xHNgPez<>{)hCf zaTK5gUA3IPooy56$rx-$<=I1rltf4^EW33J^rzws+!?Rg`QTRk% z=1hQvDfHe!`q0clZZE&~>8Ch-ct85@Ej5Y_RxGRyIFq1mP_`a@m#0UsF`Vf`_g@50 z=Y_R@GJ5o%@lZbY&UPgAi_#u@XB&9(bSJC6ZuwS~=WcUG!M@Z_kCrW0uIWRgMgS`o z*1n6ZT}b-T(O~(pcUF`7r6~2WcOC|RIIOT%)(lDTT^4MBIc$8i7`Q{$H8OW zhwMxry3XXU^owe{H7Vsak&Fq*P?~d~j*C*AOseX1!)#9xFnLCE z)0N!c!$UpIaG1@x5AE?R;JxAU**DD@9+)ZP)Onv+Fbn&N;j^YTPj70RKhoh+07>`b z_yaSW31-ay*o@f?<8K{_gna`+~oRJx4!p#27WMp1ilV`Eq)i?cWcy; zIZpE@%}bpdJNgRK0`sI3%YD0oNpl)K!t7%#&>XIiW14K1&sBEKuar)8_z7XnwN#JY zgdZS0jr(7KYl0bPVo!$X%gQpYo5`t!)1u)P~5llI1Nhi0&LWLtskPFi_ z!-u4YVIvaUI=Ci6IJY909@&jdALOy63)zhLZMBxds63QJ#blCpiGX#i7RhF0jlf9> z!=Q(iJ*)gEgv3eqi^dGse=+!Fh)ZZGHYobOcuz|tlxDfYljrkaY|@=((hU-B(w%0~ zX_+tCTM|x_Rn0V^{S7Lk&jp}C(L4MlsuBrF+^z8BAMzhctuj)V2scuzjMPWLL#b7g zx>=}^S|zDFKud-xld4DgFM6OXC>^4z48%|hu$%bD6_`AT|1h6{CZAsu6Xr9}%P)Z812c7EqFHMw91H4-C+Per#6*`L@n7~6{?q{zCzZ>D#8|qlCh!{GS-Sj(B4p|ETM=dH z(&b%3-4a@sqGd zJ{k%gjFGLMkL*(Nl3J^jiDtbaWV>==?TqQ#EHic9qFfu5KG>+(<1xmUb{SWOWy*kF zr8N+XYI~JJYAt#u(Wi8=2qSuLEvoMQ<>DS?Q;HYeRQ6zG!=mQ~MkfMhRL&f10mVLf zu2N7=98LH{FiBvh3A!1#iETEdtORDzcJFwhjF6=wSc-XsPT7Z7`z8?Zx~z#xIYZ~ z@DoNivgd_S6LxO? z+K?9-K6Pog|GVthB^r&_;y2;9<6pz?#UI6&k!fFiHNKh5RE8?N+?^IbNkp8PZ38uo z%bA%m(8WJs`L8#z;U@-^)Zu2b3qIeHRX--b!?pN$IGD;ZgpjmZoc_ z>#a{X=#&nJ*K+gv{+?o#xlXm|@&nLa9|m(pYRsnxc!OCk~5ta+-9Dr19R8%pEb;1=dT(%V|*KYWpguVklUGQD-2^XL6S1litkj+P- zQ|^uM>b+u}aPbLes<3$j`0L1d5uAM230J)ERe0sM+`@Y;Tu8e0R&EQlX3_~)I^j22 zzUwTkvyi#l=C$x$M|nO9?PAgiS32P}mM;b08tAvfHvn2c_=Jm3xNdWmtHMHVo6W7n zuYx~-b_hE#;o=v*pZMjp@0Y0O5s1t(*9lj=aBe>n|1|Nhg436xc;PSNmEUvltwioi zLYwQANBB(3$M9&%b3c63piS}0Bb>SR<`v{$Lwr3r z_trY$xVC!!bnh`V&Kjn2L9c^v1hgS4m*o?F4)F)Uw-8?gK7e@PxHjSa@hbO8@JT;C z6TW`XD&Z53YZG3fe2UEdYtHpyXpOE1>AB^LV}VfKFJfG9a)MGJ)P&ryGJj=o}EYzb;@!z#@hJ}q5 z4zloE3wPRdBj^iCr*TsrcVp z_-hM)Vc{zly7K(c;y;We%iu2EM$B& z>E>EE!@@=jZ?I6~Ex+VM3$>~!JZ<3!3x`^$DF(k}e+y5w@O>8cvQXnJzoe#;f?6CF z)Do!RehV2_4gOmTwPdRJofht}aI1w{n^pW{7Cvg>KUw%i3zu2A#KJ`uYKd6sZ?bTj zg%d3tZ(-U(^=I)9wb1pq{ub9lw&LmI25L$uTpe5xVBiYuC^vIsT5lGA^7DU&V9f7A`hPnezu2KgTHO@9|G5c{|f`J z$}8RP8t~;F-U|LH4_^iTNe^fISv}dqRsUKKSN#WhxaxnZhpYbO9^61GK>kGw4dkG{uIc zThc0w=+ez>uwm(EZYF(q25sq6NN#Ld^^CgD(sx1sFXe%k`xf4XyAg2VbG)$T6^{N( zFMO>R{*V{G)C=dGK9##rz^9lBsON4p@7K`@Rz8+>#?>bpo1H$;=H#qQ3%%v%8=1y) zIXTg?lC^gFpV+$Q7jd-gujX->esh8Iu%fIBudrkrwC1*Js=bwixJ8@x(nJdiafu79 zU&Qgou1Un$+~(FU-r_cnv#`DGad2l@+vf4}eXYSYsf_FB{HhBET{L)zVK;WRbEe-s z-YCMIfo&oC+O=9^Nrm@dTHyljm5Vu}gg8OwRL1wWe8*#7`vwmY_wA>Z3}`DEGkB7; zSP|H^H8(D7o<3*l%p2*evUSV01yy>v$7Mj{Imj&z?a02i9T`pp`L=Ig8z-a8N~i>O zWM3O6gQP813^L4^WULkn*^}<0;sascKzpbur+hqIx*@0{80Xnfnl;AUHtkyx1V3fG z-j&m)lINV25o=$2kV(RNn4dg3EXM}Q@j>vCta7w(le&r$>)BJ!Mkn88mt*=(zF}*w zjqYKdn;S^Hsb5%*vKzex7Aw@&CDvwn4bNshQ=2{z%J9qL!d6CP%$Zw`Ey&RGS>KjX z`8QFHE-tZ!u1(`?h4&zXM{Tgy$|$Rko{zcL*7Ofu+}vxs7a6>h1nZIEyX-a%pL>nX zO$F_1-$q6gi8psFBlZlg`rc;!Ca7Xksk|%eGs~o|T(&(-T?*OgPU1yb?a?(4~x{|?nS|b@psf*_0xaiV2 z8F4nc%Tg$qm@w6yW77G5`7&Z`bboPrnCzc*vu3+I8F4ncCn6)xMprUsFb27Dyw(t1 z+q`nb+341ui5(~prLyzGitI+l(J+`NBhE(mAqLaeNptOm*^L2~CnL^A_cmVGucI6v z)?_u?<;jS%(f#od#zE3P#B)}zb!Ie>dNSI#(H+E#oou(>wlY$)qI)h+hDHG8Ltmdf za>5t|jr+?*7>E-3-e^mh8#P3p42?g9Y;+$O9xjDnU2A1zK%R^^8{Man@etgLtc*&^ zVY|I2WA@A&=P#NyZO+Ua=Qht%U9xQJ$9*Kc_bV@p>R?L3no;E3Js035` zDt+X&xpP8`(IYPp#&Xo2aitTk4jxD!dHxn?iS&_Y<|%Fw=U;Vh>Pg(|2V{ZTvUT*4 zKc|Ta(nlV-CA6PSA6a@qQB&qTtiDYn54D`pvk9)^J8F-;^TL4^?0M5i=FaVH^PT49 z8=kH8BspJyOMk_iZ=4-_=P@XCrYy2Q4$s$W<=bWHBh`_dQ}g63Csn^JIrl;-%aL=Z zk+ZwrmFMUERagJ4ubHHJZK_|MX;8LJb>$1oGX*)=xE^_;9(s`YX883oS@{-0U2UlD zi)K0>EN%Ih=I{?O{PXhotDhZt==YTgSqTTSxb88ja?ISzbPcQO-8Jm*m0j1c8|AEt z%6aUaQq@1gx9)AB9Pd8k?1z(MM%r)4rH}0FYp!Qm`pAn{@$i=1#8Iq?`%miH^csWW z*;xDT-k(15@>O9ggm%ua?jLz*T#t~_xv9SH>@ng!_Rfp@Wd*&R*ue#2x0u*X#P%%^ zyWYe;M(lfujO5gq(7HH0M@}UVzZsW4lD;bJiTZwBS8UZ)(xs$+nlh8#w4E&2TcACf zL%S8)mvU$`p*Y}a$lAGK4s$OXc_Gb}hWR_2`OnA>|45TfvDfYkD5b4`j5U1gwX%kP<;_I( zFs!@pvRvB-sl8;2j>UXSYE0KAU6XBZrjKkG^ci!Pw_eM*+`ltD_UShj_r#lbj~RXB z5!)_fyxj-Xa(ZVwnqcw2p{OZ6=0``9SpKhkGt7O(n?dzhY|{gq`$uzfS1$LwnLhOH z)J)!8n^f+FZ|Y91stK=QXdge@v`|k&OZ0d5^t3le9|_F$<(i)nj&@x*{qN)^#>$DL zFIL%lLPb*ObL zTC|K(MTaW&1E@n&3e;MCfB${fIrm8dPG_F?n(KP5>$zcP?f+V9ul;d8_s7{QE5}=c zPssbfJaXtjyL>Na_K&%@=8($k_VB#CcsWOR11s{=yDjs|i!ST+^IYn*=Ro$d)AA?e z7aZ-!HNNXWEI;PHfjIH?^gqSY*IxGVZ&M!5%IUgJmQ#Pk_3tcu=e+%T?BNdOCojMM z(v+X~a3P=ljQC{Q-S%;O*G(eB$tmEO#H~DwfRm4f)8H zWLqrS(EfotIf^r!mBis;?v4WOg4Gn-dX!p1clU3*vvGc2w{owqzK{4V=Wp7QYmR1k znfW>gYYr^Dw9^~HX%F`Xmmg@qd}MwavC;#@y;P!)cStJTDb(G|S#_y*Fzfcj;jxLq z?l>n7AL6VhKl7z|4fn!!v~ZrQ&vl%mh3Y+j(g(pq`~eyO!1b;%cst{tOKd}qne8fu*nm; z-pZnPYX-@QiX@h5i{Ie^l3? z_b;iB>N;#kZSUHjXs)eMi>MWK7B7Hvs93rCS6@AN+>NegG3DrUuZKIr-X(O@eeQK| zb6Z%O1gEE~OQLz-46O3j)c%p+y(xcxEGOO0_~be3{I4F)a93M*zAN&|bEfuaN-@1e zb6+P(G+*KF35n);X4jn|E9d2PF8A-NUmoeMW7&My^l1Gu_ou-ta6FGY7*}z}Sh@C5 z_4cPCDRPp;;h|mJxthYXKIczCe(b@s(fM?r&Y^5ON&|}h^I3N{-#@JGzh54Cd!Nps zDOt*weNiJ%;NUs-%DzPN8wEkRv}0@XuJ*I%LiyEFf1fAUTo&zU>S?7nShpf>?a++jwiLb=1}Z8?pzPgn69+*`h0 zp1N#&{*?R#cm7NF#UIw!Vx4$Oeq67sg*5R*^P4p)&4Rpnc|Cp}&u`C{SkHvg1$muz z6y=YkwfpSzmYkb^dVafQiRPDTmFvyCS@+nNvMl!Smq)U#jK6xl-LkacT;t;V$A4}B z#be5X6@c!msFC%!M<|;&vd$j^){e7v^~F^sWmhufQ(Zcd#gfJKb85@-t7|8k4_rQH zDz2z28?KL`itAb2SE*iiuocEA|Ffy$IrY`Shh2dvm?lYXYa3)bn?Y!Du(Z==7vE4e zuA-!juc>@N%am=t7^6Pp%5Dlaitvg{O9R7o^>b$M;no}mj7!VvN@^==wDMd_Cs_w+ zb>};=IkRV!)#_WbtE>Fwp<~#OcUD>LaBrH;4b|o)lk-)WYXRTzrSmT%eOWCIAgX4` z#>D#K`rw1Ly5TPK@UyUF8@Ac%!`u&FU1jwsO>S8iCXcchPt&Jxkpnlk+V?^cDXQlW zh^kn$uRC02^GeEGD}>+H)s_|4RaXrUXIFxc>}tzqSI;dAnlg&QmaD+8vY+W_Tq#$U z)z zsGphBsIx3NhsC!8S;v?H9ye!~<#f>VbqRu6&m|as@rtdqk zHe-HHbd%13Ib&w#%&(r4Q&(1oRT6|vmQztL1Co9EG^3VpRdP7Ybu@fV^~@aRY&p<5obpOmOWCV+CIn^Dm!cK3xNEY^yqdi}O6rwK zbxvhhBXX^{)ufjM~<&TI}R4Go}#+|gW#&Vf}@HqF^#xb%jy z+MJn{#j`Ha#{?9}E{-!2!>Osi(mQC$n~JTuoFnwo;W=j{yfYFxqOEo7a&9W49dt}| zdEZbLXgjNw6(tp_PH9D*Zu~bT4`OTOIb5$T3lY)C=nx2pcW^}+p7WLZDsK*_yl-%L z4p-Zp88cKgF9QRzq2J5xS=*S!IT&-$;e)K};PiGs$^Q;MGlI|P;`{FqOY(`}0TFov z*oKXrd;_>oME>t!%g)K)0tfRsviCkXm@*YU0EW2v3g*DvoP)|ovE8!j9n7gje*=y& z0QfR+y9g-^hCAw!LIn@L}xmVF51@@`zbN>3RBA z_R2Z+#WO0)M%LCA&+o0Wsk|DW{FLiib3m%U?k}GcpHE!(m^8}x3*vu8NAV6QY42(2 zj3<5?aq({_uKSYWO~i-7&mwMX#$1~K-A{8?nlEboQ+Y_{?rTchfk9E-+f=q+64yOV z{PD~qj6(4w;@1+_Jx~1E#HU%lPZFPL@jnuuOm&2NI^Tj{KgzAV zNvUFT?p`8dKL)k+ee|OuC&!$^JjEw}gTJX?r@*n3ui*4?lGNS~PZ#cw+>39LZlBn% zMU-x}-pC<|K z6WjLB5X*RpKYt>``os^3^!Ib#O582un=GN9bAOlfMq!t8f0y&G!0i&sxqmIScnIjl zyHUB=K;M+i6bMh&x?(MnGbK&G zf)}cS4+6dT9sG@5;+vA0ZNihk&ROA`y2P1!0(b{@1{-~1X z`=(^ZtwNn#9-7K`rnJ`7H zextNgVlkx|M;pZ^?+(*Vap{JJ>87}Jg-RFyNa;#qbCiS?-riJ~wg-Rxs+YL5v%<6` zF73@q>(0fD3#AH-_35ZPmHP@^XQmER@D+L&2~zo9e2kd-3cbB{Q%E^k=_+C|Wy-Q} z3VlC+{fsMI#@|K5uWW_OcqO=9vD&=i9`02?26}P#@%)W`yUENtXG&}Hd{Z|%Q!j<4 zZgi&hg1Mb@vz;k>bvL;OoB#d&eBao5Ozd;U`lI3-o9~Pr360Hn#=4=^sYht++h(i| zwb<>xu>+`_rJN?u4UOIIjP*m}SMqjeEMLZQLt}UP#!~K;v3p{%0VLl-TjW`XJl#t>RE4-dM==gJ6SfWNz#@pv|TCCLZTb1^p ze=krvt=x)D?n9OQQXX_^zaOSO=+gchxZM+~?m?X@T~W_^-%@w^srY|60XP``iEjxu z_XVDKNYO)T$E*?Lqg@YAOukO9`B?xvIjD2pN#%?s#Y^4`Pfj}%QLO#doC+D&@aKHNle4c7$!dQCoc6jGw%<)w z-8whJPUrlGt)*nKQ@eM8#M_;851bxL`Gez_?y&l#<2WX`iDte)vfB}+XOewt<}U;2 zJC1n`sP~R^l{Gc~NNY_XE`$9nKc?+UpYP_zKK;$DE{1 zul;B6zqVKW)B&-q6Wn9UJ+QiP(*B?CPjcKHNZLiVD&Z_A-Z!& zMs%-||JL3l9b;FM%ZWq6{ZY6KJH|TWyoryOlAED)Nh;{t?Aq1?Pqtss4{zi8?Z(@< z*IlVQcDxvTQYj%)XMxHR6o0B zP<6>{h5`njd%@82h7Ov@=tN0bK>XgKH)v!{4c&NuL}^e_Np)%2KnBzXu@bzVft0#I zd1Z6UDy!M1bWlNMaXn)Wvy-lG2G$rWqBSw^7(0;6sjD4SQB_hor?hNPwU!Y5?_@i1 zJ}!7?4;t$a+6>CCW#!RL)wMU&4a#R2nALj>;S6+3c*Gqvx~!Oiy}Fh?>0|GBGO@)b zCX5=+v;9k=op5$E;Yf^|=(@`O_9nhK7@ZCj#)KoMzSg*jmj&Z_0i*RkDX7>;b9Jq+ zL%&gPwmfTkvU5uA=-iZ{*<(_MbWJ-ClwO;gmNKB*F=E}>TcrVEZ-hiLQhN9JbJ{p( zAT4FY*U~ap-8p8^?ccn8P|AR=>HnsGzRRFLq+g_eDZRU9T%WP^E#*S;pW#vH`eVno zr1Z^BsqMBU<$+kY^tmYmvor42E-vX$rCi$e_CaIP=ZyL0TPgjzrR{Rb(|ezjmi}N` z#(TFn{N?N`#|#)dI(^E|#tgdr-0RaXNja-~%Du6!WSxF`O7Cp_ukSAOt@J4=gS(}z zOv~7k-tX3wwJ|w3O8*T8**%8(Q`cSTAEo~r`^2nIoztA!u{m|l6{#Hurp_7Y{$7!O zN@|BYQs<}ij-_^dF10%S<<#tEHa_yZtr}NgZxgMO%lD&mA?lREX6j|b;p$$nNaI7#>v6eelXk!C#qho~$#o`0yXy#(M4r;QRf;*g6m{6?u94pLG zT}t)DINTzxcbVLAN78;y8YYm&cE>6Zaox&f0!eo{X_!DA$U;KogbMqV$^C7@-d^&w z6KlFl7}`o|h3!*`#?4NvP-KCNhBcPdy}>4PS`X_vr&TDj#YMvelD^fsz@Gha53+isPsc89iPqHXDk{Wi?(o7Wh$h5nU%U*;p#xE?0mFB9f+fxA5VH|H~i~ z6)fgW8VXTqhz8Owz!8KLh9yOPad?z7D1?d^*%V6M%f+rR1tO2RXrW$r@8S(Ma&k)X z87B?RiS>|UO%UNSFdrj(;Qy|srRD`A?T$i{&#L7Wa`#(LHxcBkX=MCy~+Iy0xenL3Q;J;^i>U)lx z=w7otbuglDKc4!jVFLHA<*CIZFHxSlN-bZ#JartSFKccm9KDGj{BxE5q5s^9SbU^kdmY)vR;Q&&?e;c;E#W_Rr}z zqqvTVGbR(A?s)^xtD9TZ-}}ej-v>pjz^m#%>Im@cYoZC6+Y2Vmuk~7q)PcwkmSeQp z?<(40>^pVrv>Z2oi`+KGk2yo%Mk_Ku@6XtOmB#TiOD-j8lRi4xZ{LW9Q>dTJXGr$XDX{Ur%)*!~iQHtfifg*LKQOBjx~ zaayuU^b=dHaX606WY;Iyx-DtM&-Iv#VA@z~x$LKn_}EK#uH~xrZz})r0*v4;)#`@h zAAzr2ml3_-SWr?q)0eIra8j3eN(=C39HeQ57sqVin8Gih0LbhUA~z$rhJG(Bz`DU=u!D zRpgegMJ`a!mKn9WF551VYk66C$@~2A7PGau-3R*u)?TUet<7!tD_5!cSH!UvJ0 zuch{SY{9GZ)^({n*nabr&3E?x@TymyUwqCD@4mY8#o~9L+PFt5-ch|OWH~(P8zizsv zqSI4@KYwEP&u5Ig^n>T$jZb{#^`0*^y|ZrapBApV`pl-^e{#X@BL{E$+4$ANuD|&H z>%W(F+C>-s)3OCOd_3dX-%mU7pAXPDpA#~9sp~};K+pz6V+m6Um4pR^#e@}v^@J^i z?S$Qg1BA~BnKW!K!T`bu!dSvoLM34VVKHF^VLf3BVLM?r;Q--tLM8`A8%im4#frI+io4q%Eb?*>V_5%D*Cf9-%{gxUI%BRUK=?Crctl_Cn zn~h=+N}gi*yGcFpEVH-G^n>!b>2>5m`@e4TN*Uqzf#D#%TOR>Gkh>XjuHd`melJ_a9C5>7J)! zsq*QVs~l=e*;5^LT$H!!uVbQoRd%(f&S9O0IyY5+wV}={9UHY@a85+aL>6tzr2Al? zqua9Xp}Lpqr^6WCV^loVi!9x}SRG8I(Y;vrVA)by?I+s)k*$NYr|1P<)%)qw@3`bQ ze{Q&1zMi$WsP-R~zvs(7tG)Qu2S+^P_8ny(((?aYS9Gv{mqBWyJ=-t%MEj3wpVDrJ z)1Etu-Q(>$dJBbGLU^2@@kecbwwrL6(1CXAMHoc5lyEgcdrIFy(Ci&5uJ>tctTdS> zmO949`UFj}G@ilwfuX=(mfEcKp^^`5cRXEv5fBQ14rjrFdvw4R_3B7T1& zNbA=G%TbfAVrkaZv^23SmiqH%OS6(SIW;2EWPGS#nRhB zkTKBz=`zx(b*w#DHBcX1W{QuF;H|B&2GgVR0&s3bzo8Y@*tJgQz`jPQ^CDP-&|4x{ zW6bwPutt-WHb_4etRb5KSAs8&U_EA|SdZB#9zcugG!N2iAXP0K;H}^t5v-xj;SsE{ zy=O=e=xYEiBVtcuUD5W@pi_6`8kQQxa!mP)6n&{9dvS7Jnt@a?>&>EN*{hcI$s#^pAT0KXmgnyv%qAs3chIDvc_ zco^xYf*H$e6qa0ALvAWZU-Xv3pNZaC@Oq;sEIr{~rk91@68Lk`>kcmiJz?nyry=*@*!g`TkN2w!h{Q_;(X&)utO2E0k= z2}@6S0&=atozlT;ngV7#xKUVg;n4);Hx#`Z(hW%SniBAG(G!-QFoUO?wO>W{dH93} z_fvVmk_-1H$PUkr&4t(>N`5`zWuhl6J>hiZmDnvJpDb`3xv=EIUvOQ@&Zix`&7!?Orx;$gqsPn_a1tAv=irI(}(chMo(CJ!mlC!oPI8^qfI-( zuOJteT=*sAIuGX#@tWQMzlc0IFNI$qD4$J6*BM=DlsO`IUaY~smT%ol`ry0}z6-gI z^Az?%egJ$2^5D1&-%ODGQuMTLp8I1{IXs^HjlwFYaG~ktp{M)v4D|Fqaxr?r{aSdq z>E)uQ>ph$M;1GBN&t7hYyZ#>|zwY1+UOM7|8%fIK+9!gC2K&rJ06+&n}+mGGvc7d%IWry}1- zJ;!G990oH%*(j`f3y&tqj%E%;2N>;T^l+O0+*?QbFL+mJPD?)bgg-?-jQodjU;P}+ z{i9J>_Jx@^-JCFa9GmYW7nWT3J>=8D+<%%rL!bHAMq$Z?HQ}prZ9;D<{1xbJfyXRv zqpUf%muBRi>}u2HC$DdMUIw=?h8EbEHZ0+ozCT zSosKNoBn}z-sS@Mx<54Yj`wjpuTfZf!tW#3`@yCYI4{BPArIacgqii;T)_RI{sOOQ z7ntW{qp;EoZy=~#kD;gQ>k0B%4Ud=d@Ol$|$n+MYr*`Fe-}C@HRse+UEPSi!)uX5D zY(yvaeuu}Rf$+K$zTWhT(CdTV3zUBbyh8MZRX*V>kn4W8mi!99dB}tNpKt=XyAFqW zO{2lQ$As6V@Gycq-_RRPxw~*(4u;ncJz?b|+}reepqB@~4|=`eWuqr7J>gEKmx5k8 z&qvO^rgV6p$9WFe^HTUI@9WB!H52aoyaIcl!ecdSczp`fg?HDV$Nl#JcsKIk`V-dj z3)$Ij^f~miX`czSt5(&rdc09sPR42lp}I zWd!B-fYH0q*YVzfy~Xev&=*#I!V66Adh~SPc^SPLcq~2->nS_~x$1Q*_2gdUvC1T@ zr|=|#^36w2*Y(HP84E9gUT~cYk3g>HMfr(dlNPM7mL+_C2y3ah>|~>-=Rg zhwp?iKjC|k>psvui|Z787xLh~AlyJ0MSk_@4WQglVdrLeHRuVee!|m{>p9LbZz=`T zj}4#e!iC7=$k$S@A~5~lMq#BF))yjqE7?JZ2-+m-tZ z+-d3Ky7OK6*LS^9|}v-$27?jl!z8@WrM#06h=>E9eb|*9Sde z=?Ui`m&1u2JTG&>J&`*H6v&0UBiDI$7v+)Pnl8wL_ebG4LG?U}@0E1yrgQ((G{_-* zuLvt2;e!O}eT<&UnTwvLO!lG|lv{X@>ESzJvj#=zzcsxLZwGodNU}ND4p0LU-ywvm-q1Oxkz36Fq z=0fy@r6;_=^s3Ar-}*Pz!lS<(+7m7{y(09oN&gIbS~6OQp0Ml*k2SpndTPh5=;gs1 zfnLzA!oy527riX>cA+-}-dX4g%bu{-u&Ta2(EFVG{oAzbDe$t<6PBKE7IL-Y9_;i2 zGZq!Lt8kp)jyInxx#P|K<#Q4Y@K6Z|6b;CKsb%ujYUSh)(&+X!!cq+G&lO>ZT7aqLY+ zZw};@Xe8O3D**2r&4wpkLUaO zrW$xNWk=)l*b$zJT+iWq$!7+*5P9&vAzXl5?+bb^YMta2$b;e6zJU-)c<*E9}% zDe~a`L3kKJ>T-g!!!!PDif2u6JQ48=Qh%nBOX4^7YOm8TqMfnK{s*P}v^>?E$4c&NmKQtGZKW zIFx)mKAd*Gao9FCGY+O)VteO8*Fx!5#Mc;IX>^6rWk#18U1D^x(M3iV8f`GT!00@q z^+s!qRvIlgT55E<(Wyp@j20R#Fgn)gXrp;X6GlfE9cGj^a`mL{jt(%|&uAZ`IYxUK z?O`4JQl_ zGn{LCP)rrI()SFFn~wKvn2^aqLAOFVz2jS;I{!97xg6qp&WOL(_-l;6%=k-otjX%}+MaC~Q{%9!w<9bFY{{&R!8e#ll#@Dk!e4Zape}M7(8NZM5bBy21_&toz z^TXNax#8?&8b96mapTK4|Kp$2jw;VlsPa7o75|{|4;cSr89^>ye{x0M1H2x0b zZ#VwS#@}ZAt;XMC{7uH+X#5SvUvK=i#$RLnmBwFT{AI>p0M&Ug532K^6sr16hpL`a zp{i$*@e7S#VEnPhA8q_R<0p(i!uZ3CKg9UC#vfq(e#Y-({2b%=GJX%^XB(d~yK-h4 zKi&8ccb?xxp;eDNj20O!G}_Z>ccbqyE+T!cpBMe9(H|SFH(F!VmT|hPMz1qE#b{Tff$y=GNv!nSjA}Yvc)roWMh6=Gh~p;t z2S#TbtuV^7(aFy-+S&3OX~*v(qZ$X4oxw(X8$HG7Nk;XNw)8ZHC#sWN^sjdO{$iBz zLC0rY&{12i68{gwyNvEMs$~+gqi@1RHyizl(Wi{AGy1quTXqxI{HoGvoKN%?qw|f{ z8rArpjM$a_b!>GmyWw)Ktn9meqdA^ za!9_z=ys#e8{KU58KX}b{h`svjjk}d%&4|ok=^eaWjxE_JB)tYs5TOjUb#_?Q3-3` zDN$`aB6@{UjZX<*VAPh$#Tk!seC>E5`PYnU`xIfummEzo`Zv4JX}cB4HEtxj*XX|+ zeck9QMqe`eQ={4^M(H#TB)Zb5xwejLn;G$MHL9^4;Tw!<{~KY(cO2E;Il`A29cgs9 z(V<4qG^#y%q@Qgx%cw10inlYYX+2 z+U7`jq0t7THyWL7bf(c6Mz!}G|Kr+mNi<|taDSt{jcP1{|M3%zYMGhv=l1+M zYV;GMe=w@?1nIqP^w&mzWptBKz4uA)2S!&JU2atUf64DQdZ*EPqcuj0jb3YXlFO)J9cSuLowHD?wcNF4ip;5h0N*;Zm6xRErXzP6S z{wRJQqd7*S?~9V_{ZLfzhoY_X|2XEY{v#c9eyik1WiR;M2;KvJHG+48pO4^O;3p$^ zC-~6_=6qfK-3aEqU42Ug^PaSNb_DajwEEfz-U_}lg13M#ir`J)b0T;n`0Ek80enIP zuLu8KjcN5=3;tsSuK~Xs!7IV9M(_&o^AWrZ{A2_#1wR_WOTgca;KkruB6tyab_8>M zuD&*c8^Bja@B;8f5j+okP6XG3zaGIg;1eRa68v`tUV{3UgZ~)8rQmlXcslsi2%ZXl zK7xzDPeyPd_|XV10Dm`v$AWK(;L+gO5u69UHi8r2DBz z?E&Inv-kkyxfb67)w{jyZ-uH~t+@JA|7`K?#G5SMz+m9J7S|fp&n>=_`040%LcSu4 zc?iX!+P8I#@wEr-1dD6`*=sDWy=V2ghSF-^+1VCn%-ox6aqTyIo5i))>^&COKC=&6 z{C(n&T3q|f{!nqsFg=^)+ZNZJvFe+Oul+r{(SKE3dwiZp`<}>yPkVg6!SOqhhp*-Y zb1m-X!z`}3JUyeOvxfK#i)+sDNsDW~aGcrPLHrz!0f*N8CJ+hY7ewOByM_F}MBdh|Zl6`!=@W>Sgb1E>6jbq;OPU3ppI$e{kwbEsAEgU_DL zmF9ojiL~>P(8i{H1beJPh9C5{6o%Dnku+L~u%tTBY`9-lTsfwSJ=N6bdxFYo z1MBK*1MlMgg+1Y_R?i2-(mL;aiwp@O=bvkw3(m91uz+)6z&STJ&^|Z!0@FG-_rf4{ zt`fKhQ=e&m_FSB!ugaU);t3V#Brn`!71GR%88@+T3N;-c8}tF07c?ngOl;+zw&qPkzT)TykA9syp}Zt_`mXZ{uMR?6O`kt{hc4rM!H$x z6%!j1oimLwY&s)$oAx+PT~KY1zJB)LI<9YSm4nw>*B)xhWBsCjq>tq@JsTV9|Lmeo zWn=8syd(RDR1Nnt8**K8OrPmvvGD@$i`wfy`iqvyY_QdZN};;7^hcXXrYlLj<0QWv zTPTP6V{|!Mmm_pY-P*=_Y$#0)9XRFvIRkap%pm_4l;e1Q#&>Fh7u98EW9;Pcy*5&g z5^hEEdK1_zysW6u0EG2f-t*8E*ogjGw#QfdZeK=+BbUTezvkDakaEzKY4M95+hh4V ze;FIrxA$AeIxem*$Mtufi49$&J6e?kR^-@*rx)zD=V>-J z^xM_ehA-f6;5Yer{?27%9{0h(#sTUw&`%vUNnqo+{?5r?pUoGX5oQ}i+S)jdzw=Le z`AMGa8zc>B8ym;-cmCh8aXf$LvZ1-Cpd3@L36E`?avaa!`S)`8&Vq;1HD~#CD8)ux zol^gFagm@+kLT~aBR7w1()>mf=`DY4%Aq$F{aX77Kea#C8|C<5a7zQAHa3pu@BBwx z_|r*H?T<-%3roUJxFa^$z__w(n)5S`ZtHS%qz<3croS;8LrTNzwv7#4HJE5)qdjB& z3*rA-A4Bt7Iy0<98ym;-cm5r0^daq4QFkfMTC_d?`?OD_%U;4DP%sloYiJb&lAu#wQc&}`(Dhab&{?V*Tn`+Jdn1G@GG?t7dM zyrYCWarPvx0NXpw;*ewhc4H?r9?|gqbAOs8AB(H z!p@U_PyA1Bf;ZIn%DGg$#NnziH{Y-H+W!pvN+(>tc$S^u`*?L8UW+rSoy2^H=_2Lapk1<;C0af9B*LeBRHi#`3x~ z%xmFs^2)_>O^dwx!YPg9b&AVtQj5H@BYDLwuP$L;y^fRDXZS9Ux5(=toTKLk$Cu;( zX$tMKFE?7R_dX5l)x4}mlEmRBTpHT2d1LLd+i)9}*PI(|!{^{Ej^y=>%j?z_d9Ag) zQlGx^X#Bfz?Dw@ChlDxix5)A9`Kjeu<%LI68|3jkad_~#XSw5cUcP^%8sK%0U&nVbESF1bibZ2oTj!>J$KGHc0CKQzwNYWJ@etLaq0XLTE4CuTzlEBlsQFyIrsfhS2rGO$H#gH zmgL1@9%JR_buIqEFMmC8_zsswHs|MMmY;@X`5)8B-}mf%n)4X^ z<&h=Md--))DpTOw_^v<3@;&F1`*gf9502Q8pYeJ48P5%K6{jlH?}&cS(3U(tPsbDd z$o$7YQmO6QZhk7E+`3VM)TiaO_~oWV^J2$K9DdI{Nzdor)}g#_k!)P-%J_;GEhFB} zn@e4qdHBm+`K_0mMm6_v=Va1nH5#Mjx0-aR9XQrKIAX7L?P7l5zdX`~n#|>+n82>` zN{3e-<|K{>XG#ms;R7qjAAEkvPh##GyJJJ5`L%Pg5lb{5J};SDukwPUv4$)xymtV< z^v$>CD4#_0+c(ZriJW)u#NlyW1HbescvpV)6YrickGymsWrMD!CFFtM=5w>%5l%F3 zwd+>*+St9@uc=1D)|h{6vlN)NxfgmLG`cduL3gwXYBP z^5}dYKFdjeM#4Nccg8a}tv|`j`R=8OgWtX#AJV2DFFz6A?Oz_5E5G8+dtHrWz4Nk8 z_a}-ZDR<>jx@n~Ad!uTKbh)mO2A&K>2Tq_|-5uY*Y6_eO_{{rL`)_T&j5LQ!t~!{K zLAumL^A|I}t+qGCggX-@A3{je}COt zr!JjpBM%wA&*b2W*U)X@Rd;^UV ztM`{jD)*;8tekoJJL#3L``*~6@7MkLu&4a{+g)eUe$Kep;|~|*UyA;?{kq?H{V#hx z%Q*SY!qC^R*_ZBJb&zqB*K_wscE+Bf{0iRn3 ziaO95S6yE*)4Z=FJz+DoG`9jzB*XD3J27;$9i$mW_LtJvyP>u3ZHDFN)VOJ@U?#)g z@>P>W8j;Z)M_H*;@O)ppp}%DkBr__}K!aCNH*wAk7rknxOG9>Lbv4yhrFDhXt(0wR zSw^t@U2I)Ru&FJ8%W7MeCYcni!eV)~m1ViF4*Za7Lt0_4-iccm)?9R7H8ZJ?kpL9V zuPF;%Qb+j4i#Rv0qn+o?r=pkLIH$Oh=CAu^MOA6Ew(>ze5iheik#@&Z-k#@jVCB=> zQv@H=)oepsR_ny_rS2lb@djQsvl>@9h1J14Vd%G8!r5$mjfvophQ}e;ySL?Luy*Dp z_ljjp+|mgg?b<5NupnwVgA2=Rt8a3Wg6cXsWv?pLNi#gy^Vf0m=t3i~qf}Tufz#S% zDJw#EG^5dQj=bHj!JI@b_YJ0st#*0#N~_E2IIA_PKC22R+{wd@!|{^xvbr{mWVP`2 z9k`ee8iF&y-m-o$!0Yp9vkg>6}RzL>NZ6oNz5+7GXBwX2L?k zGQujtR>ni4zaqv1TmLl9sPS9>DwC7ul43khvvG0G47sQ-E6tHJ^&HzwJxAAh-9Rsx z*vO#?%PQFSIH&%mYI6ZyCr8qL(+>3HA{vYG@vMD@bE<323$!WcoOwp#OtLB|CNEq; z=hV$9DGy|2^O%UO%c-bxKB@g%Opd#44D=G-=ux;y=cv~Pbz+|xHwJ8Ddd^2O9=hDv zv~(oT1s4%-wH35mL!n`G1^qOJd#oSL>Nf0S&lXSPs|-uHV}CDkhR(fT!oQ#RX5z0C z7yoy}KQR4vB#?hzrPcc0FD(8parp=qe+&Z;ory0a{uAP-6aNA6a~X>{i@5ARN_?cn zKOwGjNc_JNFEqZ^z3W`t0RJ-L*Ta8~_>~Oq-$HyF@vkuu^F89P5x<4_TH?EiKS^9| zfvOwK{~7%E;cHAp&%jL18k2ipNepFWn@m zdmSDndmjhz!4C$b5~n}nF}qu7=B9G6!4`f1N` zX%~S#SGW#cNa@y`pW0DN44v~?74;-Q;C%L63FLfMihlXE%WlSS{=^2yV!O~!QG7CA z`&*$0yNn+};%7YAWvnaCOVRiJv2XaztO~Hkmb6-N?^pO6F0D%8r~QUYtJQ;kGk-(P ztQPZ9zOAGqeN!^CTX^!H`0JY*=}et0?AmUmGc_3;k8|0?Miz4fF9doikMcKmxo=8l zMspeAqnW?Hsmq-yS3_s&a%W1Vj(3%*%U{LRB4^5dOmL-dN@g}XQ+J1^u5_lP<(KM8 zXX-C9HA$wf`~#-ma;A3jH#X5XB{KuLci^KrG&Rwg(&|Xx)I?{hFF0N&Qxka~_bwE4 zXXr#V-3*|Ya#WVD@h#_K)qUAAS>KoV^}WVf{!VE58fW=eGUYy=x~7&(s?nKpAJdii zrex-0S4e&G;+raQrrr)sl{izW$h{Qz!N(1;kCa5|v`>3%@{jrJr@g_Y)eyH|!5duK zAz-iLG!-U}8`I>8xf4OkEcmfHzdW*+tBZAVd;a=1>zvKYLz{KZrhF-SDgUIjH(Rri z;!>A(RG9W=mv&y5_GXv%J1*^$N_%JQ1T}mfDcr|mlWz;t-s#dl7N)(^rTrB+{uiaW zQwOUT>Yc{%Cm+^{Uy8p-7WH)C{@wXgRk~f5mw{dXjX&+Yj?J)g+O=$@*y2Z=r`=NsCbPTm2zdQZ2NNci^cL zd+4V;r*8*(8U1BuRV*eG3nZJYZ&Q6UtDKqNhGtedGat%~tMDpS_^&dPa<$B?jWv@t zCNt}ush@?W);d$?3%kp2tuv+1@Z#O2x>lx60(#jxIBBsC`lN87td2~%N90N0xD0FR zJ2qJ*_RIOCGk#5I{7Gm0+cNH|`=qM-9n?EL$DgB|_$T%x5_?*glRm}tkJC?eoSqjv zP0~$!_`93X?R3Ens#~XWEI9+;5O1?o{zm9j1%ICmUnKrk86F1f#4&=u5M=8*f4AZj zCyKXIJbi}je%U%L+QmD_-Uq7xi6?y|ExF%~r`;Lrp-IHsdi;XFUXS1KH^#J!jzfFg z0|z&J-wUmm{T&49u@2e`?_r{`Q@fl;)SYd((Om_rPY2xS23K9?WH>t8I{0pM^$nnd zz8l?HK$W$F??$&afW8~uTY$3O!FQvpGxcIY-;HkC6~sIK0-bmq-^A|fb`Q`k@V^$* zIh~!3e_ef!%c&j9OgHQ4zJJ}GKs9^1?_XCp0tbEny1GVnWYc~Bx=#UrBk23rP1{Ml zo%>)qZ5St42lj;Yj-V4ewPQz}8W|muZQ!MiL)vkO_?h_L4cf*_n<+lq#d+Bs@x2@H zGf#!1$96~G_imp6`o4Gd+30*F^nLH@D^oRLN8k5u+N~0m!i=BLF=^9F)6Sa7VouEd zF)HojJ!7vx(_`19%g$fWQB$SslUg6}5Kj9XcF&lWv}dDuCsc>fDc%Fnd6jZ{JeGcc z2-0KeD?+u*SmqOe9M0g_H7TcOVet&&3?;_S=+w1cYNyVzthAFm{r8D+vR*veX+*!CX{xbom!>6TRl$M*8u`*>s*R;FLrE&Tt^6fi^e>bHJ>xL)bIpwKY z&!yH}k(xDdTxzAr;0X&;Yws9*R%+(J+|;=Phn}6<;jz@4W~O!+n0nI{sU5C3YjEn# zSEP0t_}kR^Z>CninL0mx$xmNTJtaLSb;ffkeNRe1ZRLR6U&zhyl$72lrFOtcaQbg> zH=H^hXTljXZ%Cc{SZd}Ssr3U>Gq3pbIfHJ$vof{(iq!h%)WL72qGuoJt^}i0djQ9m+~t?xdj&bqZZyG+bffiM6GrmU?i9 z9IH^|sEZcx*Zm|tOu%QS&)}v^Z3Yski%71Eh6$3=Ns>-+Qq{!$Bz0ZKq&aon*m+Lo zL{_+HXf7$8B)O}0iMFMjo>K#Q|Iw_qb>0l=f%}LtDvBJu#3s>t{ zg(CGX8kR08oh0dFP8yn%)c+7HMa?1YrTy=Ue03 z5ZUXZg(9vem^}5Q=fjWE39IH^o_4|@%s-(-EG(0E7TH#n>4oak+8RZaB_b%1DWm`~8XY?gM$r})V zv!?O;h#vB}DZJ`;A#k9EL(~Hysy^8wKYA&z$LtX=u3q#f_|Zv_seY6V+TEt}D6Ay< zgwJK$du^4kWV;~m`O(iH+D#5_FUSBtIvjGbAH~~%H`R|;LaO}e0?567^ghS~esn2B zo(wR?CZ^uoepFq_1AbJ!P1oT~o^EQdmtD;#h)9a--Vs52y#`N>!zC853TTGwTvHT? zSc)NmxD?*?PCQ=3#JPc3yn_@2C(J3LDpJJXwHjBgN`8+adDBV5tl8?{Q{&;1dJz&; zJ>s2uDH7E?<`pTOU;UyW<1Fsx-2V8@L#Xa!;J;Hn#^BpB^?jyIo1rh=W2Dl3>8EUuh3tE{T5wxYySkFw>Po;J+%U4XLE zR9=TQG}GoC(o-k0g)d_DBST-r8jTHo%c{p5eRFgzJ8q&sL8+Gb-}Flyd5Qi-lrmTCE$nZ>}iy+L&tNv^UHoIP84J`d_>44O6w5 zm`#2v7wRyBYE!jeCG;n6kFDWP=N?<;CU}o6YB}Y5Y#k{ z3cJ$(Q$NDREuIst9vhU&Ul>#D7VhwT(2Z-_G>8_^^>PKxJr^sELi;!X=jQUEVrrRw(3^=_!nzLsUo=? zqjna4jq6x@z=8Ca!e~`cz1Q{})+!TQkrGsiyX^7So+NLVEmvwi9*`-XH{TOnUj#E7KE%wS@Hqy#@upz>6lMonBu;rU`gq;EhSIetJ`; zKTqJ*-f?)<(95aQ4F)Q@fMw$(f=k1y+Z^ma|dEaRdi+v^AA3`tn;NWZCkhNhO1Nm-2G>#?I=yWyWrIKUMjfnllSELc*J>=US7HN{rnLR zU3rN-6c6gNuH;Yse|O?N|8iHirZYBObH~1){_dAAZurfjVV$?0_)o7+xTWuxzgcj& z%XW<>tS4+CY$vFPe}M2gA(NNGUIg3({I7c}b`xi`+qcy4{M=M8R9o)p=jOJdZ&FVE z{4o=@hB53`E5PsLq`aQHH+Hz`53rj6haZ$j<5JQO+UHEu501x$hPzmK#~Kcf&s4+x ztp0A91NMUUbhE?YpnYmhKREtz>ZSYx`)(#09N4oh3d8nr3l@+E$JfoEf`j%9u6@~5 zIM%fzI)@n|}?v{&hMuTomwqlCLbyAyP;8v5hs z|0Zv}s^AV0i$R$6t97mbc)BEd@_Kzu^48$&0YO1`nW(E+J?;qcXxgg4*seLK9&dK?^#x zG9^wMo$)U)L}H1rZvS(o2pg$X*yOcb%sq#Q_f;( z&e^myQ%b2lO{K%q^t?&5Y(vWGj$8VVfMPvJFfFY*5=)(1)6z7iSn97^y)^AD)*dqM z1LfCjEcK)A=bsh9y75&;utwCQSP#r7)|hq_YuH(5UnW66jUPwl8uc9uKagvjH!FgV zf`>)0MrU;~2l^Tu)#|SRYaDZXM6U70(g@Z7p@yCUeT{Y%lE-c?8uFR_qR~x8pE9}{ zADY7$3R}!ItCuNWtQv*+trA{ldRq7-JJXHI_owh^(vL>}FzLs^lkZPqr5D!Vp7e5! z%75ntU?$Bse}{SG5`4DxfybC&qp;EmcQO5Rqr9DM&cp5qeA&j~F`U>aEPdgFoM6i5 zL!*p3ZcZSdg8uvP7))yvmcFp=3DSQVy%F$P%NNlTmY(n?(|gM36X>gb?nQqc zJjOl4_7Z-`^cEX!FnT?7IQf;5{vPW2b$qYM7w2@+3oAcijjXC%`9_DLul1{Mkl%24 zgV7h3zHmR}3wUE4OFIq#_dzZ!xo}V94PaiBoKH^tY&Hr@ehTtV$VY<*BkuyvKrSq~ za0>E8;9HTWfxp0)q_E_|hwwGI61)caQ7+$u$b}^r{t)?EFhkT$`@rub7nWRj7xIOc zem9ugccZZ6!gL5WuL18Oy*dTYAs3chcq8(qV1~Gx)PdN5Tv&49706eB4OYogrz5}7cc2uj9v}=zUbw{8;+i^^n`T_ zm0mCOw8ojWMNK*IdY~sPJz)*}OD_$*BGO-hy$pCv3N#8!PndSutTok4rZs8afOcpU zmRwlRAlZ2nz0st*9y@Qt<9LMUk+6o`rS}4QmFPWz-iz=!FB*kqPgs*2(z_2mm18S< zOW`d-FDRGrLgcCskD;c;V9w95e!?{b*_nafCay2;MNKo|O+`;w`3V;yA4WcJlg||J zIOM{T3txeJCx&hv>@`gQ=OY)ETsT2EoqTf9%cVTbgxZ_Xc|S4fI~4o!*4E9X(;`3BQP3_2H$r>1FV9$bfzNKut*u2aEc?Q&s&dCu_E&6eJ^@b$>$aF zxewl5=n2b?aD(a9qE`f;=Rnh3c$Mf0OHa5Qx!Qj*`DxmZcg65{2p1yPc}|C`X$rUi zd2rqfk07W#gV8I*Zco~6C_JV-8-bEIr|aycZ~6){|}?3;#Ow_Q87}Jz?ny>qSs{Z=ffi=tcNs-v#eA^n|4+ z{IcmWdF!ssMGEPuW|IULN@@NAC%EOxHFF%bxHu)4R*`o<;9ocy~nf zgl{!HrjlKKc|U2o86MNiVSRcRe3O?}|?L{C`t63(!E_F<}OAt<{zH8Cb_1i#s*27zaUT{4NFD0lv z_oCO2{2n5|`{1!KqET4o5pFO&?!%k=z+Z#j0(kZ42}@77#`Mb38v=hDdX@0lOSw^4 zdcxP4-dOYoP`;g%Pw%n$=m|?tIDtHqbT44%3h)Tz!jcOQL$3DSK>7mk5adC73-^`| z_3MG2>XS};_kx#=UQj>bPNtWJp6b&by$pCM=mqr?{(}C1?6L4y?&IBXLi$j@L1&1C@ei;mczLE4Z+S%@Jq;p`U%rfcJ=E^`nSQXstM~S zyq=))tX4kce=ByLfcKd4vGNEnGrc9~sXmL*TMBP6dO`h!7nxoIdIQi~gWf`TH=`%4 zato_NuY5~okNWU_)}%p{>txUBCtQSF^?3q2Gr)z&gZc?GK;Y`f`&v^ucr5bZ_z5Qn z%4aBgs?R>`42L%uy`X-=15B@v%7Y#oO*Hj`m!tAnxrH?#Dtp=J<-o@YLQ@ZTozN3j z{e&}2kAbw!In<{Y&le9~Gd?qgr6f1UO`XwnS`C!;IR-ate@~!)7yle>Qjo|7I+)c3+gAl!SvRmr~1^Ow;tYV^n&^c zYw$+-E=I2x>PxB7N?>xrJQ>L;9yT=mZsfxJRtdjBke!#%>qWY;*wHw^R`i7VtrBK& zqqCF1&NlF-h#ldl2p3{!HF`ZrSB0G?;4$#oD9mq_@KWSE!9(!{yBxd(xiG&~!i*ER z^4x)*>U%T!-34y}dO`h#=b7I1=&8Od$*%@pDSAQug{LD|eOF+o96S|yP=Db(%ZG7` zrqSR;Bp=}s1hvl)^s>ljC;5Oi7SbrpZg7g>@a>w<3^!mcLAWbtK2Ierc=F{! zj?rF5dl=0&nq@T8Xu8q3QHZlEd%Rx7bD%?MPuV*kDtqTaWlvQ0q$hjQlRfFl-kDH{ zP6I(lRbH6RE_HJDgk?uq>4hNK@7Y6z9IFal?2Glr-^5Xc~07@uwQU z$oSkRoj&(Rr?2~>^oJRLi1BlcuX~m3b3b(Yy^PQO&f|Za`<#<=e{=G<@g-Ec&ndsk zbrcHA`Suk5pz#kF|6{25dyT)x_`8k2%lJEuzr*<3jsLRow;6w{@wXU%lkqnie}nPY z8-K0w*BF1L@mCmsnemqze~IxI8-J1U7aG68_zR3b&-nGmuQ7h5@ym^0YW(TOpKAOf z;};sg!1!a0Kic?t#!nc3gz<+Ne~9sOjh_Y8c?5CiOEe1rx<-X#mC!>-ePpVQQi-o{y?K2kyz;ipJ}=dg_jwfZdBKq_#e@Zq8}Lj zkJsPxO)`?T1o#`MJ32ackb8y#hIgwbI}`x`yO=qW~f8trJbz0oi2 zc+lj_5H5o*BcG4&uNCQF*?@hXrmVz)yKw4-`8kwqrvs8uZ<;7 zHyStkce{@DVYB2KgA!$&%F(xs>bq$1w;A1PbhFW)7}a=_^wt@D#OU{oE-}jZozwd# zqqiGn9Le#kjOv42*()*1xRS&A+*|xHM)k$HFyls!4mNtW(KC(a80}^B1fv~{rWpOg z?n_6E{@LgOqnZ~~e!n;RuF*G*zG3v&M)l#m^fwvZX!J>=!ToZz;m3^rvr&Dtuk;#| z5oO%Q(cpfn4FSZTWORbjZyMDG0+KVn;wa-Pj-FxkG^1UNYWzg{?Tw}yJ!JRAgGN6w z`Uj&L15vuSjsDuG_F@o!lhKVvZJ|kAn=?qh+~`9_|JkVac9495(RoI1G;02p;xi3v zEJFGdjb3GRw9!1HTGSvtZ95^Vg$|;9jcW0OaNzSf({Q@czao@e8)ArlX!L!f?-je#w95YhLss!xtJo%V=Mt zry4!ksNO62AJ==O=wI!5`4^*~8r^5qR(!Q#RQgP#=|)?Zm-nO9NA$8u zzgT;V({EY*Q3TU}S^ZW7bH1(qRRnY1t^R2QF9iQEf*Zi!i{J&|yCZlW_@)S^pR{^b z1k+zyJvo9a!IwvHIrxGIE(M<%!PCJfMKJGwtJ_C#5%>rl!=V0!;Ey7>0Q^=2j|KlK zg1LTH|1^U0z(0)O1o(RqJOX@o1P=q>6v6cCR?mvyT=3)w9ss^Pg8P9lh~PfpGb1<$ zd{PAW0=JLg9^fN`ll9LAe-y!4;I|?;6a1?PP6z)qg5%&HMlk2?YMlGH_SL@gD(~|; z**V{||GUb&E`n9w??tf6yD)-P-WwxW<-IO~Ro-t#u*y3uf>qu#B3R|^62Tt$OBS{S z<@=oSABf>_6%Zx5EI?rgi(ITUxjSe%~&u9;$r$Kcu*87)yTk5CzJjDx%Uu^MB#Pv=n{x0GT z7Uwv7k6OHj_|GlAoA^5x*So-Bi|c))C-20vlS`iGS$qZYsTS8e-|ZGZO8onQJ~n=3 z@jT+%E=YFtuHKXWiQ-!K#To<`S0Agw;_IRJDb9mN`zb!HI5+WKbpD^Uxb__Uxy7~L zp!#~!-$nSN#WhI78WhLZ{&tMddnYomwH`Z1XqOYw(|oGj-72mz-(Ol>^PQCz*BCBI zosI?`zHN54VrMgTmQ25QBJroe0pI%XPG=;{fWIiBzaqlViSWHhd}t*8Lyk>g=Zi>M zd$)CY^^54-9Eneg#Aiip{w`wY`w_mqzdD=GM09=`i4Tg#BXzfT6qokQh>rOlY~c(u z_>O8|_~lXXrC>{+lV6$k7~dQD{?Cq`RjqAL8u>`&nEow;&olFDt7rdz?7a_sRmGYA zf9}mqxP$-!5=2D2Vx*`DAt0qG+6%-KEJEauP>Pa30zvr`lc0fW8$Q{2edc-Q znP>i-IdkUUGvlk`d=$Z*&pqubggK(Mrt<-<+=y7eXnCE@KgZL0r_rX|-KYyU7cQ&G ze9fd+x;A9usyFYl(j*4=wz#4Np1PU63F+fqHHmJQt2}A+Ye>8~7da{MFil+9RAbdF zPr>OcdVM6hL8UIK3e}*PWv;RFa!1@#(8{A4aOABHA9t(UCLW2#7VmFsva%9##FxwbiO98=GIhny;4g9wYT8SpusxgR|9GH5weSWJdOTe z)v~2hEnBs`W<{g_%u+RayHXBLQS$tV>c1)BQWVkB=zIE_U>Ou@1GOUq$Nw%h-;_cM z=+LDpp0wvjr{U{D!!Hf@|A5wRNdZhi$&AUDXZoysQN8;!$Hfw6)aY@aDjriZwglou#iQ{kHlCx3i^uBX z%&`}Za|yA^T-v^*=D@u}Qy=Se_h@cVmow(}JBr=zr&v1~?Q7bGpCDZ?V>NFe^HJ{6 z+zOw<(?xL(^fl|tbj+M)P-9MYkEX)QRI`shXqc;L_V82PquGTFPXu}C`X0?pGQ48T zN7AY8(aa=+pv_)F>{r>p*f06sNXZz6Re7jPV+CgI%nNRymC=yt-bjrh=)ya9S{Zf7 zperY%Y#0-`Co%0knvCJh$;vHB&qZnSjF*l~_h>S%H4*N%>1ZMyN*6pN#_hdce9@W*Mj5m`^s*DVG zPqJ^tXV67GqtRxyYcZ z%B0B1boXQ*9zr<*{>92Lq1~Sp8JX^$)LQB-?6)Vx&JEL^q39uAV47qwq;WVG_FR>XUd!7C)=r$deb z*aP^f=vz-i*GkV4cLi3)>nkX%ngAa6$2Pi~?v}0bj%Py!<=lM~a#~iGac5k|;gB%h zedXTQc<4wr_ap5$w;1UzE!`FM=8<^E%RXOi#jtYsPDkB2X6}vb*k<^-$I9N9=5W7N zcXLDJZo*a=U&p;6vSXbu$&K-GZiv)9b&Wn<_ucJI%HbBuB-!XYu@$1mNgSwQZq>2F z8ULgUZwzJ6u(;mbYeN{dV{c#&Vvk~J4s?1|QlHOl@AXdG_geGOX^rZJp3e!azCB`- z+}Ci-26h9!f!&B(vT!;vendZrRXtD|WCW?g#wfl@tjwJj%AN5Z3j9=(94WaT6_2{9cOLI4bk}54~dpAVS&_y88tZ06( zA)@LCZcXJ$N|rf-+sXMfc=il_LOF~0?Y@*BJ+4rX|K+Dcr=HNypUg*)|GD$_k{V_n+Q&L`FDbZx?wv78ex5up9||LzoDYe)HK}Dyl z)Zu?C_Filob|>~%SbYVRAH8ArT#rg{k@QXK55y=(BI&)eTro@17s+zjO*X-EJ^nx- z1=L5$a+z!^sUPJmjj4q5in^ zetLw{l$rFtjDI=!B>{ioYE%_ZF?{R?P~We83^b}zn{doV;X|>?*Fg9*pK=(!!O$qz zHsP3!!YMD4uV?Y6Yp>VN&zJBbmnRYfGR!r)281!X0rcyQu7O~_<-^bLMP1zJ8t}Cc zS+XM@6ak)y_ypx4D1X5_f$&7uTG$LEo=7#2bVMqF;?rjY`JMJ4$$zr-F9VX@NE|5o zcuOB==_)JHDNiF$`A|Fnliq&^D!i?mksn(82Nqsr;V29LX5qIjR9#kh`NOXXK)$E11n*zja)L6F?{N?~o zxo)~HfX@Z53gENAuL$53;1dG)Fz^>Fu5s`(a66B-QRC5C@P7d+e&I^b;{jahc`$%0 zJ(`#F_?4d30o;3@#B1_5z`}z-?Lm;~Ndd@B+MNrmyA}6m<)*T20WPy{jmN%a-Ic&+ zty|-kDTL8Jf~~-FXg;PBsME1vA|)Li_iM2$k6utzre3KMgO3x-O z(?{yN*yWqf3qMKGWnSaSz*w|k%CwoYCQO@j=>qaJd3xE*1!=lNHtGO#r?sAB**yFI z%6iWyi?tFYW7c~Tm&Dowf@|vCHJ^0rJ+t(B#N0Y}h_)b|8NmC2UaTW17TGf`<40NV zc@18LR~KYmfva;!Yt(E-Fn88i)6}?VC5LdcoUQq%S(nb$i)xL+%UtHZ^De?KZFRGU zoNB$N3mKjW;_Z69CzA}fg>m~Fr&{mHB!ff*@?wTCT4qhV&LSBN*yQq1`FiG5>ns&C zGDR@&qD&QT7@Y$ZFWp0Z28}t@8c8EE^sRX->A9pyN5(Z0wW-y}_|T@Kj&#txb}}{{ z{^CONy24Rp3?oD(ZL#8RMF!4J#>!Bcrd?+-y7GirmlQBvUUc<#x^)(G_RU9jy-mka z(m~Q>lFKyXI*aymsXlE;N=IiIeo;ua=AI|anqZvfr`RUCHC2YsnzfV%R%ZCv+$}T!ubMWqJE8X1@N09Bhxy| zUy$)GiC^>)WMo=rd7bxF{j6ykC}56~7yGCJ>F9c$57L7h21yz_hez8!p2^NsWaAuHG(dheWjkbCM{4d;b8F~ZbZ8T&{_ay^x7 z$j*L#R25rJXH5qtg8FMUdJeMURs2a!Jd}iaB@su0i0kMR@s3OK3$#w-Wc}D%g?Zns z%#6qv)uX+0Bz|n?C~pO)SFP4+!mQuq`CP@U-@J0<01!K3k$$G`d0 z#;SVuX*&M&7H=8{iceh4wH@y1{xc1s6plu3Cuu1sw!4S=n}vE7da9O9ckdH{YnG7+ z4@c==TjSKSRc%>KV#8{w3Rd6!H?Z$u)vjtRula?+*z>SsuyjJx^#9yCK$Y;7wY+E;aBk!DKhwWeq}TX=HxsiTJJOXy<6y$ zLi44VwppmYexW`>|54mdx8L#;iax+^cQL#vv}f)?fL2|4{02uG)~>qbg%o*&RhORI zMAfoURHMOeeI+>hHqP#c_=ySa*~VF zoSR?Q10vb|E(8>4@Y>7C-2f+Rrr2TZW~tbev}SD|mSc3u1Ir`Nr7=u{;*UitjIeI(l|^ zcmY3`6h7t`Vf1@TbNP}lNFB))dj1*r0cG`x!XTxpEzr!dI6KM=EDvw!pgi#0EO{zPp&H` zz1$wRU7M|UzJgoT`vCap4g^3~IoEf6C{twXv6HPIC=0#tv3L6yNp)8d-0BhZ4H zt~1a=o6@Fh2)xC%_3$gtPhs`W9l(BoRnH}c9gS6YfPeFj+T}F!$%mxRF=KKW(=Pz( z`)x`3{41bdQad7%Og#^k4P5HjSZ1%ZlnNV*`WXB>>SWjl@Fu88>f_je2Q5kMf{g{2 zDP5I9x^+9%l$Wv8n&q^CJL(YG%KFn@XuAt~~IA){p zN3r7D1nddi0Dmq1$Zx+N8YSH(9J5h)3s(HJ%saI2hxD}H0qqv}gkv@eZ^DXi1$>pz z>36r+L%Rk(;h2rW7h}aYAHMm}Prz3RZ7zJmF&iuSnSrJLFP{b!e;NFGc6pqYt~VeK zzi`Y(;iXt=m09o8*l;IjL5_h&4Q~^UG3$N9a7Z3&dOKzjegyJ{KpP03aLh*G1z7P# z;j4gt34GwH6>Y*X8->TPq%$(e!T}a4yy*J43FcXdJcH{^5FKEkzCpZ6k*Ppne|5e&3a=le2QOk6~FitzxWg}bdh~1{!!qH_d*M| zfe3%v;_BZE-(ulr3%_OI-4@AD!NLX$mswbAVU>j%fJpu{3oo;9l7*kKFjzj~ z_tJZw_2+pSIePo#uTH9K(9d;c^6SoxKr-enem(b1 z0r!6f+#3S!9|qhSpn72iJ$Le2UV8mgsCE~P(MvTG3v>q54dKqx#wjQtRION4bGf;5 zG5tzjnx0M?M!#og=gL3Yik`O~n4u%odFe3`g=KeBJwcs~iu#(xOPgHn!88d@*EP$i zn3X2Hx55`#iwi8=brGQRx?wuTb4HEy7T{Qei^Wc*pEYXq=rQhson5a>(Mip`UZ*=w zoS0jO;&P`k&1di}#ZOSZ5?QtXG9P8V?t0z{PyeQj7eehItxB_i%&FGv6kev(w8XAk zzr4E59(Jnrx-MjRB1lKq>vfrAs6CX?cjQ#-b(v%kv>9v6sn(}-W)p3xGoJEL(HuH2 zb>zdAytcHT zZm+&mt#q^$u8ef3&p;12IUO1GvkJ(F^74w6fiuNWKio-G>yx}DJOBY-!EZk@f~Ip` z7A+16NzO|vGAapNO$HQh8+l188uD+3VWzoNi6qNV#ua9_l~HhkJ7R#8TpmV7I$g6o zWSmBTeJaR+>6{lg9hr2^ijbl2&q14x;iSV)fR!1jA8FS>cOv6Vc$@9|l$Vrr>BzJO zx*r*OwynrexJOBc{oeV>vFXUT26_M)dPg@Wr2|qxM%Qbg2azH3XsQg?gI{kgCDR(H zWau1FPsTR#V%rYCNIV&t)#0e3d>H4dQ{CC5$jGz?Djg?fqxx)D!2NXCRrfIg8C|b|Zb!x*0^De2 z>_mor+$l2D0!VmrUYbcn8T7It@?}kVgr9&E8JTp=b|a&Ruj)4lQd6XZI&-7sIPYPiL4)A_$R05EnAyeZ!IzL z7nFPJvaO_`$Pah&_y+LOQQ0OZtIJLvZ#m)&o5(8biP-d`POf5$cZ4Sb!%byt(7JQZ z$wxQut`bpRIN`LeAD9=Y(pD%U}4D^TU(Jr;&;!q~abwgw}2+vRWKBajmg&4J|RH6wa<)Q&wDl9z4Zn zo%ozz$2$g=6f0NZ^U9URB11n7df!g;0fycKdTu9ro}u?94gGCguk{H&k+~`mgr-aH{S8cIbk#sp=Ncj{bJbw z%C_vBzO}-?Sf=tld3?{|lgFPs%-Gkj>28(OeN@RteFpVSyV5(#Q(`)l6S}c~#@0+M0$b zD=ecY$u!QTPEFII8Y5f6rd2JkDXp)mYFN3VbX7x5{gf4pxmuh)t*eYu>kT%|`h4)v z7gH3H;Of()S%ybF(>p-OQGZ(Jw{FF5$L_-J!|HNVo$pKxnkSe?10_ATyQ zJ^$+YUmP~#{PQk8XZ}qN#YN(3s$+@C`PdC4Bu1l;N6d{krlxm9tZZp@Z1u`jvE?;Y zD`Jf+W8^XBpKaqN9XXtYR8{>MX7cqdUQu&{vuI`AYG=87hSVgvt=YqOko%)dTPKom z-81$1fd4JvUKNu6I&iXLjBuT6%)gJ{4WhO*Xv~=3FFyaEDAR7Ld*pSI)E`b~^j%b( zKjue$RkgP&_vdiW#{CoMFW}yYTe9S@vBo~=I`0}*KaEPO?aMiePiNN2G+8Kjif(FR z<3e2idUrhYLj=0$srD}9rPWWZB;HV7KT>MGB3U&CKS#J`)+09>{F^w<7d87OTvk8z z_ew)_A3v+GX3s!EKlNQmp}bsL1O%n%rX5RuBz^ zLv!B4m1V-6Zo)MSH>o|{gnIxya;s8%`ahBS?g;3i&YD8!>4d=089F2S6VUUr`KpJ8 zz5^;PEPZO7yuP9h7Ohk)gN2^eM(JKIlj2SkZokPug$(yl5%yc^p=_7nk#^q!zFOWr z3&a&_B|nj@UWGRcDcmfdLTwO?6n?;Ov`_~r=NEpC-&kQIzq?p9iA0JDpT-?3{58Mf z!gu)1D&(pzLY={HcHu?*<`i<7nA5HB8h)dNxANP)@O%8`7CymmkHX*Zn^*W}etQ=7 zreJy%UdV6n!q4$rSXjgF;KF8pa|`d~xA~Ul=GBEdrW{x6>OviCj_W{E;d`!Y*XlyO z0HUq7O2s;~nu`IcIH!#PM6$=^_f!4a3qAWHiYLszqbc}AbE5gD|5kZXkzEW$H8jU6 z6(1G5IoLgC0IBV+Hc{_aC~sh&-3lG*J`xgF-SLRecnc889;5>h&s3|~%Q;O0u%d3c zfhby_jKH&-*~HTC+a78*vGi*NRRX%1O)UL%M!iAJCYF9W!d}w5nN2MHUIU#h)ZN6A zGYfYgty|=T20w>8=LLRF>kc6jxh#pQ}@AVE|5@y;az z@jL^YbrL&*SgcIm4pa~cP3gBhFRNFN9umZhGz^)8Xp;IzP_1`qrzJ$Z{bhItr0yX) zJ)vAaus4t7jKmh9LGBizGrcWBgNHgw?^(@jL(ai3_nOjAk-YQeUhhh@qvj)QPF?ta zTQhy;YPuQAM^0V3u)eB(^~myix?VS|tiQHlWckWfE1099yEnoN)I=RQnJ$Ssi6ga9 zWU0I7pkd@(`g}Db7$}eASi?pR6Koh+R&#yLvXy8&jjUK!)yNrg%M+W3M$}nSfNN&i z=MoH`98o-?q59g9s~YM@E?u!`*{bTAk?!C*eHX;rKQyCi#gZB}1X1?WX3j|N$9f)a z2h_u+oBkOX?_&n(>Gm8E1#OMpbJQb^5`NCqoZOw^qJC3Gz8Ws+mmNnhKidhHoEBXb zURD@=JL`t<@KAXC|08Pp`oOc@Nq`Foan8kMOe?=nVcFR97U1u$Q>XOnL=UJB10Hvs zKLI@NI$s97={gSs^ht$RvIiRZSCj(ET_+-qY2}x#0x-@H7;AiI;WFlBel__W*e#{b z%@9MHVVN9lvsB_j&XpcXfn1XMn8s)ihLRQF+JXlWVl-o@Ha1NSGRo7ch?-QUSMTTx znZD9E`l|ZNW%}fJtAma{RGs$osB6LzuBP^yjs0n&p6(93ObY)8H)*Bx_CM}{2Z7O< zH(+3B6FfN}WrtR8w1Mjw5B$(^VAwo0t2}lCaqkq(^eZMtf-z- zyR@;U0eyzF+*6jUSXr-C;i^ToRrOVjEopYsNG)60XouEQm#(OpSyKmdhCM9+D%*X z*54Ps@Xhg$UtIT>vD#Hz@U7;5_jcAEJUZpU=;+w@7RA1Gqn__^#X$j_i7m!X!d{8h z6wi&=Z(uiJpTKHw*uP=_0~_Vxo`KcfixaSBq5@f(MCcF1nCUg3hToQ?Nh1DrL$*iK z44p`8uy%v3CJjW=tbu*Dn(Yut{W}#QMpINGX==cV*FzFXT}La+%&9;+Cy_2qYKco- zL(8R^FOf9$WnL=TXRT~sgQ!h4R1VtaL8}hD2ic=FGu)WSjpKB-%9`9yy`Y8R6D~gC@AFPO z$PGt$o)C|+1SMSl!Vls9K5|bG&k69i@E4BRD11MbJwD4{hEIE_Sfgrx4I0zCZNf1d zh3~~GJ-gvMO86r9_CVVOpK#1Z;XAS7+X|oVh%ABcNobG4Cmgd;xW0MpCpTwp9fVFJ z=byDD9OIw0r3PmJ>0b+R4RVCbU-z6<7CzC6np1&WWXs3jFyvV|I` zG{WPbaYgzKKFmVJEB}~<@s3tzSHUoHHlh0j~~&lYN*z2tAVaGQlcvarpS1&;^tS>QU$!V6yk9t+^Zz#p}EGw=ZTc{Et! z*FLQM;Qa&mE8tlH{3Ys0{Elg7XV5tx9-c0V-be4;IQ6;YZiPqvINe33eKiZ@rjgPf3iTo7*8U0I(JQz1PSAfb zZta`6)w=J*t$jM;(SC_<$&Jh+WIk)%+L!Pb>sCMitHiDI=d}0W9Jy)C^c|zT3|;cR zPn!8R<_r9KZu&;P+rGDk=b`|8PQbk`;O-Z29}37k8F1To(#WK3_TwU`@3!xy;pwdZ z@{!KBOEXJ5A~+-C-=*eFZFIiN%}fpZTZI-h*4D4Q!D_;E(ql=PwoaoilVRRIlfsL; zkNlK6H47F@DrXT)Iz5fy!3qKBlfY zgrtjmzS2C9l==Dp-Wm9`$N8m61`0nT8XD_Ijk1oC63;QtI!1ex(PKQySR5HHdrBWg z@?B1ybc#}|(J2lDOcw|5`N!8U`qWtTkYeUM!08LkyjlI_D;Hfm-Ce9)>ArsH&I9}? z`bGKjb2>~N z%Xm)X31rZxbavWw%qJaZ1rvcgP(RFceDb@m&3j|v+u%P1S3tUSWYRB^&W4`lK4d7| zEIRHP>S;#(qI_hi3|~r02PB_@jzO1qSq)I5huQCkaPi=;r>BrfzeqAZ&pYGEm``4; zIKN0d8JYBpuH!{#?#a2RAQ-c8r^=|;{+0%wQ`wveGs^t{-=yJ`nWIY5*`&zGq+j%L zWMtAWl8jFgqnD2TiD#RVj!gPRdue-Kr#xCTfWy3n4CZ!ZQeHEH?dgtDx|CrbOUiRu%HUJuk_)Ajhk0qZ-;M>+(Y1cj&B)k7 zd0c8`ypN1QuDBE#Y60YxoR{;c7qg(hr-?1hOBecunIa>Te$h?HC?f2H}k?~jZQe$PjMLKMf0_o^lzvzDIh1!qGvjY)>(=_?Ud*?Fg7qudz8E)x) zDdLw#xP2g;emdmPv&$dpwv%g%nH#4*=vAx0%23UWReE?#{@Ml36qAP>vYui*{i1b7 zOUJtnYyAXtLbwep&)kM}HkvN(eOOI#SEJ;SfR0W+r!DS3BA(aK?%8BRcCSsRZ`5qV zkDJhxq;Is7uo0s@FyUESIZA)l{~+Y~Kl|IacnTA~~Lvj30HYG>Af#pVysX zCy$pL(W#QfM{X{k&~dQBE%!lzG{rj(j_#h&-PszhjhDZ0BGPj5c>g1A+9rWV76H#YW`4Do` zayWdSG_~$LtP?$tpkeiPpCKm4;!#Ow1+=D`eiHB4m+!{%NFSgnuSji0dCyu&sXg3W z9^N2VwJDJbQy1eMYpsTr^yko~JI8x2VM-buGfHIYVK<(m&#;EidmJ>61{)9Sq5hKk zfDOV&|7rRbB0l%}UYIS;c`})in)^>X({Ldk%e}M%UNj#_xuj zQf-H=YV<_X3 zfPEVKGwh34*3TTR<7k!nZ&f@&~c@Pn2%G@Z=;8vOc8+En@ zx5``ecHCD`m~Y~yiaX13i~a)cM%?1pJmD8{AHrS52TpOD4<2!U1Nt%OGD@4qPd~t( zfF>TC#t14+GD>sIhLOU9XX4}H#ie7M>n#{nB6QKXz`3!DocIuSV!Enq6YA@$Ru3Vt z-Z#(8#%g#_ zG|`lSlLev=oe}zsfWk4aPS`j3b;F)v!p;$H!k%HmUIXr!#6@*baFIgy$~_-oj;d8s zqagOE+FTtq7sf-^bg0?oyBh_6bpqE>0WGTj?RU3BaWGfRgiAPF%xkMc+c4? zrPx}2zYpq!&1RHgZZS*D7>S+purF$u5%nZKuBc%~)Jx#zjp;p4^3In|5NXn8ozTco zNJ1**G3SUcXrvMJ@4ldsMo>2XPWQ(YZbB%eFq(7;&G`f_H!l-RxH8Exg*d^4TMpjy zyNY50yBHjHG&uR%Msf{EAL)IDCS5K;PTzm_kzc^X%iRIU2}N&${&$?A3AsISMzVVa zia58>kQ(#zzJbH7HJfl1go^mhi$oK=JzhhI$}?g#t9oSNd_t&H)xu8pQ*uw@CzSnX zext|vxk6~KT&)vCa(X0WIoaJvbnaKh*DV;wA}GpdH&=Tr`z+l3eh9H!BwCJpJI>HY zIotP?nnRwdP`0Zol;f!ibqlHrMf;;31wc6CWN9Tgmm|aM{>F9_T1|K`-~h&amAVHzb2atGLtCD(-}f z`vtGh%>C(ab4KUnPK{n!93G~tH7}Pg&(MN!U14jusW4|kw&;cl!hzh%*zL`Q%FuP9x=8U#w*wZ<~->- z_W}01PHnJ!-*qbZAQRlrgn}!YWvf664idwGfu9;j++0@)!iiOe@ZFHOHW`q z>f@c;oGQR9IDQm0pfo`{DFLPR_s3x=x1jouMGKs1!geu~y2_{}r3vGXDl&SzL$8e9 z?*8^*Q&xJF9kr#7$*j(j(FT|}efreEAkC|pNp&q0;saxPF$QwF{|fE~F82iInR?v}dL7A`eI+?2v9HHWXi&6}b&PA!;c zyp8Ybs>-1}?gW(;Jw#2|6=<2+Wa*P%jQ*QGIlPu7TbhfhuwhvIqe9*$p^~(&f?#2QL_a-=x_Sr_`M<` z=8u-&!%e3j`q!+#>0*QbOw5=QmcPhFodZCzdhrPn?(v(k8o0;*HyhrQZ^kP4s~0a5 zp_!A@!@cJunryn~wCe{y8Z#U}b-=p`VwE1HL2?wA^5>ONP$n!XGWAS7p5FM&>H{xB z@<>MxFq=P33%hkA0#uz){Q8{G{WQLkm26n+Fm>+I59%+Ga)cBhZaMwk3wyrvyI=q6 zFU_+resI=s9YO9XO7!{eEjLPeLP{0SY#Mi-^1B}yN3d)(Hizh{o_rcR4O@k6#C{cf zANEJsUD)4X-^OZC127*mGb*;D1V|bgv0qiD2o`Zg`LQI8K14EO4Dq-dnncp)$;#3I zNhE#sEJ;IHk@ShQBs0KQx>4kLN?1k;Q&|)id_X3BL^gS0WS!dIS~V zW%vu1zwkKzT05yI;H+}+@%Rguzi@MG2k{KYt@!9Jnf?EdNWTHv0L5qJ2`|9^eeiww z$H3`gwF#Fz;dxleIffp@LFiPs_P>)SI#q4L#V7o2toUBH@F(zV?x}=)J_n5l(k5K| z!s+K3{e=Pe?*@My{{z-v_+$9L1wI&m?ZKmO*d|=zg|}iAANmD5_Cha)Zv(VD;S(-C z;p=QV*bms=0!}6K(;>Vbf4%3o;J*f(&Z@tUU%1ZEQ#|GH?ShXEX8UE(;_wMqJi^D} zujh0xaxMWU-~MwGJ_3I|r-g-1`&jVv@%Nsaa8+EzGZ4Q0$f3O2$-B`<5w3WI=UcuA zd?%p4179vQUZOVP;uHP>bx!i=p_}Lb8hmf8lT8Z=N^#ItqROfA9GVS7%>x zUbJu*{9DQQLHKt=dkTKxidXpK_^TYKckSE3AH`p|{Dp79U->>rIcx>rjK5b7!XLmY zz6}=M1^-Kgr=GX3hqexW;gTnOt>vqSPx+b!UlTO;So--Cj{b?s=NkO42WL#<=TrFA zSj9_oYw8nonC-KmO@_~_Pr}RaS3Q0d|Eb_{{JnZDd^lEe2E(@pzE=2(pbdaexY8}W zz{=T={~+-EfE?kuSjpjYuwysjq|cB8?eFL-2$vk;AK(xlW4j&OEZ;F`hv5^B*(hAY zLGkgKarKMPTX_>2U6h1=5%^2^ZztSK#CHIEAO6BI8xQca3xB;Y;|RYSoc7RvUxYKj z-O-9a?`r#YaN5r{;h2rWw_sT-UVcA(yO28wzE)@(;1iD7*vijc_}@?4L-(P5J@_5? z3&(5}ej8T#Sp(lr!YMt?&>G!sw|8idTI49*Iv~8SyDe zyoTm8g=~{TLGq*SPK10INcs&NW})Jhf6PLqRXF)EkbD@ZctuwPf>;9;k#KPq^X{4lwvWpz^=R!refI2azp6!bCO$ z2@`1r()o+5xAYcEzths2fxK>!8-WVf1XQ?2ORux^WtLuR>D88AY3cJVeXga?vh)f| zpK9roExpXr2T+}fe1UI)(mlt*Gc7#b!aw3E|2HhW-$J#& zq9^OOynF3;)qVwf&;=y)f{57JkRVdo1L8 zVEok;=09?)g*RHLwqEq>EY#wGaJBD(^DLZc;dBdW=Z!z@yMcBueq@xzZHG59)Z%AZ zc!q_v=O!HOxPhKNj}|@nj~uh*;m*N1k#{Zr?-nMP>%Um~KUw&cg-=@e0}H=z;d%>O zEWFvmn=D*m;WZXoeT2vyi>tmVonC!Qevao`|DhJrb{Ky3;T0}oA;93gg9h@Br1js; zaN=}caLh*SjoJm?J%H~7|7$_Qe>?b}0{AxYR|EJ~@Sg|pN5OXl@GanN0emy~cLI1T z`0W9ldcA3N0H=O$S{lIDgMU7NQ|_Cl1n^8mO<@~iz*FM&4(@O|J_ z0emm`v;e*b{L=wk6!EXxSO+=)6QETB`3nyDR&cb094zN)5=>P#ey`R5XcQtgiU80j#a}I#q6DqX-nz#S?jNkX68L+$`4DK2NDlpoUU?)go1wFHYac*=>((9sjfll#*8k-utoD-3 zwC)&kZn18yncq&_(g&j7=uDSeGYRmYW8La=P^N~5Z@TogRX)bhclF)cx9!pI47h&- zr$?^{(1SWgBLehy0{njqxK$-RIf9=1OJ}BigFe1KQpu;rj4DAJ z$<;@ysH$&VTD2^&{7<@+f5 zNKJ%Qc$#Wwz@<#h$`NsztqArZOQ&hk%Bp1x*qNt&$+I|a%=2Z;r8Ht*DsZ9qOH}#!zI%N3Y zE-S{i?7qSX`_?DSnvjTNI5O1VSZ8H4A;VS~pDC!rlkT3OS;!a!_f{)o4>DBGF?y`V z1oUsx>Sxs<i+?9@V0XSWbKspw3MQ*|* zmxta{m8ncH?qIpvykyi@(;YC9Q8v((F?WvtTmtDZdC92bb;!z?Y-N}PCH(}SiwZTl zt{+8)s_0Z?1Whnsf#;G|FG`aL6r)plY8e^zv*shCk^Q{q+^UL%P&?>Mxf_Dx)(m}%GguoH$DLwUF${t92vzl zAm@&EWlUb^>*b`#P%9#?RHzI;RDKawZ zMIqx?aR1H9c!hL~a3uv~bgdUv_bD@f>Fk~4=fOyz%J{~6=Q8O<-H41h74sDL~0tCB{EtKIX;kx9p{HhL_p z%c7MnzMjmF{v3}K9qk=?s66u5_il;&^~kg9w`PBH(y`)m3#7G@eN)-6+MJf04JVI3 ziG=6Ezdy0J1$sDsY=e;=KlVUO`Y^qu8RY!6Z1|L>vI}ba)=oGY3T4-J+p@YW^3AM! zd*1WHiE%Bxzx~3AvVHk?ht7`Pee(ES=r*}JGj|*bx5STK9SbXc=m0sj(Yv$0lYQUG z<2N43q7=qfy7W+ORxH{Q*$~F3?ugQ~>`1pQCy!rqq~OsaQeQ;sfAHr4fc}g{Xv#t!(pfU{R%VV2%0^`(H7mgH1)_&c(3&ac zOV*Yil*5>Pd6Ywha>zZRyPc#vlyf9ZZl_jwxedo6Eg|Ci;ILvmb~uZ?zJEABZC)uA zKd+Sh{R;8=VdXSpa{9_)=chZVr)q~X=XL$o{^i;CPC7OwLK-4Bmc{I|-+p*f$L@s_ zY;GTz;O2HymYdsiYx7KQOHFPg-%@VRB)2{9>DAJ0OXsJ){_wE!v&&1!?OoFQI=0Yg zG)eC(Y@RJza)&8{30cy$3Pta6Yj4xxNco35;>SkBBj>7g;>U`!fLW6|N)|SieNkl| z4%O;@smB}Em?zMe`=+Ab%6_14ZT5QS-jm1Y9?mvTf7W5un2N)(@=SGxBX$yXChXRk zai%2QI#Y7^`^?H0_3!PauzjOdj)19<83?u^avS z$y`0dT=Kijg!S$Y3qyI+a`md6P~Lil>guug;>XHH4Kcc87nHl@atPX36L!<*J>9uC z-_y-pSDlD_4c)JwwmcE~v75dY8;65tVZ1$l%+-GMLhV6Pt>N&}dC;~N-HlEr@Be$@ ztu4>AJTa+b&xFvA$!jRyv2~%T0padE|AN}?weh(pk8gTU@9ZNnl?FOW3j@6sE6S{*BeV%*R-V2rMX0>`!dZqDiwVI39Kna_W zUT!K?E{125<(UiRwwNQDv+)YrnDtI={FuQ_3+X8*bElgaDI8#cTOH(Lki~7LY5e*jfA_!nb=8c zw}3|FqMgo9z4q;vtvrWg^GurWF)5Jj8HafP4~2NLy^K#&Sp+>&m0$TG>7!0Gr4~Qr zw7Aq#VjLJU`LIu;geRbCH;nUO=ZiXGeQTw2J~oDbeTdHlq?s{PJ=lRDkHcj#&5Rc(-JT%8H! z-iD~0zD~IP?>6JJ&%PaQO?>fP#WBl|LwVT)?{n{FLqAdJ#Vr{--<9_1_ILGkp2T0Y z$KRzUQDWzptCex@|NFty&QG0~bfP8Wn2}L{>&7A8`yc-Cnlksk#CzV2ckHinTQavD zTlcQCWkdU+fYnA!vhpI zjpy1jFnzabaGI>mz)X zXC~{Xn=DGR`Exa^JF6y_Tbf%69=0M`jC&-1X9a1+EcNI~I!;DX6)#|U&GLmc^?{;P z#5M`q1-`0o=BkAz3q z(?1?po4_ly(lj@MGF6IF{7T)Z(3s%UHJ;bj81;YE4nKu6Y8qB9Lk*$S39A3Q++uW} zlZu>sU^sVgO+tqEoP*j6rmm9fG)3fU_ow%xDom@n!P9E9nVP-A5&~7MRPVRujjzYv zh`ky6J?xLM|BU@L_8|5cHk)?dk^*jtlFd)X-?BnCKSrYN}(Jr z^HC)Mo$|zOpPv4?t9V{I&btT{*Ez0Ey0p*T$Dz3hvfyZLLg$TXE|)0~Qw}|FSK(H^ z2jJG;Amw2Q?yH#i5TE9by(JFKC2Jlx*+@QK&eJxm&Q4I-Dy}I+{0rq9_jhos+~ocp zZao9>=%PnG6Q$uMChC6+|7hG7^PT9h?(;O3CG5q}pTMo>BKHp5dR7Ws$k<-b=Ch*X z*0YlP8Qj{Zpm=-gJA+&NvvDhL%BSYqm9}Zn$+{^ofD^+O$$?S+cj7P86!_)@zcV3Z zDm)S-mT%l=1gyCch+h9c31mrZ(arqmiy9(umKK7t4}(P_c>&Js|1_jI`Q2{9;RbHO)%`7gzK;!^o}HxykKEp* z7fpVX>PmUc*~f2>&+|Y+XZ)FBHad{aR$BlK(|w3iWhwh`#$E|GxqLLmv7PuS3$Y6&x;&r|5>2y=s< z7YKfy8@%^@3O*{NSVIcFnGm5lKk!A2l8A-Ah*1F%ql}3BHH6ZB(tK@#*M^inCLbUoP9gmz)^$I==?JkUTYs^Q7-Fq0?ypyeK zSO;)dX}8}KR1YcVw>VJBaNN5}bB=hZi7lra{KeQDT{9Za8Rnt7W;C251#jc4YevI4 zaSzosqiEx=29HIF%qW5@vbj)H;i5*hKBpS=`$FBUWvSZr3$cUWDe6wJO*oJg%J~|O z-(b7D8u?kT;O_khKcRR?1sziHmq+vnv^?NerMP)GHzU%mN^w)}4}!Z-IWCEhgF5B~ zDfl(0Q>a(sbI4GotBGvr-PLZ9Rdq7}HC^VV4HkkNyowXa^6ceAR%BH4GG4bg| zaeALrxQdW@hZJtV39F-C+^`iUY#wFrrnSO^)fPvmx0FOevqMU4Na3{EIW$KdXgBO^ z6Sl+;JKKc4RAF<=6n0)Hq%h{<Q&)cDJOF|)qDW!1?&1vw% zEivJ4_ronQ;eHD4mg^EdkrzSp*V)kh%`M1F_27>}@BekZqSp@Q%^pam`rj{fnS3u4 z`jF7N5%{V;^*49TTsIGNrqK7~Td%N-g+_8fuNSi_TmNA~ZxAzTC{F(=LYu_=pwMfC zu95HKLhlyZtg!zg^dX@)i&@pH|C2&*5%ar3eRD?$f#5lvW=&+$VdxDJ@+pllLddxcyVeKqtw`pKL?BHo6N>nQ;B)VeSxdRAdMLi->f5KZUFiwBd68}hHieaJLR!jc2P^bX5 zCyne|ec9WL>}7i5=Dpu$WZxm#B}(QtX|qlO9T4+n|D(ceftEkRN^}eFX{F<7=$PJH z73s4f6>n%e^qttyoDcnopEVKx5^gu*XHCR!D0J_a6?TssR^jsKErjNbqiEa$*<-@K z?}y!E!k$Ul4~P@qErDN%>C?~<=)f9!$t__Cn`H#v?hAa$2%M&eXG-BEBk%?V&K;_- zuX5))VYIC#H0PiEaIczhclhC6HQ~Mo?v~!GD!r`|ljy;m5nd#TSsx-L62|{Jp=b2f zCD=Kk)AjJPPUk25Q^R%+&d7QE{6gsPM2PDKnvcgB`aMG>?__C3HZq%^KZ$o--#3Xl z5*^gHfl`l#BFpi)Sr7HBGrtLlWDjnHa@Lpm>E&d98&XkjZsI$f^BE}1@XR&0bmx?N zsJW#(XF90j&Na7m=gjj^b4zzl4XC8&np?VaZU?H87*27E?ga(hG zL29pr?-;t+y%SQCj?hVWE)8#c;uxBKsmIW8GL3Gt=Gz`TRi}UFlWa~4pd@I3dnV55 z?#?VQF#WloE?=l>4ANplOA$iH`8X8EnTF`x4D(uJMjr!TVbHUq z-*mm#h6=(H3%(bjDFOJ@wGo4`3Rnb4*JTg4F-_xJl8NGYSt?p*4@q8ui?C5GZN?eXxM@BEniC*RAIX67~v~ZC<+DE&YIOs+|BRfv0;nz1B z#c__!)qqOZ$*(b${Hi}4I3!2Iw`14DR+(ZNAh-<6jot$4 z{EO@*S)uMVq5Sd@=`KT>A)qcm@Y-`o0}N@Fz@x@FPr!=K_eA%FHq?0gq6dSTK2+lH zpvjQx443~16yu$Sq&*16TnW0%kTic`%x$3S4QZA~QlMUBFpykvxHpOVT-zbJiJ0dF zd>>NS1iaECDbQF$@&k&)CHY*6&6VXRRf7g~{do=ouNkKwK)zQR(iM*Z9(SE$dfjz; z@r!YWA@ubw{yNn{{Fn&B0~b^^U*0?rnA#g%ak(2EXPpa2t$v&8taVVv=S z&**1MjBgs>DI;5k<*H5ShAu+=>OW+dYoS}il<1W=pYl3lx7>kT=Cov_4 zbVUW=YS-z79S3@uA^8FB0yTpl>1?}3!;+^ubNM5cL@{ar@`~Y_CGeUX;20pP(Lkb^ z664#(_X_!{!x=cy>;NQ@sZL(}8i@>ZWeA*aoE2jLW_*%Js2EF(uV1p_s5c~EoJeys zam^638NMXq-%mpL#$dEfS95LNfl)2ce4V9455&>Do9%#@^AUsn4@c8YD+A}BX(A#` zSHsZ^Yp`GAXyVM9hFAa zD=&|+RMS8&Dt6I`;@B{ju~sa(@S@`45hWu&`Kj|_!xnOOb9D@F!#jG!=!WZ8oac;e zTwXWQUDzEl>XTzfj~zL4<*NEcH6Cy?KQc`g>DP^{t7pS{W6ddqP(YV!@y}h7o3LzY zRYL_k_Lnv}OB<@((lm>1j_JrHO35!Fty9jbTDYtRzrcg?3oSsqfaA?lx}dSd3e{Ck zdXBEwSu=%NoO!V{Q;;r~@U9|*rsqq^Ok29B#z{H%ER#xLLaorN-hS!0RVom$ffY=3 zrl~6pEGaIkF-Lbd=rQ@7Xs7equ)E^#cC^jHs<>S=5hSoKn&u&xQ{>V=8Z9QeeRqz4 z3%*@Tt22b^q;{7oG_dUGYS5*!Bodp6qam?|o{=T}@_U!;X;(Qjh3H~oG*b}jq*hqd zt&aOk*c7vL5mQU0i@>B?FR}lex)hKYVtuq==Kc4Rmnn6ItCPS?oSheqGjX{K=4scG zuj=xwK)oDJ)e5&P%zgm#F1Q;7rlES{n3D<{?8Xdd`D#+#c|(NT7`nB6xp}1=OG?8$ zWqF-5v|A)>Rx-(1zS=Dow{>uH#yd@W zV<=vV15AqD6K;4!&|VXEa^R|7xk^pHzjwi7^-9ntE0BkpdLzN?rC?t|RfD(JK|*+L ziSlz6xC#PnYHBn(aSPPqR&f~~w-=(oWcL2lJMuQWfF{&0X-J&uXdd#ar7If8Eoc;v zds099AsRb>y}Q`?U>h=j^MzY1b{C5OLIk&1@SHMk(CPBy($y2@nFe0&bbDYv%1)y$ z-X|~eMA0Wj+4+t2*wa-qzf{cDtFCrOb{9N46M4@p4o-_Wvsf+>c)D;J5R9y!Z0lJlg7}&q>IdO)IcVwfehEo;d|oI(hw}9YY7^WUSWU^CjTLBV9KL+;x1amtkI(pF@v95=y#LOkS)ac6U&p_3?SD+I>Ud_}%Fm5hf6>)Z4oUUlw&40`6bpC7hs-T9FhH*DI{yZP(epNS1!`NSW0{pYQ# z=3nsVGY{Q5sr2B>j|^_Od->3N2h91!mV&(#UOW0}o&EXRuI-nun7{0Ae}CeMU;V@B zqaWN##&==&VGm%BV%0g`v!M0+zVs~NpVGm%BV%e9d1NqDa zR>iuEg^RY4PW*&l)q?I9=pITf8R>+uDM4;!t z8MpYa#mfB5@;jE_Eb%};llmlMwj=;=QXtH4E&m%pnYS&z!$qAxTl^Bs-xE17GJWfnK9I^Y_T%gna?UV3URKA*fBW9EoB7|!xHTmK^Kf2YMgd1m>GfL{8y zSbs16Jr?)my#=q*zr{qx1}WqU_tIZRxe52;vj+<~f42PEWFY^8wtUUHdjS8fjqjh_ zSIhaE#l7%mTMPVN`Kk^{p7(ss+AH`N8{X_+0Qa8fAl`5Bd;a4r&Ovv^nB`JjUi@ZH z0l4RHcC>(d&(o~ogL~!gwHJy*HeGvh>6qW#J{&)7!RQB6UX(w{H1&eCC_jo*<)pHd zeAQW{TWM2y>lx{}sV?aGc+WJL2E?YML2Zu5!-|b*lhnS+5FP36d`_(LA-Y~E6)RC0 zg*mUC%Li9J7RA1Gq0v!uEl-{dpCA7R)=gokNq81?UI&;G%_#7PQqS^U5dRCs{_%s^JOPiE1IyI??n+1 zb2G&%l9mS5Y-7yk6rk1;ElK-)#HF1#Dgcc3w}?~$mpz%)EOJ89qPz{LCoe8dJypucjRuxWtG43O{tTO9Z4VJiC2M1O9b6>sq_SMvNhOkIax9nj zVTq)P8%xr1GYpQFs)#GZ;_1%7t;A3MGL_hT^lEtFwLGBW_i#<=|0Ez^lgoz!{+g$~BYq$|2i=_= zk3xS0zQ0p8%zCy77oYGBtoWEK-Ekvy)?M1)f%YbR!o??izvbHtpU%yoNos!)8t2Ef z2^XL6-T3b&+)?E01E_!x`gk-U+LgJvi9e}8H)Jn60Sv&PZQsL zz>9%eJ7M{Cxw>Msu*+`)Dm^zMNA>Cia@1{WLXKC@gx6#BJoTv;KYHutdCuy_`w6WQ ze(!k-pNG}+tbk9?g)VpdEND~V^PZFNa%>rV6M>RD7XGcIqYk-RAS!`hxXMMimbE?w zUoW82lM7Th$EIgH;UdsJ?3PH6@ME-ZO3$HgZhFRW=Ic>t2jTP5Bm6C_24z22KWYaciL}+)<`(v3MX6()QW#G zQ0blr|9bq3;je_o@^qVU@e8lODjqFvtDGhR6%Xy_ju!Z)5stRe8A~|f3Mae-t9XV2 zF9i+;P5=%7UINUs{_K+7aVO!LkrRdHAV;|52>&qKl|%c#V*u}?zE3)9@ldwYCR}{N zU&FtNaJ293Z-T#!zi{~r--jJayu0D6CLB8j+MkEE3qIlE6aExd>3$5pTIgHh+XjvA zU7K+634a*>b;y5__#Ow}guih43%?I5IehIL~c&~+@ zh`9ZqxA4~)o9qbj`#-`DSpP^5r~NHDV)O@nf8m;1P&|9#i}F0EXYDUSdk#L~N|*3w z@z?Wzgm|6@{|WwHeGtAKtNQQ=e0u&{k)vV#X864NAiNd-MqZRXW9V0av&XkhxZ)As zf{i0*t@w!VAn~n()+|0-PQtIpU(bs=)P5s4dv5&aCwv7~`KpFb&t3Vig;oilR}X~G z!v7HdE%?s`ufSip(j$BvR&s{Jw+#AN_)4G+gHO2lgcn)9f$-HrFM}@ztpGmZ;uD^4 z`NB5dH{r{H_IK`r@ZuHz0sVZ%%hb}2YQodEY=0jbo3`78OP+8I&ExRxhp!Sk`fBY5 zpmE1(n{e?7|0Vt^ulzjv58%(^FI@h@wG&G5ZG%tm)0dE=Jy2WW^WHDv=&@|NlfJ9M zX>0ukXrl>tCvXyQK5z{1N{deeO73{%o*>-gd>1D|8;e}wk|TTs{yLARWUSL(3O*En z;qn*G6wQuG>QyoA_i*sR_zRc6@PYWxC*32+-}&GL_zRc6@I0*25r%Ir^r`Sgp?%2R z5W>YL`~-Ot-#gs-Fbn!Z_zpvR8$RLU6Mn$*y$mdYe+&HcNzW$I_arn1pKZd$FZ==g zClmewLy>yPN!P1#iJ$xcr4n$zdY#G{Yy=sxjl7cJ9|uf3Qus z_=IzZ#-_ElTz50Bn+8qKXCiPCus=}GC*R^4{wlv8a`!<6>6zM-YjL45Qf?D2xxzb; zCBB0|<(IoCOnzHvhxb6+2EUhI;al-n{_aHHc5u!b_wy@!3;xRAIn;1iD7 zDExf<rfAto5vY_PGK2{@(ZZ z`}{v`*z>ICyT0qYE_1IF3V$k)ag_sUhkESapdRf}59#tw0Rr%d;h8-dP$niE(qzJ&45Y$IK!zI*WH^*n z5Uv9pB)V4EE<`;r@|8l=1H+dI?-VW--X?4lE)lj0TZGNR*}^7agRo9GO*mCJMOZDY z5>^Vw3lqXILX??F_b6exaJaBcSSpMQ2MJ4r#lj+CFJVj=6#`6rL|&IE_#N~5RS7GB z{lJF<`vc2>uoY$d0Nc?LApS?W#{m7+Hy7OY$zscSycn@)soECiydxZm(#?8GDonELP^5HOza3vUwMARHn5nD8w$Hq`%{@M)nw(M1=FFA@$G z9wU6Nz=r>|@Fw96!m&bM_#&R!8Q-%)eHMt`EzbSr>HnZ`matKHs_+!yyLhId{@;a< z3m+5SEc}d+(-*1Fwfc#_!XM%Cs#`w#gv#Sb!i_?_R~UP%g`7S{`+R>Va(Wrjl`p5Ik)!|6V1w`~;U|SP!imCj zg`5+|@aP9MSSCDPI9S+6*h82v_#KIo|&a;=Rw{@j}j$rGFn`51~HcM&Hrzh(iRZw@3J&LeAEu z9PeWWeTew!(E?g;GA^f6{lk@REdcE*Ep@s-V>&2%D z`Cf$o(F=wAj7@%~@HF8G!XZLF2jPG49Q3~0?{|f73I8ViFQGmRM_&-%CVW!(xbO$U zM}!Xw9}q4R-YNX7@MhtB;T+*i;SAwq;Ur-~I7WzPd6Pdps~a3D)Ww&uPNN4;Bfdx$RsUmW6hg3k)^rQn|o@!P;J4DmMb zvqBtuimf>*#9P6S3Go*2?jha`{w@nu`JD~^T8KA+|1QKEz<&|qb>NSMIDQ{%)`d8J zCu{Bt@hRZ9hj=yk;t;O_pB3Vj;GYcf@!%JRcmn*a5FZ16QixZ89~0uEz`KWdIrzJ$ zC-XlX{Iw7-1OHu!mxBKy#N*(Ph4>)wbs=5?eqV?egWn$FMc|7=9QAn3Fuv&Hdc2G4 z6oda&=*J*m4S5uNT!?$%?fWbd*UxZV2ZQ?&5#=ZsgWH8jr{RdtV25y} zaH+6W*d&}PtQ1xV%Y-FD{7$@lbRaeXV~Al4?w@)1$Gv{ZZ^Ls!6nqtsobBL9oUBTG z7IJ%&v7fsSUKH5J^|s`7&^ajzIi9uI2gqkN>Ng`U_Wx7PzR)(wry@bZmt_b`4Zq-xjA;`CArIDc%MQ1)Y%C4`Eql- z%;)9iSeYL?Io!MC<`@}HA7xmMj~OL5#8T63F9^Ax4W;vYAv;%w;+-3EGlvg+xxT*_VgLh^d9 z$ytjj0vD#N?&;OqnKQ;`4(375LBW{q^1?oxaWVlrzHv$vCUqE7(;FHzeZ(aW#!ZCC zY_8dgDOn4qlu+u{DMgm;Qk^ayt(EKI`oLS_WfXOm9qzKs`pjl5gRW~J@!E&Hh=i&)d#=6Y98I+kmS&D&^Y!A67 zptTZIeN#n}vm{4^XGvniL-X6gPi7(3GMPQAWpV9wuvqV!TW*x>ruK8TKg4yPGlIH9kQY$4LxinL!jpfoh#Kg3#v~Q)`wbC{tHIvMq zteMTP-Tm^^3b)&(+y4^Z^|kF~X{|MZHmP#bcKC_f$Ia^rPsdHI>6M#bY5<=P%I zUe_ZfXRbvaG0!~Tr09HHeNJkjJIjIZ>m2LH@9g~kYtA9kJCgk|pMx&L z;}OqWcC;B&z!#M^nZU!)q4&pRcpksRvvK&qV{)70hua_X5H_3%q~p;0W9G8qiVctS zurZlWJM|Z0{cRdf-|sJ%4XCzJpGSC~y=;3q;{6%Lhjocj9xT(cV}j>gCczxC!Dq3o zdpT~0Rx?hHQx6}s=MLGx{M_t&IacBsc@UHnczBzaaCHj)QGK6va zr#8U`%%vPI9enW3RvzdtGv&eeQ>J56?(#5AUABD~`7U)7!Y)mVJWF}x+(WSgHdv&%ja{M4Ra_!}4Y#>ILj`HNS%}7VC zy&QjtA88vh@rbTu1#HNfVI$XGj%TBCtb~ozSXon#3>(-w!DyuKfA}11U@V{a%OkLn zYcI!U)vc!D)I@-V(sAg$9BE@20yrDo1C@0jM}`f)P0%AfFC1WzfPBBwu^%=RIKxJ+ zy&My;Q3@Ls1Mw&I$gsi2V0sYx5pE)^0y}`!5b}~%65 zTYdVuy?_pK@5Z-1$=9t2Mz6sbnu;DzY)h?N!$}D4|}I|gMZBIZsgs={hzS6 z*;`wK-L>rAW*f01v-3F+QfJdz066%2e)ZwARG4G9{k--^km5c+6osYs@kf zDVu?yA4M;4ZpDV=3&GjRB|8qW0LJvW+@yu?B2(rim!R|DT)5|xriF?;7 zgtbScm;pF!k6%8CQh@Aez$Akirs`iZ{m#f?!J#u9Er>Z z@;NecIU~2x6q{&HB{$I&n`kD1_qdu77C(;E%>eaGd@;rphbYp!=SKn2ydFipDC0Ng zJiD(z@5|s(5Q!axXa-fs_T&hqXmnIkHF^e;n&4Q6^xW$aN6kvl zy_h3f?`Bqd?)5U9<4NsG&)urw?%5Z4j~4Vv#_07t+K5_;`g3TsE$A1i`ccS>^J7K* zUu6+6aU&pR^!aB0gkA~I0-X7#czSVEfT3oOhh8^;GDZ1jkB43d;M`4W_ISYd44hJ4 zTnO{8Lu#XC{fJ(QKap+?_#5Lmi+a-DIajF8xx_QZ2<7+T`qCE;uuDfr-D1|=>|)jh zZawG1@OsX%@DkVElh*%qQ?GuJ{*gqF27Jrtk+jWKsC%ZZgxxEBCG6hGg{8Tzi`O@~ z=5vu<^SPf}^SOU=(d;a1P95H=rvzBa(v@;jkD+BwP$4Y?CCA&ADXjpu-;5}vHF$Vev1YwfvKpO+0 z{*6>Sc$(-24g5lSnFXGAmggk~6kNk~m`jWE&K!VAJrP`eGx{AZ>y(eeIUHwb8B6+} zX+)RM$%9Q}3r=VeHX7%p_-hXOF2xyI9h0IqBdQ^oW;MC8<_d^RBF#Gp8w|ISAAiNE z#pAKva2?%jx>?rxlHswzb0z1oxk+0Ikd0NiEIqajSuYa||6f^PGPrt2zQknOYIM#* zJp1FtRp~2FhRbhO#-f9PHT)`4S8+q@_E=I6?nA3y-!})|CNQyW(7aEN)+U5eAqw&?0S-El`5@%X0J}@ z-I<9mV{;m8eFep5LF`61c|uj{s%)9%4F9apiEb&HC~7LtUaYb>P{(l=n6*5(o(E<8 zbxl0)PmiD0yd?kRi@$XI$QhIS@Y%l(XEV+=oGnmd*t>A@*oQOBKQI4M& z$Ht$T9tJDD=1YGb4&-f`X<}FxUpPF(S@Yv`%>52J#Z<(>KGyW*cW9saj{5C$^ff8xhyJ;gOG7r4ax(%mn@xm}58%C|LGXtC= zK7~okJU&6hr(cQqWKAtL$qLBlP>R^;X`R+IB?Rs=h^1wJ+v;kLrgosiuIJ#rkY$y?#i zKGhi30citofj>Ep)ou7Q11Hln6?z=2f#2i9(;%AyJ#rkY$tU8Z-ucjDQKRk!^Ww;H z1oPskcP8|zAnyacv*CFf?2%KCd<0JF;pOSE7vO#f@qQGD3%!mU$7=Ha@UKKT)bWQ0 zf%k$xIgZuj_^mz0K8`BP(?fZ%jao;JV>LMs^fd(Y--<0a<3}Mk^Vf*{%@PsbAi!WL z5OGH1K$tc2;qV(a_8>R&+VI;p^V+C~)9BG2^=J=nip@L@hb&X-qukj?5*-gjwxS6j z!bQgbnVt&CM@e2TIrGMF0AqI*kl|Mf&k*u0lJYM6AXc(?F`kE^M?^bs&f}$VB;Vmj;fKTU_!)aKG`mNe4)+~Cmkk7Ma|zK;H2BDw{(X}+ z%Am~hV3}?mlKFk&aNn-^{1!#n9kNjp585|o!yK}a^ILu$Y_vnOEA6^4P3~~%$n`Cs z8DNBMxR?wVkK1&0vtnaLHn6?K0`c)oMQ?SurUzYdKL-7rKZE&26B!mm&$|6jb7x@>zK+#_#YbI>FX`I72oL zJ*J=zHY!jaU9wRQ8!DO%8*Bj>Px`m~m8ch0keA@wIgf3yp}-k7a*Zk21skOZ+aMdp zko}WkBiERM7+$FPZFQ+^bRiw_3>$U~POk9)WypLT!gLI_dFVo-aBtxeq=OEYdu$li zpaLfFGCw8Xyt4-50eFk!39;!Hv#&WIAK=kx1(+oOrMI{VE#-;EGRV9dZv&|J|k-^dbgtubK|Z*Au5kUZ&Xolrehz@JUc3)SDYUCpD60XE@Ydy z5{U9nVz|MP?SwXXy@xY$`9+{MMT1R>mO^S%G}xr*VelxgUu5udB<2;+zIWo!UYte0 zrhLe1$n!pf`qi&LJ9nbp2HXuOUV%T|yk0GUc(gE?oZeSKLXBv5q%ObrOgO(v$^j4g zUIE8nCTEO-MsfTJMN zy$q&)3}<9)o>{t~+!|-mP%m;h$3$4;<;Hjoq_!l=jdA{Xqh>XXa+X9ZsMm{~`cVun z39dpnJB+1Q9M+_GtfrMw_vQ+Kydni=3`p}P)-)^J|*u2{&aKgi=G@8lD4sU=BSg@p(5SfAQUWRcOgEj6uLnu zvG5?2?%_cwJ?tLhJwrQ-7vRdIjXCL^KIWuPav(|Hp2$akWTz-(13%?{eNj!!rsq9- zo`ct^0d_1(u^WprFga}HD4XtAZ-Uy zCz-oiay#2Lh}Ib28iF-Gg~k~!w4E()GQ6FHM*2_`Gonl2G6zLPMpQ#Ecco-xyq63& zzSYwAC@M9gz(#P#N$z<21l03P5cUwTxpjjpcyBd*HTHQGa}E~PFPLSv>GXKJaHCE5 z_+j+$2SX`5-b67lBegnuZ05tyn&vBWFhYn4b91&m-kH)ycJN-1>nZeqZ}-`ZhhY3J zk97N4^F1KLK-|qhbw53fg#c;2K*Rd#xAX0Ecl+hpuc8`@KL5{5V}xOjRCCR1~J zSu^A*_h_L|zz?t)t-DZO;K*7p4>`&x2x?}knNpbUUf%R}I6m}av)vS?9%T6`A|^Y4 z=@6GO`(BBZh8XPjfveXPQ_P3`-qeFS?lyevjj| z#si~~G41r@GbhJoaf}wXQ{xz}nfDHTjAOI7rJ5VBwfOdRE0{O8eHyn^YS1>LS zZ-aPx=fO7#YVmHEHkyhzL1|qfE#BoM;;Rb&dwhXIjC>1G#C(URN!~bRl5eUM@!qNM zyxL=Y{-UiOhIDbB>92??H$sln4CehVB2Pu4v*J&4`=M&1YSU;T{$7*su-(VWm9K51E zX1=juToZrS|H8N>a_W)uqS77;^fAth!EfSW*z|r6J#rkY$zOth416g3cY@>jYaKa` z)#N|HSpqw3Q;5r;&vJcWKGZ`$FZ8c0sj2Hw+8-m z!Rz2pj$<|XH26osSHOQZ_+{`X$FZ86&$Q@HpHr#ybV9ERvhzaeAupHzcKDA1A0F~2 zFT;uYG6&b-G1kc)(2GM>0zFel5g&Ok`1AYhc=)qzh{4~Dw<9mbiQjiL4g@#jyij+{ zIIn&{>J$NS8a>!Eda%PfX2y9TJjJ*xnC8SF1<*0$%ZO2N>N(z9;V>-8tcQ*;RO8sU zUTc9&*D4{e5%i)-viOU#CTCQM&xY6iTi|m zg|7);5#sl0^z3_)7kyg%=fY0mX5pj4hlOi|ye~4ouL$oJ-YHxvTr6B9oGF|koGhFq zObB^>X+OQ3hf4ktA?l*hHDLDqM2)VZwwE6`*t#SaR{>N-@KW#C*>&2i*s zO;d;?Uu&j@_-){oA>IaF5#me0%R(H#k2NJB-U1#A@n-P-NQaBR41A0HR|0o|7Z+Q9 zemm;|kA(OR@V}t}z_FVC+rj@3;xB-24e@Q@kB0a&;A=vBEBIX@z6E?yha(|Y z4Q%yAgUjFVK)TTg^8WUe7ti813iYsX~2MXdDbHkntj_m6I|GC7#l|k;B>{ zUVn4i&AgIsp{vX^WO*UZF>*5_tk!9A<2;jfz>VL`7Q$SN?87&YL_KBArOW^x$9o<> zX8MBqrgO}=&+>TkaO*FfKFY1Xbei#Y>o1*t=ILiz?YbVdwIe2f^5XFm&W}%?R5NA5 zc>Z|n(6;c{S`hJW$B%s}9&jE6uXr%xJqz6S=ZKjbPx-0vkKy6}7t-U+a^<)4yar&? zQ+eJilJ|s7>JJyzINlB6U(fTnx4~X~Q0AIWQ|Cp!F5vDjMa_24W!OB9dmlDmn9sc` zy`?Ybd+RYSv=a-ravh$fBf5Ei0hau@8~14QIPMrJH@w)s|`K_1yi^4~Q zJA`e@KOb~?U4EqecSHJkU2au5oP_is|yS^@Aja{YK27UUs{gCc^gTwKg`?G`1{SFxM=ai5t>&v(Sl}!_=X* zLw3i`U2JYO3#QMSi^X44ZY)8zcrVJKaHzn^iKvIvS~zjm?87L`Ynd>A(e%S>WwVri z9fHiHT#KYuwp52^C8&%-`U@v!ByU7ZIKWZ9&xokf)FA57tU>%g>MTjxy^?zVs70Lc-jpA z)Q&7r(Al5$iR8Ay7exF^k6*tp=j z#s$Ib6Pul68Kf&5?5t#34+I$blLU8xxr!K`MH z^64o(H(|3uh(j5kg`Z9EK%On;-eQ zAWMRh`k7Pt52dbLrmb3VBq5S5RJLmzq$e1mS<|?1-fUFJoF(OgWR_Jm79~7yG2Wsk zH}b<{Mto`hBd(i1dy#wBN^1zyR5RmBu1$qOqg(_ch%e1jZpF~A@JL#)EIRlt2G0xG z%PUKujJ&v?Y54s%wfV`^z^^j+`5fv8mnEdC621o8>XTYtnE^7=8=CK^&+2LQFhe0_ zL3)$5)JQV|AkLhtzNbAwg~F!Q%$#wg=_Tty&Q6G+;mOp{n&ZwRYoR*N&=tnJ1`o_L zbT5$RHPXFr=34J})S0J_vhSyLJ;IB|oQ(1s+t4t}G;(gTA?*L=z1RPR?lHW<*gtqB z@wVap!o1W0I7Oj}JlF9l>#^7Ah~rhoeD~zHEgnZQ2a$SvY~P_rdwA{g_RhrjEjprJ z8~z4IXkL>U8IV5D%h`Dz?_fN*eqi{Z$?ze2cxd3vGc(^JWo}U?J0@}9yOB9I9B;n` zcYNB;pTaAg?e(?Z$nT-&p{-QG{D<_Ho*;)HNBZhH2P@m$xN6P6C|CGIsZC!SI`HvY z$s;{|hn(ZqCVL512pr9@$D-T-d!vjb^-p;29xq7x_2^`WKMs7GGRKA!GbM|&A z70zB8@@op*4V{x!XD`wr(1P;YWO?Hr1D($a?P## zu=aAzvvc;oq2HTJU;O5vzGTgBt~qyON89|pkB_K4PE8o_%3$v!woJ3y%QgS*obzq? zb_?DJe(*~@vf4wph0#i%zxGGj`vUr?c>MYZ?d6)6*K~=s(`mt*dWChAd?9G~($aV6 zIeKL^Haz#H;!$#?#n9iZ_V_ENPI`VjF<`+Qs?Qs0#gmZL9^2A|&C}~M>|JgHqFFY_ zhB`TtkkwwUd3?KM?@HCb7Y=K$e%>6UtEG04-P5SHYJ4(k&r7JhI+cp@2HXCv#Pz`V z3LYuxBjGK!@(we0#Vh+N?)?y;>oS<%_gA=i@*ujl-w2NI&-*t#vF`nRZ~4ASPptdL z;EZ=6~jquKZ&jdO5$u_}3jg_~32rFQH$#(-}Ak9ap{(! z@-1h2AInReRW`&MFys|){!&bp9P&kP{*(Q^Dex~I@>*m*=9Wzv^1e5}qX+OcZ~n{u zyeUuQAGiO}agk?TK54frzZm%(_|Tt}*VJ^_xLv%|W8Akhj@Kje$M*H6FuW_nm-CZl zmgluS_worgt-A{o@0LZpN5i_|G|*;Op=a`*ECU-i{ZM`?m!vE`{69k1mH9H^(qxQ3 zoX-K!3)|^ZUD%lsZUDmBynljuUlf^-=ZGn>NaT_s7kl$#h29i&;V(N0b*gM}$EH}M z`yH5&_0pOXGRxY<-+t?r`_Y6K54k-uzYMm9ERM{7GU`n^*wcG==QwY9YPwR>y|X9s z7fL(Ej1v{@+Uj?O?tB9{TrU_=*+KuDJ3m8d52HSO$n2hzaBhzbV}GOk02jc zjx}L-Anf07%`Dd=t@~pUe&@Kzp|8v2#AC^F@|L3kDBhWWm@p@#UQ7Odcm63eovz+6 z|2v1IhQY0;c<09t9Zxu2=K4O6Sj_8tFZ1=_q2ud1I`Mvbc!vEv!#;nQu%i=?XA9ek zuxlpg{(Uf?YkqpgrfgwnG2UAbo!_0Or;&!*(p`e_r9_@nLT)EpD%lp`#(y3>xCDC7;EcV0@Zfly z$`bVj`P}ToImf=&Rr669}{vP z3-^+qUcVVPC7$Q~nfEA@zMg2emA0V0ym{&UyYszuybthx9ZoOv_A>7IJM#yb@VrM@ zy<-h;>g)Bpq0s9$BvSm>TMrye$+x?&Jb`=ffq74M3iCPyV~acT?!7-2={$?i3tRcTunx}z1}n0fQQ2EJmNL?$)&L8?vqV;CJD+qbf0wgU&n8S_d}CD z+z(%7SY4x6;pgsgc$PS%oj*`l;apjS>tA|0o$jwf;eHu%|2*WzZ!xg_WXS#Fko!j= z_ok5h(UAL*ko$Wf_xg}~9o)n5+lP&V6*$=r5P5D3xp#!z&VRRL`+#hF_Th}fO?%WK z51->hvg(lA=}eQX2^g-YY%6x-xq9ab7}o!p0aLGk-DOGm0OIpv_}`T|H&FFdsY3^Q?U?-F-shtk+IVoP}}9 z^Ygloy?&N{BXQ`ubg|6Qz6E7Lo9M?acK$t(j!&Si9@5R5pNQOkKhv}B)~ogpiFE(# zlV~%ZxYc_${M+HP9Buqh=8Jhwzeg~y>G}AeX?67$V`-nwR&TS#+ws%dP3iGwyT1P` zwtIenbpPpr)(@2K4`jRc1KG~iPOuKLtvFnLJyd!B+ji|s?ziabV6HM@{YLwj@m!C# z^8N60&!NiugZy^de_FfQ>m2%#4`Tm+BJFH@SvJgn`ul%+8=KCN_Mq)__mL+Kalbg! zeeu6j-%TF!^UQsh_skV&r*AiH^+)!y}<^&$+a3?bcqi^{LM; z*!^kD34Xqz>{L@IL%u$~tYBvxl+l z7*dE$)91Eud8x73oxGv3^=uCV>lQYi&DEl~6jey;?CDO$j6~pKQ|B$lz_PQ^%WGDs zI@_DOXwHnr1@ytj)L}ZgY2JbqLDjsuSBDkI(`DnDrY{KVTsqfI|IQ^(i_@uR#O*xN z;|t5v{m!2~kHwM9;P`oqX3TC3OU|1&Z}!<*~p@g&4ijy4W+H=CLBhMYHBM zOqyv1H>a*hhtwh%e+3wkl-|^+5{_Ls$?mU?)$QEgNukuB75w+{|H~3sFn8j-Ni~;w zH+;%Voa>F7J{O}$<8~YLxNEcG{CF2XaoEBWM|k5s*ES}lafVsAsJR&pLt}$?wl^#> zEOE9M_q;LZp6i|C&7CzH3-t|44D~)aVX`-Il6T^;`V+lj4c@S(SvVJY!)C)h8#o_) zK5(WttZJrLHY{}wkI&9%kFX4V9M*5+z1=marAIFCY-0A-D!}v!I2;Tm1q^{#i z$t^gsmMeQ~BRwN;gnsZVGypL&=M(VEe->?7r0170;o4Zr|2VuOJ=c)aMzqH8?|`=< z#%}ynQE(+?y*nZM0cCZN6%JCHs%1C4SQC|we+o+Z%QxKQnIbQ}k~* zh|el{cNJN6$GpN46&@G3=3)KM-N>BX_1kpn6|R*YIv_&&i;8*8?iyl4JLVNStwCyY ztp5Zq3zC1=OR^qNudq&f%Tn|&Iu6$J@7gB)fO>^1q_-tS|MK4&`<>Dcs8_gEdizuK zuNrDnUtv?{m{)i}TBCGFwEmZzWK#2MSr4dJSRuXU6#ZG{#(J3z?U+~CBCYi)+V!K2 z_9(0Em{+(#TDw!UPh{22U%p_~r00HQR{xYL>MwstX$UAS_t=d;k)BVZvh;eJg5JCE=ULD^tS#&Hd@>F7u229V)o}Mc-w9(S2d3uu8#JDOkZr zA&4wrhBV#?|AI?Mzs%p@YSK@Uex(DxTR{7^klx4Y7Rl>=9m&ckK`=IqS?I&+b|#b9 zvuF$;hQ*fqF+=x3uEmy%xavX-i!JwGOQFf-<8)1AxCc$vT$Z-sD+iCroOhsMv-Y6L z+Mf}d&Dw(|YvbT=8>A9eV(-hiSu~qeX(@ZT_O?3?M z|AX;wH}Sg=EqV-!%wcu6@ozWr&mcD?wcW)3?I8Z`jDH{FcYBLe$x7@2melWmhRTGJ z!XHkUkGyJPbTP%zLi32sDS)z#@l_M!(c~t^S51s{;5NsvGRAvB3)>abAX%|7?oP(Y zZM`FJm>6A5OM)0%gBag1F+LW=_=bsbM-by1jPW329Hr3CO6;4EM&6`<-tr}>459}Z z|2rmr7h-!5|9-}2?$+;^_|HHY*&M%P;-3m`bNmkN-vC;;Orf0>8{@nD^#<`f2GI`2 zf6&D5LX3hbTjH&Z&%}Sw#Q$&*|3MQ!e{44XgN*+j#=l4LJ1Yae$NWbkY!CC6-VW3Fk%u>4Z%_7Cs`O_Di(qlR?2`g zWTWjK;aw_7ML>~?8m6MJO@#}zCrHK3jMSu}uT90eAQgRWDxL{a(buHn4W?qP3^+pr ze#o-u7va4J6+Vq36-$|lqirf&AZ~bKFGnF-Mw^PGZ7POQV9MfXn~F*ZY*`#_QgJPK zp__N&4B2RpiST(KNJT)Aik~qRLu@KsptV6Nz8Iuph)u=nAQeMwDz*fv7-CZKXQpDB z3^+prxF|&A_z3T-Ohqb1Dm*mTkrQnyTp+V^6bd6UX8;;qTNWqUR1BuTl*NfQ6$uDz zS)6E6Q4e0YNvUv#Y_umu?6Zzi5m2P!Jf>o#O@#|I4a-Q`D{^0uijg)IMqpAg(xzf_ zkcyEe75~Ll6w81!G~hXw#ikiXmv$ZCQ-AsTfFsNyTWJ ziV6s9S&TNRxDvduSq7Y;0e@sF&Wf04t>sJ7C{pn-Q*o|Mg$q>D-<8ETf>fMqQ?Wcq z#kn>W8-rAwYf|xBred2?;S3FUjj0$Lu`djTNb&Qx4rQ{e)&1*te04Zbal3v4Q| z7`@8k0-K6*2y9tgU{YZ==PVwE+h?T8T6NZT1XgbjtX5g8*9BIqtkwGht5wD-w)w?_ zxC}T$1I+zyV#L06#L_78_9>=ficN(J)TUAPkvWBET5aB@*i^g~q+*Iq#XxA-yiGBw zxCp#3CId@^HrmS~&zWCd(SUbZ;Fm}Ks2^e~MWVjKMAfQjWW&wwi_BRSB&yaX>ShW| z<*T)cS{o#))+FlZOw`IWLj$18<$>+>|FCq0T?tMY#(^e!n*zM2?q)18|l66!N@C$u9tf z(UO-4v69ybc_jw`u%C~s8;zE92Xu>-^tTWva$F(uc{D>@gVL_uLP)_!L~LX85m z|42XPelqHa*=z&3uZ6p4Hgsaxz9aNpe-Gq?Z=pPYc%-PmdCWH{{ti5j<>fO`-sBz2 zVlnQky`FR*(H0lnJtEPg0oCWQ`&-z}DhfgyO|WF#1{AT795<-$Ns6oLw#Mjbx5m&8 z7kE<(Z;jC>yfsGOWcWcaSCrg-!faI0FMUsp{>eQt1}JE^3kT#OXt8$m=yqbS3kM{# zJ5alKKxLc-`@gZ;$*Q*ajo7^r*a11M*4-=8YMUS6-aoGjCMn z*4TIQ(RZ^xzh7(&cFDLk_DWu2K;G~H`S;wE*A$5@%KxJmYq=FTF0Ud2-CugKU3sI5 z^Jm4@gH4L+;G5#QvN=z$7_#R{s23 z@{987BKZsQhDY-I{V;znaC3goALf7hhdVZ9CiI|@^>i-Z{SUUwUSkPl%-qbKf zI%0lo(M1J$mGES0^Ah-Bx@%b~2X^9cPS+6|@fw<>=Xx+9a-Ebra9862k?S{eeO(Yu zMN`7Vb!S0j1(|f~%ria5K1$0`em?vk}~Zb*tY$+*>yl5=fRv{}w=Ns;Si=8AU;=z5G_NQzvia4DVyq~*%3B`M;|8IKJ~k?YCblN7m5 z-QiKIjigSKb9PeXx^ml-BG+5{LQ)iT$Oc#J64&cGJ}Gh?t8Gb<>pk6^6uC>iKPh4t z5s%?QB-LGg_T=+`$T~9r#wCh)HO}d#bVt1Ubp0t3)CoiT$2e8jx9K`7q2ioN@o>l^ zi(waPDxNs3$|cL>T$L1I_M$mT14EZMn;f;xgLO(y*AeY;)a78|soW8A{r| z#M$QKjI=UsXH*Yo+pJ-NV5lC>nY3N+Y$wxQpJ_Xz5*<)_U1B3%MzOgr-IaLHwu#QT zK2GJ%K;@ElIoBseT(gnKwxnpUoKd{D@<8<%F6Wq}$aMp|F54`X$fck)uwCPvw*{i9 zHj?CDXK+~%S4P&H%IrWT~0RPUU<@DeI5>q!1} zhPDTxE^*rNAk-zJY0re&rZnP;g|)w^KO~SjmXnsq79^YMgUlAj*i_btpIFj@zkB z4OBAXb}Hiol^W-)4n!GoyKdwyfl5Z1I~DWxYlT1}YhGJC%)rN{w@N2BM6(UH9;)em0^k_1vkH1}YhGJC&k9rN%i2 z1)_|&r^)NiKqVvJPNgkSxg@=4oXYG#rN%j115rlYo8`4PP|1kfsdNP@m!!w-RGtY` zYMgU>Aj*i_bpR*&=PYxlGA2;Th})?&1S%Pgx9bz$7^q}q(y6QsR5BuRD$4?u8s}UU zh%z$idVWc4)ZAffSfUP+x1O5_oL90v&dv zcj>it!iIa^j)<6tSpWPU*s=DmrI9BLfhy_jK zXN)M1mtk!B+^bJHqr7~?X(L9TbyB=+#`J~QR1n@q_w*5`FT8HD99U7hQCX#Rug+qk2wc&$@ z%Q5ZbFtO#BlyaC*ZaN1i9)0kXW}nbQgok)VOS7_Y2B#mrp5>Y~gc1e z4`Dw~@J)c(V$vyL_b@xFsmp#iEQNEB?~dF@j&_d0ISA)qoN=7T<7B#q;XDy%8P1w# zA6ec|@|73w*}8c2AO7PT-L`+Xvi81hm)Tq6TkWL$zS`&=HrHs=++#M zHxwUye)aav*Dn0awtEKezGBUZpZxvOp?Cdd;n$D%9{zjn$A0b|yK4Vsvwl-@^JO#7 zd~@qHm+X4+ikClr!RwPCK0bQfdpA_9zj;AN zzp4Q{FZy(kj}4ywsrV0`+Yo*DvUlHp`ot6F)?NMF9e?Qm=y|_bcKdNp_Z(1iRpU2S zaXswaIQQd>p+LBoEY^ndDsWcfoQksvXDiO7I9KBAz_|(MR-D^$?#8(vXAJL4ocd6P zvjS%&&Z#(?aJJ%HigP8-4xF2CZpFDB=Wd+)amH{lN^q9ptiV}`b1KdzoUJ&Q;xvQV zQO@r{pNARF1&pcV)C_e4KcJ5A{Jb!cUU_0)4@{TKrS` zz;Tm!rRw{A;@g2dm`BF9OZsMD82G1T-wcifzeZn0%rHgpz2ZNVJ?C$RG}E5aV+It0 zU#I+;L3Q9Re`d55_+oWxngPn-mnpwooRR5!OX)WQc$z0^?)v>g;az#XBJRrfptvia5?m+RcjfsI+~lr2M#|q^uSt%>4iDEZ z;pbv{BC@qhwAb~_=-1{&#*e6go4pnsnZ`DV@vtmde#`@}BlE`im?oAZ)5`K;8L}R- zF7f&>PrRf}oH2gv526j%j_)10qYw9LFZ^of$gjRUzwf)v_ujbor2ZpW=J6~2 zcZ+&mw~_m~zczpIgWtK~#eY8JzgiJLZqHrq-+KC8?&V%o{e!P^&-X`aXN)RuTiWx* zy;l^~UHsBdx!?P*?jG|9_j!MO$r=CjADA+nd%Y)+$jLZo;#`dLPMiF$zgpk<#A$0 zDG&$0H&eteFLjS`j2%Vn`I3l({V3uPUIly`lp^+pX=`>fd=erKZDe)9!P-eJ_HW4+ z#}87(LCLbk(SsCm%(g@v;Ybm`U`S+!F+#-YL^98jiPYjSYiV&vBSq|!Q;Zy=ND+s} zON)a(DPnbyhyxWVV%MDlawsK5+mc#l>J&sA+^IxxTqLzP2SBzsOp_wc8<2=YBPrs1 z1&KHylOp!@DaMHq;lg>GfdKOywW?S+7L&@HaG~&Kauh_I5G5^+`lJ?zeM)N#I7RGy zR4kk|MG?CoB?7YtpR*7cKBYtmzXC{m z{JP5Yl><$_Ec&HD+8YF)SG7X2n5?KN2R>wvU3&7#lY6tq_jq`fMOeyQYfAhxQi8f4M$1*E;0 zML!CpJw?K*pB=TLxr$N-g>&K&GeIqF)4LdU{#(_w};jx`0g24vRj=criVjfJ_fZ zj4?fJK&E4fMZXoubhKFXn}JM61CaLWEc#<49|gPw@^XuQspNxzlOZp$==TCL-7$+k z2kFr+-F_hR)cT1=ySXujkbZ?ouc0^%LJiVIf*{k6cU2v21Ac5x!ZF9kB4vw@@G-(=CB3Oo~h ziba1E@C@*Bi+&MsKf=X;QOKhf{e5^(r@cKuJnvTRw&-(gE#-WV$D?)?2k!#?m6G2H z><>9d2?PBW$s2@Igw?>)p;u+muK=C~KFXrc{;*TQhg{s!R5;2hcv^w$Cz zz8&~6$T=7r=yO5qlfai*^lt;c4!t%Y^|{zY8T^|q`c0D80Z)XS1F(TU$9q%18p!gk zvgqH5_ae&MfWshPV$p8}9tGZF(dRoO_3D7Af>qNj`qh$G0!twuZ_!Tx8NR}zKMKh3 zr9g&{Tl9;8Cx91O^m_prE^5*DfDE@6ogECves`eX1*CjCa46(2SoF668Gfrpe+!U$ z8-WbZB~TcCt>mkK$3wo-qQ3&j@ON7DmjW5S70B={7X2p4>ws~{r&;u;0vW#AqF)7M z_%T3+udwJ3mpl%{duP=ki+%}^;fpQ$ML>pUXAi?4z>kUP-wVVRfK_`e`n!P)*JaV) z0c5ymfDE_QqQ4o4{`{&<7X6JthFfpZ?*KB~N+82=wGzh1zUV>Vw^{VtfDFfeYM|c& zWVi+(!_`^zrvQ%wueRt{0&%OU8gJ200MW!(jj`xg0BNTbNIP+hezD{+;IWWLE&3ji z={SJKgy~?vI>YY*GJKaspZ)HXKLf;fjVkuV1N|*PhVQiKZw6AY1IY0F?gI4NBwqq7 zfxOkCKO2aqqN>TFUkBWS`}s7BS4{=tr&h)9K0v<;Nc#!k(U6a^=vM%lj!_oZ#-hIk$a>ak@v6;0*0W6({SCl>!cGSeO=#6x zi~cGg@5{@8Xi}=~wCJ}14?x}wr2jM^ep*#iE&A0!rYiwNRjV3f(Z@4_%?A*ds;bnY zDR-o`56k_>K$iF8z)ip(0XG1D2xK`w25blZ2XG~DBar3&ec)2yBfvJ`!$6ih^46yr z_&s0~@Vme|;CFz$4(ox{z;6R9fe!%_z;(b1Aj+gqIq+M+GT=9Xao{(AB|wx_pCaIc zz!-21&;zapqHMf&;9lSZz}>*F1G|9t1GfY318xJZ1a1X>1=tC^2e=8i0*E|#cLR|Y z@5{h;;Bp|sc*}q|y}N)*fnNf)0lx@r1>&0ZX$IZ_Yyy4(SO>fvI2DL6eX4<<2UY?< z2TTAz3#QO0*nK129^NZfJMNYfHC0pK!At1jsDxfIQW}D>hA?o|1BW( z_W=Rk-+*k#egljH{|+ny{+j;cY_EO=&i0A^+kj64JHh{) z-rx!Ga^St-aq%MHXTSj_KDNWZr9bcuUq8<4--t-!g!PRTa`9|qq5oDJ-dydAg!d?oN&;4;aV0>1~|2Alv9@<JJSig0vy-g=p(PD-9Z@dlaRMdz7qHi@MXZu zflDQC1F~Ie1x^7rOWp*05WEg}5pb&H)xb62mB3NJgya>#cJOlGM}cL)7lCo$3&0W} zvTAgx!TN^t9og5#AxZRX9<2zOb9{{T?r|>4>r-kPU z&lYlXBI>^>+$`k#w#l#XTH%?(5yIC|;M99XxIx$i9QQ=~S z*8gSU1fehNBP4of7#8wtgCgU0VzuxL zA=f*kyuYxA@Sxg9F1kqn9YXdql5@i#BG+sr-Yfi)@Kzxgjii5_aH`N3a?MHlA1l;& zyn;e;E_zA-UBVs0Cxu)ylm1^9-YdjjoJPJ-$bLSP4&el$FFZ~7G2sv)R{>=>4Oc1H zr}p}H!e@m)6aHBEeIeH=W%y;nrNYk$7YVNsa-CD^Um)bds^q1@LBfcT>$1}Sk3z0T zM*g&rOUROU2-}7C2)`)2MR>h%p73g6`hDm^$+==J?SEAG5g}I3GIFkpOaCt6cHyst zPYHi0d_?#yAy?gH_}hd_g!6^7gr5>#CcH?g>>Twuu!qP+ zfr;z~BW@9{6T189=ft_*G4<+&R|>0zl|o<0F=yYx-8b1!MgFpo z>oJr6Sjgqm$-gSRTewu%CTtXP{229Xgd9^wey)(?%*fdfMP&aI@fab;qmdT~IYy2A zZ6U|4k#`BV3x6f#_%{46_@R(v-pIct8FQz80pOuQR}9YVaL8u>lKF9>fD zUM%`;YKNnAkzam~C&iftX->vdJUVOj!x#FJm zuM*!Y{~O3rC(7`=!Q*@KUn>1yi7ylXtN2Rs?x+i_51lHXI5~8h#mAB(eeKe(74Hz| z^9cPnh<{alllWueo#MYG#~B}F)B87ZGawtHZpa7yyA=N*a^%mA59L^N##gQDvq*fZ zIKSi4KOz2o@vVygS@BBw?-k!Je|E$$e4YGHAxC-=O78^mI`ONdzfIx!+{*A>;+)4p zULkv%#P`boCGjHp|6M#TUX15zhWErz6E73LM7&(QS$wzb^ZB0PWAguwc!@aQ3+TUJ z`hOuuc{kv_hR0C6S1|u=$}jt0sNbaUpCm_pY1Q?*LH^D1zhAsn{4w!1@$KSE#or-E zeC>*_FVeyExbeLc$XP#J`HOdoFOvQ$ydU!Tw*1ZHD)67mzXk8FJR;De{W#vId7McO z`|-h+Pn5qK-+PC+8_)X_=_jQBd-=QZyvHCO+N+cQspN>yjpw~u{%!KVN≈@8j}s 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%0DY;(@BonV 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

    ^$z$?p;5XDiar2=dbtX>Pnq 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 diff --git a/AWSS3.podspec b/AWSS3.podspec index d53d8c7ef11..4dcff001634 100644 --- a/AWSS3.podspec +++ b/AWSS3.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSS3' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSS3/*.{h,m}' end diff --git a/AWSS3.xcodeproj/project.pbxproj b/AWSS3.xcodeproj/project.pbxproj index e17af4ad01c..95798068992 100644 --- a/AWSS3.xcodeproj/project.pbxproj +++ b/AWSS3.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD00003A1AB8C526004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000391AB8C526004496EF /* credentials.json */; }; BD0000581AB8E18E004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000571AB8E18E004496EF /* AWSTestUtility.m */; }; BD00FF411AB8B6D2004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF401AB8B6D2004496EF /* libAWSCore.a */; }; - BD00FFEA1AB8C42D004496EF /* AWSGeneralS3Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE61AB8C42D004496EF /* AWSGeneralS3Tests.m */; }; BD00FFEB1AB8C42D004496EF /* AWSS3PreSignedURLBuilderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE71AB8C42D004496EF /* AWSS3PreSignedURLBuilderTests.m */; }; BD00FFEC1AB8C42D004496EF /* AWSS3Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE81AB8C42D004496EF /* AWSS3Tests.m */; }; BD00FFED1AB8C42D004496EF /* AWSS3TransferManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE91AB8C42D004496EF /* AWSS3TransferManagerTests.m */; }; @@ -21,6 +20,12 @@ BDC91C491ABBA0B500F74D49 /* AWSS3TransferManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF55A0A1AB377010067F4F1 /* AWSS3TransferManager.h */; }; BDC91C4A1ABBA0B500F74D49 /* AWSS3.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF55A0C1AB377010067F4F1 /* AWSS3.h */; }; BDC91C4B1ABBA0B500F74D49 /* AWSS3Model.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDF55A0E1AB377010067F4F1 /* AWSS3Model.h */; }; + BDD876B21B4B5339009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876B11B4B5339009268C7 /* libOCMock.a */; }; + BDF126111B45C2C100DFBFEC /* AWSGeneralS3Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE61AB8C42D004496EF /* AWSGeneralS3Tests.m */; }; + BDF126131B45C2C100DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000571AB8E18E004496EF /* AWSTestUtility.m */; }; + BDF126171B45C2C100DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5326D1B03D3CB002CED62 /* libz.dylib */; }; + BDF126181B45C2C100DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF401AB8B6D2004496EF /* libAWSCore.a */; }; + BDF126191B45C2C100DFBFEC /* libAWSS3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559EC1AB376DC0067F4F1 /* libAWSS3.a */; }; BDF559F81AB376DC0067F4F1 /* libAWSS3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDF559EC1AB376DC0067F4F1 /* libAWSS3.a */; }; BDF55A121AB377010067F4F1 /* AWSS3PreSignedURL.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF55A081AB377010067F4F1 /* AWSS3PreSignedURL.h */; settings = {ATTRIBUTES = (Public, ); }; }; BDF55A131AB377010067F4F1 /* AWSS3PreSignedURL.m in Sources */ = {isa = PBXBuildFile; fileRef = BDF55A091AB377010067F4F1 /* AWSS3PreSignedURL.m */; }; @@ -35,6 +40,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + BDF1260F1B45C2C100DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDF559E41AB376DC0067F4F1 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDF559EB1AB376DC0067F4F1; + remoteInfo = S3; + }; BDF559F91AB376DC0067F4F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BDF559E41AB376DC0067F4F1 /* Project object */; @@ -62,8 +74,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 28721197CE495F3AD391E73E /* Pods-AWSS3.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSS3.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSS3/Pods-AWSS3.debug.xcconfig"; sourceTree = ""; }; - 54CC6BB27F49823B5667DBD3 /* Pods-AWSS3.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSS3.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSS3/Pods-AWSS3.release.xcconfig"; sourceTree = ""; }; BD0000391AB8C526004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000561AB8E18E004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000571AB8E18E004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -74,6 +84,8 @@ BD00FFE91AB8C42D004496EF /* AWSS3TransferManagerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSS3TransferManagerTests.m; sourceTree = ""; }; BDB73D851B1D3F4900717559 /* AWSS3Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSS3Resources.h; sourceTree = ""; }; BDB73D861B1D3F4900717559 /* AWSS3Resources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSS3Resources.m; sourceTree = ""; }; + BDD876B11B4B5339009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF1261F1B45C2C100DFBFEC /* AWSS3UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSS3UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559EC1AB376DC0067F4F1 /* libAWSS3.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAWSS3.a; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559F71AB376DC0067F4F1 /* AWSS3Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSS3Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; BDF559FD1AB376DC0067F4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -85,12 +97,22 @@ BDF55A0D1AB377010067F4F1 /* AWSS3Service.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSS3Service.m; sourceTree = ""; }; BDF55A0E1AB377010067F4F1 /* AWSS3Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSS3Model.h; sourceTree = ""; }; BDF55A0F1AB377010067F4F1 /* AWSS3Model.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSS3Model.m; sourceTree = ""; }; - CBE59F7C5A92F7A54CF4B4BB /* libPods-AWSS3.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSS3.a"; sourceTree = BUILT_PRODUCTS_DIR; }; CEE5326D1B03D3CB002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE721AC1E1DA0095C4B7 /* AWSS3Service.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSS3Service.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + BDF126161B45C2C100DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876B21B4B5339009268C7 /* libOCMock.a in Frameworks */, + BDF126171B45C2C100DFBFEC /* libz.dylib in Frameworks */, + BDF126181B45C2C100DFBFEC /* libAWSCore.a in Frameworks */, + BDF126191B45C2C100DFBFEC /* libAWSS3.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559E91AB376DC0067F4F1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -111,21 +133,12 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 28E12D2EBBCFB024BDA6D5BE /* Pods */ = { - isa = PBXGroup; - children = ( - 28721197CE495F3AD391E73E /* Pods-AWSS3.debug.xcconfig */, - 54CC6BB27F49823B5667DBD3 /* Pods-AWSS3.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 7D7D82B43AAE1FAA16A74BC2 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876B11B4B5339009268C7 /* libOCMock.a */, CEE5326D1B03D3CB002CED62 /* libz.dylib */, BD00FF401AB8B6D2004496EF /* libAWSCore.a */, - CBE59F7C5A92F7A54CF4B4BB /* libPods-AWSS3.a */, ); name = Frameworks; sourceTree = ""; @@ -136,7 +149,6 @@ BDF559EE1AB376DC0067F4F1 /* AWSS3 */, BDF559FB1AB376DC0067F4F1 /* AWSS3Tests */, BDF559ED1AB376DC0067F4F1 /* Products */, - 28E12D2EBBCFB024BDA6D5BE /* Pods */, 7D7D82B43AAE1FAA16A74BC2 /* Frameworks */, ); sourceTree = ""; @@ -146,6 +158,7 @@ children = ( BDF559EC1AB376DC0067F4F1 /* libAWSS3.a */, BDF559F71AB376DC0067F4F1 /* AWSS3Tests.xctest */, + BDF1261F1B45C2C100DFBFEC /* AWSS3UnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -210,6 +223,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + BDF1260D1B45C2C100DFBFEC /* AWSS3UnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF1261C1B45C2C100DFBFEC /* Build configuration list for PBXNativeTarget "AWSS3UnitTests" */; + buildPhases = ( + BDF126101B45C2C100DFBFEC /* Sources */, + BDF126161B45C2C100DFBFEC /* Frameworks */, + BDF1261A1B45C2C100DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF1260E1B45C2C100DFBFEC /* PBXTargetDependency */, + ); + name = AWSS3UnitTests; + productName = S3Tests; + productReference = BDF1261F1B45C2C100DFBFEC /* AWSS3UnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; BDF559EB1AB376DC0067F4F1 /* AWSS3 */ = { isa = PBXNativeTarget; buildConfigurationList = BDF55A001AB376DC0067F4F1 /* Build configuration list for PBXNativeTarget "AWSS3" */; @@ -277,11 +308,19 @@ targets = ( BDF559EB1AB376DC0067F4F1 /* AWSS3 */, BDF559F61AB376DC0067F4F1 /* AWSS3Tests */, + BDF1260D1B45C2C100DFBFEC /* AWSS3UnitTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + BDF1261A1B45C2C100DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559F51AB376DC0067F4F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -293,6 +332,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + BDF126101B45C2C100DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126111B45C2C100DFBFEC /* AWSGeneralS3Tests.m in Sources */, + BDF126131B45C2C100DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; BDF559E81AB376DC0067F4F1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -309,7 +357,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BD00FFEA1AB8C42D004496EF /* AWSGeneralS3Tests.m in Sources */, BD00FFEB1AB8C42D004496EF /* AWSS3PreSignedURLBuilderTests.m in Sources */, BD0000581AB8E18E004496EF /* AWSTestUtility.m in Sources */, BD00FFED1AB8C42D004496EF /* AWSS3TransferManagerTests.m in Sources */, @@ -320,6 +367,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + BDF1260E1B45C2C100DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDF559EB1AB376DC0067F4F1 /* AWSS3 */; + targetProxy = BDF1260F1B45C2C100DFBFEC /* PBXContainerItemProxy */; + }; BDF559FA1AB376DC0067F4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = BDF559EB1AB376DC0067F4F1 /* AWSS3 */; @@ -328,10 +380,72 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + BDF1261D1B45C2C100DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSS3Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSS3UnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF1261E1B45C2C100DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSS3Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSS3UnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; BDF559FE1AB376DC0067F4F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -373,6 +487,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -445,6 +563,7 @@ ); INFOPLIST_FILE = AWSS3Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSS3Tests; }; name = Debug; @@ -460,6 +579,7 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSS3Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSS3Tests; }; name = Release; @@ -467,6 +587,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + BDF1261C1B45C2C100DFBFEC /* Build configuration list for PBXNativeTarget "AWSS3UnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF1261D1B45C2C100DFBFEC /* Debug */, + BDF1261E1B45C2C100DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; BDF559E71AB376DC0067F4F1 /* Build configuration list for PBXProject "AWSS3" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/AWSS3.xcodeproj/xcshareddata/xcschemes/AWSS3.xcscheme b/AWSS3.xcodeproj/xcshareddata/xcschemes/AWSS3.xcscheme new file mode 100644 index 00000000000..f144a486b7d --- /dev/null +++ b/AWSS3.xcodeproj/xcshareddata/xcschemes/AWSS3.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSS3/AWSS3Service.m b/AWSS3/AWSS3Service.m index a3d9d90e826..5a2c1fc7434 100644 --- a/AWSS3/AWSS3Service.m +++ b/AWSS3/AWSS3Service.m @@ -221,9 +221,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSS3RequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{ - @"Host" : _configuration.endpoint.hostName, - }; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; diff --git a/AWSS3Tests/AWSGeneralS3Tests.m b/AWSS3Tests/AWSGeneralS3Tests.m index e364dc16c70..c841d2133c0 100644 --- a/AWSS3Tests/AWSGeneralS3Tests.m +++ b/AWSS3Tests/AWSGeneralS3Tests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSS3.h" +static id mockNetworking = nil; + @interface AWSGeneralS3Tests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralS3Tests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAbortMultipartUpload { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] abortMultipartUpload:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -70,13 +84,20 @@ - (void)testCompleteMultipartUpload { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] completeMultipartUpload:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreateBucket { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] createBucket:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -100,13 +128,20 @@ - (void)testCreateMultipartUpload { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] createMultipartUpload:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDeleteBucket { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucket:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDeleteBucketCors { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucketCors:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -145,13 +194,20 @@ - (void)testDeleteBucketLifecycle { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucketLifecycle:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -160,13 +216,20 @@ - (void)testDeleteBucketPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucketPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -175,13 +238,20 @@ - (void)testDeleteBucketTagging { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucketTagging:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -190,13 +260,20 @@ - (void)testDeleteBucketWebsite { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteBucketWebsite:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -205,13 +282,20 @@ - (void)testDeleteObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -220,13 +304,20 @@ - (void)testDeleteObjects { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] deleteObjects:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -235,13 +326,20 @@ - (void)testGetBucketAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -250,13 +348,20 @@ - (void)testGetBucketCors { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketCors:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -265,13 +370,20 @@ - (void)testGetBucketLifecycle { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketLifecycle:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -280,13 +392,20 @@ - (void)testGetBucketLocation { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketLocation:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -295,13 +414,20 @@ - (void)testGetBucketLogging { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketLogging:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -310,13 +436,20 @@ - (void)testGetBucketNotification { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketNotification:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -325,13 +458,20 @@ - (void)testGetBucketPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -340,13 +480,20 @@ - (void)testGetBucketRequestPayment { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketRequestPayment:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -355,13 +502,20 @@ - (void)testGetBucketTagging { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketTagging:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -370,13 +524,20 @@ - (void)testGetBucketVersioning { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketVersioning:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -385,13 +546,20 @@ - (void)testGetBucketWebsite { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getBucketWebsite:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -400,13 +568,20 @@ - (void)testGetObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -415,13 +590,20 @@ - (void)testGetObjectAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getObjectAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -430,13 +612,20 @@ - (void)testGetObjectTorrent { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] getObjectTorrent:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -445,13 +634,20 @@ - (void)testHeadBucket { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] headBucket:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -460,13 +656,20 @@ - (void)testHeadObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] headObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -475,13 +678,20 @@ - (void)testListBuckets { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] listBuckets:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -490,13 +700,20 @@ - (void)testListMultipartUploads { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] listMultipartUploads:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -505,13 +722,20 @@ - (void)testListObjectVersions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] listObjectVersions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -520,13 +744,20 @@ - (void)testListObjects { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] listObjects:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -535,13 +766,20 @@ - (void)testListParts { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] listParts:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -550,13 +788,20 @@ - (void)testPutBucketAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -565,13 +810,20 @@ - (void)testPutBucketCors { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketCors:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -580,13 +832,20 @@ - (void)testPutBucketLifecycle { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketLifecycle:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -595,13 +854,20 @@ - (void)testPutBucketLogging { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketLogging:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -610,13 +876,20 @@ - (void)testPutBucketNotification { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketNotification:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -625,13 +898,20 @@ - (void)testPutBucketPolicy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketPolicy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -640,13 +920,20 @@ - (void)testPutBucketRequestPayment { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketRequestPayment:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -655,13 +942,20 @@ - (void)testPutBucketTagging { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketTagging:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -670,13 +964,20 @@ - (void)testPutBucketVersioning { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketVersioning:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -685,13 +986,20 @@ - (void)testPutBucketWebsite { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putBucketWebsite:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -700,13 +1008,20 @@ - (void)testPutObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -715,13 +1030,20 @@ - (void)testPutObjectAcl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] putObjectAcl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -730,13 +1052,20 @@ - (void)testReplicateObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] replicateObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -745,13 +1074,20 @@ - (void)testRestoreObject { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] restoreObject:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -760,13 +1096,20 @@ - (void)testUploadPart { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] uploadPart:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } @@ -775,13 +1118,20 @@ - (void)testUploadPartCopy { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSS3 registerS3WithConfiguration:configuration forKey:key]; + AWSS3 *awsClient = [AWSS3 S3ForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSS3 S3ForKey:key] uploadPartCopy:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSS3 removeS3ForKey:key]; } diff --git a/AWSS3Tests/AWSS3Tests.m b/AWSS3Tests/AWSS3Tests.m index d33414d0e43..80ec3a97685 100644 --- a/AWSS3Tests/AWSS3Tests.m +++ b/AWSS3Tests/AWSS3Tests.m @@ -541,6 +541,26 @@ - (void)testPutGetAndDeleteObjectByFilePathWithProgressFeedback { }] waitUntilFinished]; } +/* TODO: this test gets stuck. Researching. +- (void)testPutBucketVersioning { + AWSS3 *s3 = [AWSS3 defaultS3]; + XCTAssertNotNil(s3); + + AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new]; + conf.status = AWSS3BucketVersioningStatusEnabled; + + AWSS3PutBucketVersioningRequest *versionRequest = [AWSS3PutBucketVersioningRequest new]; + versionRequest.bucket = testBucketNameGeneral; + versionRequest.versioningConfiguration = conf; + NSLog(@"Config %@",versionRequest); + + [[[s3 putBucketVersioning:versionRequest] continueWithBlock:^id(AWSTask *task) { + XCTAssertNil(task.error); + return nil; + }] waitUntilFinished]; +} +*/ + - (void)testPutBucketTagging { AWSS3 *s3 = [AWSS3 defaultS3]; XCTAssertNotNil(s3); diff --git a/AWSSES.podspec b/AWSSES.podspec index 34326d8dda2..d50d4203cfe 100644 --- a/AWSSES.podspec +++ b/AWSSES.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSSES' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSSES/*.{h,m}' end diff --git a/AWSSES.xcodeproj/project.pbxproj b/AWSSES.xcodeproj/project.pbxproj index e968fbf6649..b145b8f3ac2 100644 --- a/AWSSES.xcodeproj/project.pbxproj +++ b/AWSSES.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD0000381AB8C516004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000371AB8C516004496EF /* credentials.json */; }; BD0000551AB8E17E004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000541AB8E17E004496EF /* AWSTestUtility.m */; }; BD00FF3F1AB8B6CB004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3E1AB8B6CB004496EF /* libAWSCore.a */; }; - BD00FFE41AB8C421004496EF /* AWSGeneralSESTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE21AB8C421004496EF /* AWSGeneralSESTests.m */; }; BD00FFE51AB8C421004496EF /* AWSSESTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE31AB8C421004496EF /* AWSSESTests.m */; }; BD9D97641AC1EECF00CEEE08 /* AWSSESService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE741AC1E2030095C4B7 /* AWSSESService.h */; }; BDB5DE6D1AB37745002DD224 /* libAWSSES.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DE611AB37745002DD224 /* libAWSSES.a */; }; @@ -22,6 +21,12 @@ BDB73D8C1B1D3F5E00717559 /* AWSSESResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D8A1B1D3F5E00717559 /* AWSSESResources.m */; }; BDC91C451ABBA09E00F74D49 /* AWSSES.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DE7D1AB37772002DD224 /* AWSSES.h */; }; BDC91C461ABBA09E00F74D49 /* AWSSESModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DE7F1AB37772002DD224 /* AWSSESModel.h */; }; + BDD876B41B4B5348009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876B31B4B5348009268C7 /* libOCMock.a */; }; + BDF126251B45C2E400DFBFEC /* AWSGeneralSESTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFE21AB8C421004496EF /* AWSGeneralSESTests.m */; }; + BDF126261B45C2E400DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000541AB8E17E004496EF /* AWSTestUtility.m */; }; + BDF126291B45C2E400DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532611B03D3A1002CED62 /* libz.dylib */; }; + BDF1262A1B45C2E400DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3E1AB8B6CB004496EF /* libAWSCore.a */; }; + BDF1262B1B45C2E400DFBFEC /* libAWSSES.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DE611AB37745002DD224 /* libAWSSES.a */; }; CEE532621B03D3A1002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532611B03D3A1002CED62 /* libz.dylib */; }; CEE7DE751AC1E2030095C4B7 /* AWSSESService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE741AC1E2030095C4B7 /* AWSSESService.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ @@ -34,6 +39,13 @@ remoteGlobalIDString = BDB5DE601AB37745002DD224; remoteInfo = SES; }; + BDF126231B45C2E400DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDB5DE591AB37745002DD224 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDB5DE601AB37745002DD224; + remoteInfo = SES; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -52,8 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06CF55A5092BD16BD7172AC1 /* Pods-AWSSES.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSES.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSES/Pods-AWSSES.debug.xcconfig"; sourceTree = ""; }; - 4530B9E98E0F66C59B302EB8 /* libPods-AWSSES.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSSES.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD0000371AB8C516004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000531AB8E17E004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000541AB8E17E004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -69,9 +79,10 @@ BDB5DE801AB37772002DD224 /* AWSSESModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSESModel.m; sourceTree = ""; }; BDB73D891B1D3F5E00717559 /* AWSSESResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSESResources.h; sourceTree = ""; }; BDB73D8A1B1D3F5E00717559 /* AWSSESResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSESResources.m; sourceTree = ""; }; + BDD876B31B4B5348009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF126311B45C2E400DFBFEC /* AWSSESUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSSESUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CEE532611B03D3A1002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE741AC1E2030095C4B7 /* AWSSESService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSESService.h; sourceTree = ""; }; - D24B87675A7E5A3174579807 /* Pods-AWSSES.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSES.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSES/Pods-AWSSES.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -92,35 +103,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF126281B45C2E400DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876B41B4B5348009268C7 /* libOCMock.a in Frameworks */, + BDF126291B45C2E400DFBFEC /* libz.dylib in Frameworks */, + BDF1262A1B45C2E400DFBFEC /* libAWSCore.a in Frameworks */, + BDF1262B1B45C2E400DFBFEC /* libAWSSES.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 3389B24E19BA4F4B5860898B /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876B31B4B5348009268C7 /* libOCMock.a */, CEE532611B03D3A1002CED62 /* libz.dylib */, BD00FF3E1AB8B6CB004496EF /* libAWSCore.a */, - 4530B9E98E0F66C59B302EB8 /* libPods-AWSSES.a */, ); name = Frameworks; sourceTree = ""; }; - 5C080D10B9CEEDF1A8E1DF2A /* Pods */ = { - isa = PBXGroup; - children = ( - 06CF55A5092BD16BD7172AC1 /* Pods-AWSSES.debug.xcconfig */, - D24B87675A7E5A3174579807 /* Pods-AWSSES.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; BDB5DE581AB37745002DD224 = { isa = PBXGroup; children = ( BDB5DE631AB37745002DD224 /* AWSSES */, BDB5DE701AB37745002DD224 /* AWSSESTests */, BDB5DE621AB37745002DD224 /* Products */, - 5C080D10B9CEEDF1A8E1DF2A /* Pods */, 3389B24E19BA4F4B5860898B /* Frameworks */, ); sourceTree = ""; @@ -130,6 +142,7 @@ children = ( BDB5DE611AB37745002DD224 /* libAWSSES.a */, BDB5DE6C1AB37745002DD224 /* AWSSESTests.xctest */, + BDF126311B45C2E400DFBFEC /* AWSSESUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -223,6 +236,24 @@ productReference = BDB5DE6C1AB37745002DD224 /* AWSSESTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + BDF126211B45C2E400DFBFEC /* AWSSESUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF1262E1B45C2E400DFBFEC /* Build configuration list for PBXNativeTarget "AWSSESUnitTests" */; + buildPhases = ( + BDF126241B45C2E400DFBFEC /* Sources */, + BDF126281B45C2E400DFBFEC /* Frameworks */, + BDF1262C1B45C2E400DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF126221B45C2E400DFBFEC /* PBXTargetDependency */, + ); + name = AWSSESUnitTests; + productName = SESTests; + productReference = BDF126311B45C2E400DFBFEC /* AWSSESUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -254,6 +285,7 @@ targets = ( BDB5DE601AB37745002DD224 /* AWSSES */, BDB5DE6B1AB37745002DD224 /* AWSSESTests */, + BDF126211B45C2E400DFBFEC /* AWSSESUnitTests */, ); }; /* End PBXProject section */ @@ -267,6 +299,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1262C1B45C2E400DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -284,12 +323,20 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BD00FFE41AB8C421004496EF /* AWSGeneralSESTests.m in Sources */, BD0000551AB8E17E004496EF /* AWSTestUtility.m in Sources */, BD00FFE51AB8C421004496EF /* AWSSESTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + BDF126241B45C2E400DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126251B45C2E400DFBFEC /* AWSGeneralSESTests.m in Sources */, + BDF126261B45C2E400DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -298,6 +345,11 @@ target = BDB5DE601AB37745002DD224 /* AWSSES */; targetProxy = BDB5DE6E1AB37745002DD224 /* PBXContainerItemProxy */; }; + BDF126221B45C2E400DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDB5DE601AB37745002DD224 /* AWSSES */; + targetProxy = BDF126231B45C2E400DFBFEC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -305,6 +357,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -346,6 +402,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -420,6 +480,7 @@ ); INFOPLIST_FILE = AWSSESTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSESTests; }; name = Debug; @@ -435,10 +496,69 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSSESTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSESTests; }; name = Release; }; + BDF1262F1B45C2E400DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSSESTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSESUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF126301B45C2E400DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSSESTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSESUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -469,6 +589,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF1262E1B45C2E400DFBFEC /* Build configuration list for PBXNativeTarget "AWSSESUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF1262F1B45C2E400DFBFEC /* Debug */, + BDF126301B45C2E400DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BDB5DE591AB37745002DD224 /* Project object */; diff --git a/AWSSES.xcodeproj/xcshareddata/xcschemes/AWSSES.xcscheme b/AWSSES.xcodeproj/xcshareddata/xcschemes/AWSSES.xcscheme new file mode 100644 index 00000000000..3ac05dd73fc --- /dev/null +++ b/AWSSES.xcodeproj/xcshareddata/xcschemes/AWSSES.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSSES/AWSSESService.m b/AWSSES/AWSSESService.m index c11ded0ea11..f2167ace8c6 100644 --- a/AWSSES/AWSSESService.m +++ b/AWSSES/AWSSESService.m @@ -214,7 +214,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSESRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSSESTests/AWSGeneralSESTests.m b/AWSSESTests/AWSGeneralSESTests.m index 2a413cf6691..1e223555001 100644 --- a/AWSSESTests/AWSGeneralSESTests.m +++ b/AWSSESTests/AWSGeneralSESTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSSES.h" +static id mockNetworking = nil; + @interface AWSGeneralSESTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralSESTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testDeleteIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] deleteIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -70,13 +84,20 @@ - (void)testDeleteVerifiedEmailAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] deleteVerifiedEmailAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -85,13 +106,20 @@ - (void)testGetIdentityDkimAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] getIdentityDkimAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -100,13 +128,20 @@ - (void)testGetIdentityNotificationAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] getIdentityNotificationAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -115,13 +150,20 @@ - (void)testGetIdentityVerificationAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] getIdentityVerificationAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -130,13 +172,20 @@ - (void)testGetSendQuota { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] getSendQuota:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetSendStatistics { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] getSendStatistics:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -160,13 +216,20 @@ - (void)testListIdentities { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] listIdentities:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -175,13 +238,20 @@ - (void)testListVerifiedEmailAddresses { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] listVerifiedEmailAddresses:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -190,13 +260,20 @@ - (void)testSendEmail { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] sendEmail:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -205,13 +282,20 @@ - (void)testSendRawEmail { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] sendRawEmail:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -220,13 +304,20 @@ - (void)testSetIdentityDkimEnabled { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] setIdentityDkimEnabled:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -235,13 +326,20 @@ - (void)testSetIdentityFeedbackForwardingEnabled { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] setIdentityFeedbackForwardingEnabled:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -250,13 +348,20 @@ - (void)testSetIdentityNotificationTopic { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] setIdentityNotificationTopic:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -265,13 +370,20 @@ - (void)testVerifyDomainDkim { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] verifyDomainDkim:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -280,13 +392,20 @@ - (void)testVerifyDomainIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] verifyDomainIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -295,13 +414,20 @@ - (void)testVerifyEmailAddress { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] verifyEmailAddress:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } @@ -310,13 +436,20 @@ - (void)testVerifyEmailIdentity { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSES registerSESWithConfiguration:configuration forKey:key]; + AWSSES *awsClient = [AWSSES SESForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSES SESForKey:key] verifyEmailIdentity:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSES removeSESForKey:key]; } diff --git a/AWSSESTests/AWSSESTests.m b/AWSSESTests/AWSSESTests.m index 1b9538ee051..449da919d93 100644 --- a/AWSSESTests/AWSSESTests.m +++ b/AWSSESTests/AWSSESTests.m @@ -15,6 +15,7 @@ #if !AWS_TEST_BJS_INSTEAD +#import #import #import "AWSSES.h" #import "AWSTestUtility.h" diff --git a/AWSSNS.podspec b/AWSSNS.podspec index 04a3de0427b..d8582485692 100644 --- a/AWSSNS.podspec +++ b/AWSSNS.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSSNS' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSSNS/*.{h,m}' end diff --git a/AWSSNS.xcodeproj/project.pbxproj b/AWSSNS.xcodeproj/project.pbxproj index 449de36268c..951b35e82a9 100644 --- a/AWSSNS.xcodeproj/project.pbxproj +++ b/AWSSNS.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD0000341AB8C4FD004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000331AB8C4FD004496EF /* credentials.json */; }; BD00004F1AB8E15B004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00004E1AB8E15B004496EF /* AWSTestUtility.m */; }; BD00FF3B1AB8B6B6004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3A1AB8B6B6004496EF /* libAWSCore.a */; }; - BD00FFDC1AB8C407004496EF /* AWSGeneralSNSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDA1AB8C407004496EF /* AWSGeneralSNSTests.m */; }; BD00FFDD1AB8C407004496EF /* AWSSNSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDB1AB8C407004496EF /* AWSSNSTests.m */; }; BD9D97661AC1EEE500CEEE08 /* AWSSNSService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE761AC1E2270095C4B7 /* AWSSNSService.h */; }; BDB5DECB1AB377FA002DD224 /* libAWSSNS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DEBF1AB377FA002DD224 /* libAWSSNS.a */; }; @@ -22,6 +21,12 @@ BDB73D941B1D3F8D00717559 /* AWSSNSResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D921B1D3F8D00717559 /* AWSSNSResources.m */; }; BDC91C3F1ABBA08300F74D49 /* AWSSNS.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DEDB1AB3781F002DD224 /* AWSSNS.h */; }; BDC91C401ABBA08300F74D49 /* AWSSNSModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DEDD1AB3781F002DD224 /* AWSSNSModel.h */; }; + BDD876B81B4B5361009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876B71B4B5361009268C7 /* libOCMock.a */; }; + BDF1264A1B45C34100DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00004E1AB8E15B004496EF /* AWSTestUtility.m */; }; + BDF1264B1B45C34100DFBFEC /* AWSGeneralSNSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDA1AB8C407004496EF /* AWSGeneralSNSTests.m */; }; + BDF1264D1B45C34100DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5325D1B03D38F002CED62 /* libz.dylib */; }; + BDF1264E1B45C34100DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3A1AB8B6B6004496EF /* libAWSCore.a */; }; + BDF1264F1B45C34100DFBFEC /* libAWSSNS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DEBF1AB377FA002DD224 /* libAWSSNS.a */; }; CEE5325E1B03D38F002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE5325D1B03D38F002CED62 /* libz.dylib */; }; CEE7DE771AC1E2270095C4B7 /* AWSSNSService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE761AC1E2270095C4B7 /* AWSSNSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ @@ -34,6 +39,13 @@ remoteGlobalIDString = BDB5DEBE1AB377FA002DD224; remoteInfo = SNS; }; + BDF126471B45C34100DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDB5DEB71AB377FA002DD224 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDB5DEBE1AB377FA002DD224; + remoteInfo = SNS; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -52,8 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 36630348B896F5C040E99D9C /* Pods-AWSSNS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSNS.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSNS/Pods-AWSSNS.release.xcconfig"; sourceTree = ""; }; - 5B06DD78D46B292D4F674CE2 /* Pods-AWSSNS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSNS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSNS/Pods-AWSSNS.debug.xcconfig"; sourceTree = ""; }; BD0000331AB8C4FD004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD00004D1AB8E15B004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD00004E1AB8E15B004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -69,9 +79,10 @@ BDB5DEDE1AB3781F002DD224 /* AWSSNSModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSNSModel.m; sourceTree = ""; }; BDB73D911B1D3F8D00717559 /* AWSSNSResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSNSResources.h; sourceTree = ""; }; BDB73D921B1D3F8D00717559 /* AWSSNSResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSNSResources.m; sourceTree = ""; }; + BDD876B71B4B5361009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF126551B45C34100DFBFEC /* AWSSNSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSSNSUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CEE5325D1B03D38F002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE761AC1E2270095C4B7 /* AWSSNSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSNSService.h; sourceTree = ""; }; - FF4C8DA618813B12A2AD647E /* libPods-AWSSNS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSSNS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -92,35 +103,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1264C1B45C34100DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876B81B4B5361009268C7 /* libOCMock.a in Frameworks */, + BDF1264D1B45C34100DFBFEC /* libz.dylib in Frameworks */, + BDF1264E1B45C34100DFBFEC /* libAWSCore.a in Frameworks */, + BDF1264F1B45C34100DFBFEC /* libAWSSNS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 64A8D5459E21A3F4F06E6A97 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876B71B4B5361009268C7 /* libOCMock.a */, CEE5325D1B03D38F002CED62 /* libz.dylib */, BD00FF3A1AB8B6B6004496EF /* libAWSCore.a */, - FF4C8DA618813B12A2AD647E /* libPods-AWSSNS.a */, ); name = Frameworks; sourceTree = ""; }; - A6F36E20562C00E7C13A0FCC /* Pods */ = { - isa = PBXGroup; - children = ( - 5B06DD78D46B292D4F674CE2 /* Pods-AWSSNS.debug.xcconfig */, - 36630348B896F5C040E99D9C /* Pods-AWSSNS.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; BDB5DEB61AB377FA002DD224 = { isa = PBXGroup; children = ( BDB5DEC11AB377FA002DD224 /* AWSSNS */, BDB5DECE1AB377FA002DD224 /* AWSSNSTests */, BDB5DEC01AB377FA002DD224 /* Products */, - A6F36E20562C00E7C13A0FCC /* Pods */, 64A8D5459E21A3F4F06E6A97 /* Frameworks */, ); sourceTree = ""; @@ -130,6 +142,7 @@ children = ( BDB5DEBF1AB377FA002DD224 /* libAWSSNS.a */, BDB5DECA1AB377FA002DD224 /* AWSSNSTests.xctest */, + BDF126551B45C34100DFBFEC /* AWSSNSUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -222,6 +235,24 @@ productReference = BDB5DECA1AB377FA002DD224 /* AWSSNSTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + BDF126451B45C34100DFBFEC /* AWSSNSUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF126521B45C34100DFBFEC /* Build configuration list for PBXNativeTarget "AWSSNSUnitTests" */; + buildPhases = ( + BDF126481B45C34100DFBFEC /* Sources */, + BDF1264C1B45C34100DFBFEC /* Frameworks */, + BDF126501B45C34100DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF126461B45C34100DFBFEC /* PBXTargetDependency */, + ); + name = AWSSNSUnitTests; + productName = SNSTests; + productReference = BDF126551B45C34100DFBFEC /* AWSSNSUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -253,6 +284,7 @@ targets = ( BDB5DEBE1AB377FA002DD224 /* AWSSNS */, BDB5DEC91AB377FA002DD224 /* AWSSNSTests */, + BDF126451B45C34100DFBFEC /* AWSSNSUnitTests */, ); }; /* End PBXProject section */ @@ -266,6 +298,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF126501B45C34100DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -285,7 +324,15 @@ files = ( BD00FFDD1AB8C407004496EF /* AWSSNSTests.m in Sources */, BD00004F1AB8E15B004496EF /* AWSTestUtility.m in Sources */, - BD00FFDC1AB8C407004496EF /* AWSGeneralSNSTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BDF126481B45C34100DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF1264A1B45C34100DFBFEC /* AWSTestUtility.m in Sources */, + BDF1264B1B45C34100DFBFEC /* AWSGeneralSNSTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -297,6 +344,11 @@ target = BDB5DEBE1AB377FA002DD224 /* AWSSNS */; targetProxy = BDB5DECC1AB377FA002DD224 /* PBXContainerItemProxy */; }; + BDF126461B45C34100DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDB5DEBE1AB377FA002DD224 /* AWSSNS */; + targetProxy = BDF126471B45C34100DFBFEC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -304,6 +356,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +401,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -419,6 +479,7 @@ ); INFOPLIST_FILE = AWSSNSTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSNSTests; }; name = Debug; @@ -434,10 +495,69 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSSNSTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSNSTests; }; name = Release; }; + BDF126531B45C34100DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSSNSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSNSUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF126541B45C34100DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSSNSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSNSUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -468,6 +588,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF126521B45C34100DFBFEC /* Build configuration list for PBXNativeTarget "AWSSNSUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF126531B45C34100DFBFEC /* Debug */, + BDF126541B45C34100DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BDB5DEB71AB377FA002DD224 /* Project object */; diff --git a/AWSSNS.xcodeproj/xcshareddata/xcschemes/AWSSNS.xcscheme b/AWSSNS.xcodeproj/xcshareddata/xcschemes/AWSSNS.xcscheme new file mode 100644 index 00000000000..2093badc88f --- /dev/null +++ b/AWSSNS.xcodeproj/xcshareddata/xcschemes/AWSSNS.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSSNS/AWSSNSService.m b/AWSSNS/AWSSNSService.m index f514fc2b872..1373e792af9 100644 --- a/AWSSNS/AWSSNSService.m +++ b/AWSSNS/AWSSNSService.m @@ -224,7 +224,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSNSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSSNSTests/AWSGeneralSNSTests.m b/AWSSNSTests/AWSGeneralSNSTests.m index a3ccd29516c..32be6b7a58e 100644 --- a/AWSSNSTests/AWSGeneralSNSTests.m +++ b/AWSSNSTests/AWSGeneralSNSTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSSNS.h" +static id mockNetworking = nil; + @interface AWSGeneralSNSTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralSNSTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAddPermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] addPermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -70,13 +84,20 @@ - (void)testConfirmSubscription { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] confirmSubscription:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreatePlatformApplication { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] createPlatformApplication:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -100,13 +128,20 @@ - (void)testCreatePlatformEndpoint { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] createPlatformEndpoint:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -115,13 +150,20 @@ - (void)testCreateTopic { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] createTopic:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDeleteEndpoint { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] deleteEndpoint:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -145,13 +194,20 @@ - (void)testDeletePlatformApplication { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] deletePlatformApplication:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -160,13 +216,20 @@ - (void)testDeleteTopic { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] deleteTopic:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -175,13 +238,20 @@ - (void)testGetEndpointAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] getEndpointAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -190,13 +260,20 @@ - (void)testGetPlatformApplicationAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] getPlatformApplicationAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -205,13 +282,20 @@ - (void)testGetSubscriptionAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] getSubscriptionAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -220,13 +304,20 @@ - (void)testGetTopicAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] getTopicAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -235,13 +326,20 @@ - (void)testListEndpointsByPlatformApplication { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] listEndpointsByPlatformApplication:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -250,13 +348,20 @@ - (void)testListPlatformApplications { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] listPlatformApplications:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -265,13 +370,20 @@ - (void)testListSubscriptions { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] listSubscriptions:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -280,13 +392,20 @@ - (void)testListSubscriptionsByTopic { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] listSubscriptionsByTopic:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -295,13 +414,20 @@ - (void)testListTopics { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] listTopics:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -310,13 +436,20 @@ - (void)testPublish { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] publish:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -325,13 +458,20 @@ - (void)testRemovePermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] removePermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -340,13 +480,20 @@ - (void)testSetEndpointAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] setEndpointAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -355,13 +502,20 @@ - (void)testSetPlatformApplicationAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] setPlatformApplicationAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -370,13 +524,20 @@ - (void)testSetSubscriptionAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] setSubscriptionAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -385,13 +546,20 @@ - (void)testSetTopicAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] setTopicAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -400,13 +568,20 @@ - (void)testSubscribe { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] subscribe:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } @@ -415,13 +590,20 @@ - (void)testUnsubscribe { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSNS registerSNSWithConfiguration:configuration forKey:key]; + AWSSNS *awsClient = [AWSSNS SNSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSNS SNSForKey:key] unsubscribe:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSNS removeSNSForKey:key]; } diff --git a/AWSSNSTests/AWSSNSTests.m b/AWSSNSTests/AWSSNSTests.m index 84576225f3d..d2525ff8794 100644 --- a/AWSSNSTests/AWSSNSTests.m +++ b/AWSSNSTests/AWSSNSTests.m @@ -13,6 +13,7 @@ permissions and limitations under the License. */ +#import #import #import "AWSSNS.h" #import "AWSTestUtility.h" diff --git a/AWSSQS.podspec b/AWSSQS.podspec index f1940af5ca8..f1f3eeb9fb8 100644 --- a/AWSSQS.podspec +++ b/AWSSQS.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSSQS' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSSQS/*.{h,m}' end diff --git a/AWSSQS.xcodeproj/project.pbxproj b/AWSSQS.xcodeproj/project.pbxproj index ac46e8c462c..f005c29ff2c 100644 --- a/AWSSQS.xcodeproj/project.pbxproj +++ b/AWSSQS.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD0000321AB8C4ED004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000311AB8C4ED004496EF /* credentials.json */; }; BD00004C1AB8E12D004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00004B1AB8E12D004496EF /* AWSTestUtility.m */; }; BD00FF391AB8B69F004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF381AB8B69F004496EF /* libAWSCore.a */; }; - BD00FFD81AB8C3FE004496EF /* AWSGeneralSQSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD61AB8C3FE004496EF /* AWSGeneralSQSTests.m */; }; BD00FFD91AB8C3FE004496EF /* AWSSQSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD71AB8C3FE004496EF /* AWSSQSTests.m */; }; BD3464871ADDB5D3000C5A95 /* AWSSQSClockSkewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD3464861ADDB5D3000C5A95 /* AWSSQSClockSkewTests.m */; }; BD9D97671AC1EEF100CEEE08 /* AWSSQSService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE781AC1E23F0095C4B7 /* AWSSQSService.h */; }; @@ -23,6 +22,12 @@ BDB73D981B1D3FF100717559 /* AWSSQSResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D961B1D3FF100717559 /* AWSSQSResources.m */; }; BDC91C3C1ABBA07300F74D49 /* AWSSQS.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DF091AB3786A002DD224 /* AWSSQS.h */; }; BDC91C3D1ABBA07300F74D49 /* AWSSQSModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DF0B1AB3786A002DD224 /* AWSSQSModel.h */; }; + BDD876BA1B4B5370009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876B91B4B5370009268C7 /* libOCMock.a */; }; + BDF1265C1B45C36100DFBFEC /* AWSGeneralSQSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFD61AB8C3FE004496EF /* AWSGeneralSQSTests.m */; }; + BDF1265D1B45C36100DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00004B1AB8E12D004496EF /* AWSTestUtility.m */; }; + BDF126601B45C36100DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532691B03D3BE002CED62 /* libz.dylib */; }; + BDF126611B45C36100DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF381AB8B69F004496EF /* libAWSCore.a */; }; + BDF126621B45C36100DFBFEC /* libAWSSQS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DEEE1AB37849002DD224 /* libAWSSQS.a */; }; CEE5326A1B03D3BE002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532691B03D3BE002CED62 /* libz.dylib */; }; CEE7DE791AC1E23F0095C4B7 /* AWSSQSService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE781AC1E23F0095C4B7 /* AWSSQSService.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ @@ -35,6 +40,13 @@ remoteGlobalIDString = BDB5DEED1AB37849002DD224; remoteInfo = SQS; }; + BDF126591B45C36100DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDB5DEE61AB37849002DD224 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDB5DEED1AB37849002DD224; + remoteInfo = SQS; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -53,8 +65,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0CD74F455438DDE2B529A9CC /* Pods-AWSSQS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSQS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSQS/Pods-AWSSQS.debug.xcconfig"; sourceTree = ""; }; - 90908289F45B06F1190D9910 /* libPods-AWSSQS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSSQS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD0000311AB8C4ED004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD00004A1AB8E12D004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD00004B1AB8E12D004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -71,9 +81,10 @@ BDB5DF0C1AB3786A002DD224 /* AWSSQSModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSQSModel.m; sourceTree = ""; }; BDB73D951B1D3FF100717559 /* AWSSQSResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSQSResources.h; sourceTree = ""; }; BDB73D961B1D3FF100717559 /* AWSSQSResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSQSResources.m; sourceTree = ""; }; + BDD876B91B4B5370009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF126681B45C36100DFBFEC /* AWSSQSUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSSQSUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CEE532691B03D3BE002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE781AC1E23F0095C4B7 /* AWSSQSService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSQSService.h; sourceTree = ""; }; - E7F5F3B82C3DB2A587FC187A /* Pods-AWSSQS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSQS.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSQS/Pods-AWSSQS.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -94,24 +105,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1265F1B45C36100DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876BA1B4B5370009268C7 /* libOCMock.a in Frameworks */, + BDF126601B45C36100DFBFEC /* libz.dylib in Frameworks */, + BDF126611B45C36100DFBFEC /* libAWSCore.a in Frameworks */, + BDF126621B45C36100DFBFEC /* libAWSSQS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 23BCF832AD7C4A401E0C9D94 /* Pods */ = { - isa = PBXGroup; - children = ( - 0CD74F455438DDE2B529A9CC /* Pods-AWSSQS.debug.xcconfig */, - E7F5F3B82C3DB2A587FC187A /* Pods-AWSSQS.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; 9CB08B3BEE06127D4F608086 /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876B91B4B5370009268C7 /* libOCMock.a */, CEE532691B03D3BE002CED62 /* libz.dylib */, BD00FF381AB8B69F004496EF /* libAWSCore.a */, - 90908289F45B06F1190D9910 /* libPods-AWSSQS.a */, ); name = Frameworks; sourceTree = ""; @@ -122,7 +135,6 @@ BDB5DEF01AB37849002DD224 /* AWSSQS */, BDB5DEFD1AB37849002DD224 /* AWSSQSTests */, BDB5DEEF1AB37849002DD224 /* Products */, - 23BCF832AD7C4A401E0C9D94 /* Pods */, 9CB08B3BEE06127D4F608086 /* Frameworks */, ); sourceTree = ""; @@ -132,6 +144,7 @@ children = ( BDB5DEEE1AB37849002DD224 /* libAWSSQS.a */, BDB5DEF91AB37849002DD224 /* AWSSQSTests.xctest */, + BDF126681B45C36100DFBFEC /* AWSSQSUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -225,6 +238,24 @@ productReference = BDB5DEF91AB37849002DD224 /* AWSSQSTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + BDF126571B45C36100DFBFEC /* AWSSQSUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF126651B45C36100DFBFEC /* Build configuration list for PBXNativeTarget "AWSSQSUnitTests" */; + buildPhases = ( + BDF1265A1B45C36100DFBFEC /* Sources */, + BDF1265F1B45C36100DFBFEC /* Frameworks */, + BDF126631B45C36100DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF126581B45C36100DFBFEC /* PBXTargetDependency */, + ); + name = AWSSQSUnitTests; + productName = SQSTests; + productReference = BDF126681B45C36100DFBFEC /* AWSSQSUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -256,6 +287,7 @@ targets = ( BDB5DEED1AB37849002DD224 /* AWSSQS */, BDB5DEF81AB37849002DD224 /* AWSSQSTests */, + BDF126571B45C36100DFBFEC /* AWSSQSUnitTests */, ); }; /* End PBXProject section */ @@ -269,6 +301,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF126631B45C36100DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -287,12 +326,20 @@ buildActionMask = 2147483647; files = ( BD3464871ADDB5D3000C5A95 /* AWSSQSClockSkewTests.m in Sources */, - BD00FFD81AB8C3FE004496EF /* AWSGeneralSQSTests.m in Sources */, BD00004C1AB8E12D004496EF /* AWSTestUtility.m in Sources */, BD00FFD91AB8C3FE004496EF /* AWSSQSTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1265A1B45C36100DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF1265C1B45C36100DFBFEC /* AWSGeneralSQSTests.m in Sources */, + BDF1265D1B45C36100DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -301,6 +348,11 @@ target = BDB5DEED1AB37849002DD224 /* AWSSQS */; targetProxy = BDB5DEFB1AB37849002DD224 /* PBXContainerItemProxy */; }; + BDF126581B45C36100DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDB5DEED1AB37849002DD224 /* AWSSQS */; + targetProxy = BDF126591B45C36100DFBFEC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -308,6 +360,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -349,6 +405,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -423,6 +483,7 @@ ); INFOPLIST_FILE = AWSSQSTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSQSTests; }; name = Debug; @@ -438,10 +499,69 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSSQSTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSQSTests; }; name = Release; }; + BDF126661B45C36100DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSSQSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSQSUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF126671B45C36100DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSSQSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSQSUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -472,6 +592,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF126651B45C36100DFBFEC /* Build configuration list for PBXNativeTarget "AWSSQSUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF126661B45C36100DFBFEC /* Debug */, + BDF126671B45C36100DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BDB5DEE61AB37849002DD224 /* Project object */; diff --git a/AWSSQS.xcodeproj/xcshareddata/xcschemes/AWSSQS.xcscheme b/AWSSQS.xcodeproj/xcshareddata/xcschemes/AWSSQS.xcscheme new file mode 100644 index 00000000000..4ceb58da9c6 --- /dev/null +++ b/AWSSQS.xcodeproj/xcshareddata/xcschemes/AWSSQS.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSSQS/AWSSQSService.m b/AWSSQS/AWSSQSService.m index d0ce5ebf230..bef4508dbf2 100644 --- a/AWSSQS/AWSSQSService.m +++ b/AWSSQS/AWSSQSService.m @@ -229,7 +229,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSQSRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSSQSTests/AWSGeneralSQSTests.m b/AWSSQSTests/AWSGeneralSQSTests.m index a0614dc5c31..d04a1b21ecf 100644 --- a/AWSSQSTests/AWSGeneralSQSTests.m +++ b/AWSSQSTests/AWSGeneralSQSTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSSQS.h" +static id mockNetworking = nil; + @interface AWSGeneralSQSTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralSQSTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testAddPermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] addPermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -70,13 +84,20 @@ - (void)testChangeMessageVisibility { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] changeMessageVisibility:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -85,13 +106,20 @@ - (void)testChangeMessageVisibilityBatch { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] changeMessageVisibilityBatch:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -100,13 +128,20 @@ - (void)testCreateQueue { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] createQueue:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDeleteMessage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] deleteMessage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDeleteMessageBatch { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] deleteMessageBatch:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -145,13 +194,20 @@ - (void)testDeleteQueue { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] deleteQueue:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -160,13 +216,20 @@ - (void)testGetQueueAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] getQueueAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -175,13 +238,20 @@ - (void)testGetQueueUrl { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] getQueueUrl:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -190,13 +260,20 @@ - (void)testListDeadLetterSourceQueues { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] listDeadLetterSourceQueues:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -205,13 +282,20 @@ - (void)testListQueues { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] listQueues:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -220,13 +304,20 @@ - (void)testReceiveMessage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] receiveMessage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -235,13 +326,20 @@ - (void)testRemovePermission { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] removePermission:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -250,13 +348,20 @@ - (void)testSendMessage { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] sendMessage:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -265,13 +370,20 @@ - (void)testSendMessageBatch { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] sendMessageBatch:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } @@ -280,13 +392,20 @@ - (void)testSetQueueAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSQS registerSQSWithConfiguration:configuration forKey:key]; + AWSSQS *awsClient = [AWSSQS SQSForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSQS SQSForKey:key] setQueueAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSQS removeSQSForKey:key]; } diff --git a/AWSSimpleDB.podspec b/AWSSimpleDB.podspec index a5a10e37ee2..37f6b6bab55 100644 --- a/AWSSimpleDB.podspec +++ b/AWSSimpleDB.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSSimpleDB' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.2.0' + s.dependency 'AWSCore', '2.2.1' s.source_files = 'AWSSimpleDB/*.{h,m}' end diff --git a/AWSSimpleDB.xcodeproj/project.pbxproj b/AWSSimpleDB.xcodeproj/project.pbxproj index 531c76b7b20..2598d0c6b64 100644 --- a/AWSSimpleDB.xcodeproj/project.pbxproj +++ b/AWSSimpleDB.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BD0000361AB8C509004496EF /* credentials.json in Resources */ = {isa = PBXBuildFile; fileRef = BD0000351AB8C509004496EF /* credentials.json */; }; BD0000521AB8E16D004496EF /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000511AB8E16D004496EF /* AWSTestUtility.m */; }; BD00FF3D1AB8B6C4004496EF /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3C1AB8B6C4004496EF /* libAWSCore.a */; }; - BD00FFE01AB8C417004496EF /* AWSGeneralSimpleDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDE1AB8C417004496EF /* AWSGeneralSimpleDBTests.m */; }; BD00FFE11AB8C417004496EF /* AWSSimpleDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDF1AB8C417004496EF /* AWSSimpleDBTests.m */; }; BD9D97651AC1EEDB00CEEE08 /* AWSSimpleDBService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE7DE5E1AC1DEEA0095C4B7 /* AWSSimpleDBService.h */; }; BDB5DE9C1AB377AF002DD224 /* libAWSSimpleDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DE901AB377AF002DD224 /* libAWSSimpleDB.a */; }; @@ -22,6 +21,12 @@ BDB73D901B1D3F7500717559 /* AWSSimpleDBResources.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB73D8E1B1D3F7500717559 /* AWSSimpleDBResources.m */; }; BDC91C421ABBA09100F74D49 /* AWSSimpleDB.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DEAC1AB377D1002DD224 /* AWSSimpleDB.h */; }; BDC91C431ABBA09100F74D49 /* AWSSimpleDBModel.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BDB5DEAE1AB377D1002DD224 /* AWSSimpleDBModel.h */; }; + BDD876B61B4B5354009268C7 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDD876B51B4B5354009268C7 /* libOCMock.a */; }; + BDF126371B45C31C00DFBFEC /* AWSGeneralSimpleDBTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BD00FFDE1AB8C417004496EF /* AWSGeneralSimpleDBTests.m */; }; + BDF126381B45C31C00DFBFEC /* AWSTestUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0000511AB8E16D004496EF /* AWSTestUtility.m */; }; + BDF1263B1B45C31C00DFBFEC /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532671B03D3B7002CED62 /* libz.dylib */; }; + BDF1263C1B45C31C00DFBFEC /* libAWSCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD00FF3C1AB8B6C4004496EF /* libAWSCore.a */; }; + BDF1263D1B45C31C00DFBFEC /* libAWSSimpleDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BDB5DE901AB377AF002DD224 /* libAWSSimpleDB.a */; }; CEE532681B03D3B7002CED62 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE532671B03D3B7002CED62 /* libz.dylib */; }; CEE7DE5F1AC1DEEA0095C4B7 /* AWSSimpleDBService.h in Headers */ = {isa = PBXBuildFile; fileRef = CEE7DE5E1AC1DEEA0095C4B7 /* AWSSimpleDBService.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ @@ -34,6 +39,13 @@ remoteGlobalIDString = BDB5DE8F1AB377AF002DD224; remoteInfo = SimpleDB; }; + BDF126351B45C31C00DFBFEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BDB5DE881AB377AF002DD224 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BDB5DE8F1AB377AF002DD224; + remoteInfo = SimpleDB; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -52,9 +64,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 502E5942549583CE9AAF0159 /* libPods-AWSSimpleDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AWSSimpleDB.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5A6B2A9829343DEDBC2D3747 /* Pods-AWSSimpleDB.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSimpleDB.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSimpleDB/Pods-AWSSimpleDB.debug.xcconfig"; sourceTree = ""; }; - A8AC682963E8485349CE6DFF /* Pods-AWSSimpleDB.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AWSSimpleDB.release.xcconfig"; path = "Pods/Target Support Files/Pods-AWSSimpleDB/Pods-AWSSimpleDB.release.xcconfig"; sourceTree = ""; }; BD0000351AB8C509004496EF /* credentials.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = credentials.json; path = AWSCoreTests/credentials.json; sourceTree = SOURCE_ROOT; }; BD0000501AB8E16D004496EF /* AWSTestUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AWSTestUtility.h; path = AWSCoreTests/AWSTestUtility.h; sourceTree = SOURCE_ROOT; }; BD0000511AB8E16D004496EF /* AWSTestUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AWSTestUtility.m; path = AWSCoreTests/AWSTestUtility.m; sourceTree = SOURCE_ROOT; }; @@ -70,6 +79,8 @@ BDB5DEAF1AB377D1002DD224 /* AWSSimpleDBModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSimpleDBModel.m; sourceTree = ""; }; BDB73D8D1B1D3F7500717559 /* AWSSimpleDBResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSimpleDBResources.h; sourceTree = ""; }; BDB73D8E1B1D3F7500717559 /* AWSSimpleDBResources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSSimpleDBResources.m; sourceTree = ""; }; + BDD876B51B4B5354009268C7 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = AWSCoreTests/OCMock/libOCMock.a; sourceTree = ""; }; + BDF126431B45C31C00DFBFEC /* AWSSimpleDBUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AWSSimpleDBUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; CEE532671B03D3B7002CED62 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; CEE7DE5E1AC1DEEA0095C4B7 /* AWSSimpleDBService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSSimpleDBService.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -92,6 +103,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1263A1B45C31C00DFBFEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDD876B61B4B5354009268C7 /* libOCMock.a in Frameworks */, + BDF1263B1B45C31C00DFBFEC /* libz.dylib in Frameworks */, + BDF1263C1B45C31C00DFBFEC /* libAWSCore.a in Frameworks */, + BDF1263D1B45C31C00DFBFEC /* libAWSSimpleDB.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -101,7 +123,6 @@ BDB5DE921AB377AF002DD224 /* AWSSimpleDB */, BDB5DE9F1AB377AF002DD224 /* AWSSimpleDBTests */, BDB5DE911AB377AF002DD224 /* Products */, - C311D4E5DA280D0A5916D74B /* Pods */, CC221F0612D8271C7295C9FB /* Frameworks */, ); sourceTree = ""; @@ -111,6 +132,7 @@ children = ( BDB5DE901AB377AF002DD224 /* libAWSSimpleDB.a */, BDB5DE9B1AB377AF002DD224 /* AWSSimpleDBTests.xctest */, + BDF126431B45C31C00DFBFEC /* AWSSimpleDBUnitTests.xctest */, ); name = Products; sourceTree = ""; @@ -150,21 +172,12 @@ name = "Supporting Files"; sourceTree = ""; }; - C311D4E5DA280D0A5916D74B /* Pods */ = { - isa = PBXGroup; - children = ( - 5A6B2A9829343DEDBC2D3747 /* Pods-AWSSimpleDB.debug.xcconfig */, - A8AC682963E8485349CE6DFF /* Pods-AWSSimpleDB.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; CC221F0612D8271C7295C9FB /* Frameworks */ = { isa = PBXGroup; children = ( + BDD876B51B4B5354009268C7 /* libOCMock.a */, CEE532671B03D3B7002CED62 /* libz.dylib */, BD00FF3C1AB8B6C4004496EF /* libAWSCore.a */, - 502E5942549583CE9AAF0159 /* libPods-AWSSimpleDB.a */, ); name = Frameworks; sourceTree = ""; @@ -222,6 +235,24 @@ productReference = BDB5DE9B1AB377AF002DD224 /* AWSSimpleDBTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + BDF126331B45C31C00DFBFEC /* AWSSimpleDBUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BDF126401B45C31C00DFBFEC /* Build configuration list for PBXNativeTarget "AWSSimpleDBUnitTests" */; + buildPhases = ( + BDF126361B45C31C00DFBFEC /* Sources */, + BDF1263A1B45C31C00DFBFEC /* Frameworks */, + BDF1263E1B45C31C00DFBFEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BDF126341B45C31C00DFBFEC /* PBXTargetDependency */, + ); + name = AWSSimpleDBUnitTests; + productName = SimpleDBTests; + productReference = BDF126431B45C31C00DFBFEC /* AWSSimpleDBUnitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -253,6 +284,7 @@ targets = ( BDB5DE8F1AB377AF002DD224 /* AWSSimpleDB */, BDB5DE9A1AB377AF002DD224 /* AWSSimpleDBTests */, + BDF126331B45C31C00DFBFEC /* AWSSimpleDBUnitTests */, ); }; /* End PBXProject section */ @@ -266,6 +298,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BDF1263E1B45C31C00DFBFEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -283,12 +322,20 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BD00FFE01AB8C417004496EF /* AWSGeneralSimpleDBTests.m in Sources */, BD0000521AB8E16D004496EF /* AWSTestUtility.m in Sources */, BD00FFE11AB8C417004496EF /* AWSSimpleDBTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + BDF126361B45C31C00DFBFEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDF126371B45C31C00DFBFEC /* AWSGeneralSimpleDBTests.m in Sources */, + BDF126381B45C31C00DFBFEC /* AWSTestUtility.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -297,6 +344,11 @@ target = BDB5DE8F1AB377AF002DD224 /* AWSSimpleDB */; targetProxy = BDB5DE9D1AB377AF002DD224 /* PBXContainerItemProxy */; }; + BDF126341B45C31C00DFBFEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BDB5DE8F1AB377AF002DD224 /* AWSSimpleDB */; + targetProxy = BDF126351B45C31C00DFBFEC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -304,6 +356,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -345,6 +401,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -419,6 +479,7 @@ ); INFOPLIST_FILE = AWSSimpleDBTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSimpleDBTests; }; name = Debug; @@ -434,10 +495,69 @@ GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; INFOPLIST_FILE = AWSSimpleDBTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(SYMROOT)"; PRODUCT_NAME = AWSSimpleDBTests; }; name = Release; }; + BDF126411B45C31C00DFBFEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = AWSSimpleDBTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSimpleDBUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Debug; + }; + BDF126421B45C31C00DFBFEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_GENERATE_TEST_COVERAGE_FILES = YES; + GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; + INFOPLIST_FILE = AWSSimpleDBTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(SYMROOT)", + "$(PROJECT_DIR)/AWSCoreTests/OCMock", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + XCTest, + "-force_load", + "$(PROJECT_DIR)/AWSCoreTests/OCMock/libOCMock.a", + ); + PRODUCT_NAME = AWSSimpleDBUnitTests; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include/** $(PROJECT_DIR)/AWSCoreTests/OCMock"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -468,6 +588,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + BDF126401B45C31C00DFBFEC /* Build configuration list for PBXNativeTarget "AWSSimpleDBUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDF126411B45C31C00DFBFEC /* Debug */, + BDF126421B45C31C00DFBFEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BDB5DE881AB377AF002DD224 /* Project object */; diff --git a/AWSSimpleDB.xcodeproj/xcshareddata/xcschemes/AWSSimpleDB.xcscheme b/AWSSimpleDB.xcodeproj/xcshareddata/xcschemes/AWSSimpleDB.xcscheme new file mode 100644 index 00000000000..6fdd1e1097e --- /dev/null +++ b/AWSSimpleDB.xcodeproj/xcshareddata/xcschemes/AWSSimpleDB.xcscheme @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AWSSimpleDB/AWSSimpleDBService.m b/AWSSimpleDB/AWSSimpleDBService.m index 8f065023191..cb4a30ec94c 100644 --- a/AWSSimpleDB/AWSSimpleDBService.m +++ b/AWSSimpleDB/AWSSimpleDBService.m @@ -221,7 +221,6 @@ - (instancetype)initWithConfiguration:(AWSServiceConfiguration *)configuration { _configuration.baseURL = _configuration.endpoint.URL; _configuration.requestInterceptors = @[[AWSNetworkingRequestInterceptor new], signer]; _configuration.retryHandler = [[AWSSimpleDBRequestRetryHandler alloc] initWithMaximumRetryCount:_configuration.maxRetryCount]; - _configuration.headers = @{@"Host" : _configuration.endpoint.hostName}; _networking = [[AWSNetworking alloc] initWithConfiguration:_configuration]; } diff --git a/AWSSimpleDBTests/AWSGeneralSimpleDBTests.m b/AWSSimpleDBTests/AWSGeneralSimpleDBTests.m index ae2bf509dfb..ebe8f9a6701 100644 --- a/AWSSimpleDBTests/AWSGeneralSimpleDBTests.m +++ b/AWSSimpleDBTests/AWSGeneralSimpleDBTests.m @@ -15,9 +15,12 @@ #import #import +#import #import "AWSTestUtility.h" #import "AWSSimpleDB.h" +static id mockNetworking = nil; + @interface AWSGeneralSimpleDBTests : XCTestCase @end @@ -26,7 +29,11 @@ @implementation AWSGeneralSimpleDBTests - (void)setUp { [super setUp]; - [AWSTestUtility setupCognitoCredentialsProvider]; + [AWSTestUtility setupFakeCognitoCredentialsProvider]; + + mockNetworking = OCMClassMock([AWSNetworking class]); + AWSTask *errorTask = [AWSTask taskWithError:[NSError errorWithDomain:@"OCMockExpectedNetworkingError" code:8848 userInfo:nil]]; + OCMStub([mockNetworking sendRequest:[OCMArg isKindOfClass:[AWSNetworkingRequest class]]]).andReturn(errorTask); } - (void)tearDown { @@ -55,13 +62,20 @@ - (void)testBatchDeleteAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] batchDeleteAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -70,13 +84,20 @@ - (void)testBatchPutAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] batchPutAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -85,13 +106,20 @@ - (void)testCreateDomain { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] createDomain:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -100,13 +128,20 @@ - (void)testDeleteAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] deleteAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -115,13 +150,20 @@ - (void)testDeleteDomain { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] deleteDomain:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -130,13 +172,20 @@ - (void)testDomainMetadata { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] domainMetadata:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -145,13 +194,20 @@ - (void)testGetAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] getAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -160,13 +216,20 @@ - (void)testListDomains { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] listDomains:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -175,13 +238,20 @@ - (void)testPutAttributes { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] putAttributes:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } @@ -190,13 +260,20 @@ - (void)testSelect { AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUnknown credentialsProvider:nil]; [AWSSimpleDB registerSimpleDBWithConfiguration:configuration forKey:key]; + AWSSimpleDB *awsClient = [AWSSimpleDB SimpleDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); [awsClient setValue:mockNetworking forKey:@"networking"]; [[[[AWSSimpleDB SimpleDBForKey:key] select:nil] continueWithBlock:^id(AWSTask *task) { XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); XCTAssertNil(task.exception); XCTAssertNil(task.result); return nil; }] waitUntilFinished]; + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + [AWSSimpleDB removeSimpleDBForKey:key]; } diff --git a/AWSSimpleDBTests/AWSSimpleDBTests.m b/AWSSimpleDBTests/AWSSimpleDBTests.m index f7fd21bbb3a..ac6f56abe78 100644 --- a/AWSSimpleDBTests/AWSSimpleDBTests.m +++ b/AWSSimpleDBTests/AWSSimpleDBTests.m @@ -15,6 +15,7 @@ #if !AWS_TEST_BJS_INSTEAD +#import #import #import "AWSSimpleDB.h" #import "AWSTestUtility.h" diff --git a/AWSiOSSDKv2.podspec b/AWSiOSSDKv2.podspec index ad505c66397..fad99aef65c 100644 --- a/AWSiOSSDKv2.podspec +++ b/AWSiOSSDKv2.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSiOSSDKv2' - s.version = '2.2.0' + s.version = '2.2.1' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -15,54 +15,54 @@ Pod::Spec.new do |s| s.requires_arc = true s.subspec 'AWSCore' do |aws| - aws.dependency 'AWSCore', '2.2.0' + aws.dependency 'AWSCore', '2.2.1' end s.subspec 'AutoScaling' do |autoscaling| - autoscaling.dependency 'AWSAutoScaling', '2.2.0' + autoscaling.dependency 'AWSAutoScaling', '2.2.1' end s.subspec 'CloudWatch' do |cloudwatch| - cloudwatch.dependency 'AWSCloudWatch', '2.2.0' + cloudwatch.dependency 'AWSCloudWatch', '2.2.1' end s.subspec 'DynamoDB' do |ddb| - ddb.dependency 'AWSDynamoDB', '2.2.0' + ddb.dependency 'AWSDynamoDB', '2.2.1' end s.subspec 'EC2' do |ec2| - ec2.dependency 'AWSEC2', '2.2.0' + ec2.dependency 'AWSEC2', '2.2.1' end s.subspec 'ElasticLoadBalancing' do |elasticloadbalancing| - elasticloadbalancing.dependency 'AWSElasticLoadBalancing', '2.2.0' + elasticloadbalancing.dependency 'AWSElasticLoadBalancing', '2.2.1' end s.subspec 'Kinesis' do |kinesis| - kinesis.dependency 'AWSKinesis', '2.2.0' + kinesis.dependency 'AWSKinesis', '2.2.1' end s.subspec 'MobileAnalytics' do |mobileanalytics| - mobileanalytics.dependency 'AWSMobileAnalytics', '2.2.0' + mobileanalytics.dependency 'AWSMobileAnalytics', '2.2.1' end s.subspec 'S3' do |s3| - s3.dependency 'AWSS3', '2.2.0' + s3.dependency 'AWSS3', '2.2.1' end s.subspec 'SES' do |ses| - ses.dependency 'AWSSES', '2.2.0' + ses.dependency 'AWSSES', '2.2.1' end s.subspec 'SimpleDB' do |simpledb| - simpledb.dependency 'AWSSimpleDB', '2.2.0' + simpledb.dependency 'AWSSimpleDB', '2.2.1' end s.subspec 'SNS' do |sns| - sns.dependency 'AWSSNS', '2.2.0' + sns.dependency 'AWSSNS', '2.2.1' end s.subspec 'SQS' do |sqs| - sqs.dependency 'AWSSQS', '2.2.0' + sqs.dependency 'AWSSQS', '2.2.1' end end diff --git a/AWSiOSSDKv2.xcworkspace/contents.xcworkspacedata b/AWSiOSSDKv2.xcworkspace/contents.xcworkspacedata index 66550dbc783..505ba762277 100644 --- a/AWSiOSSDKv2.xcworkspace/contents.xcworkspacedata +++ b/AWSiOSSDKv2.xcworkspace/contents.xcworkspacedata @@ -4,6 +4,9 @@ + + diff --git a/Scripts/GenerateAppleDocs.sh b/Scripts/GenerateAppleDocs.sh old mode 100755 new mode 100644 index 2cb25ccccb3..b787874b8aa --- a/Scripts/GenerateAppleDocs.sh +++ b/Scripts/GenerateAppleDocs.sh @@ -9,7 +9,7 @@ function cleanup } -VERSION="2.2.0" +VERSION="2.2.1" if [ -n $1 ] && [ "$1" == "clean" ]; then cleanup @@ -26,6 +26,7 @@ else mkdir -p docs mkdir -p docs_tmp + cp -r AWSAPIGateway ./docs_tmp/AWSAPIGateway cp -r AWSAutoScaling ./docs_tmp/AWSAutoScaling cp -r AWSCore ./docs_tmp/AWSCore cp -r AWSCloudWatch ./docs_tmp/AWSCloudWatch @@ -54,17 +55,17 @@ else rm -rf ./docs_tmp/AWSMobileAnalytics/Internal - if [ -d ../AWSiOSSDKCognitoSync ] + if [ -d ./AWSiOSSDKCognitoSync ] then - cp -r ../AWSiOSSDKCognitoSync/Cognito ./docs_tmp/Cognito + cp -r ./AWSiOSSDKCognitoSync/Cognito ./docs_tmp/Cognito rm -rf ./docs_tmp/Cognito/Internal - cp -r ../AWSiOSSDKCognitoSync/CognitoSync ./docs_tmp/CognitoSync + cp -r ./AWSiOSSDKCognitoSync/CognitoSync ./docs_tmp/CognitoSync fi cd docs_tmp # generate documenation - /usr/local/bin/appledoc --verbose 0 \ + appledoc --verbose 0 \ --output ../docs \ --exit-threshold 2 \ --no-repeat-first-par \ @@ -102,10 +103,10 @@ else #git push origin mainline rm -rf Documentation - mkdir Documentation - mv docs/html Documentation - mv docs/com.amazon.aws.ios.docset Documentation - mv docs/aws-sdk-ios-docs.zip Documentation + mkdir "$BUILT_PRODUCTS_DIR"/Documentation + mv docs/html "$BUILT_PRODUCTS_DIR"/Documentation + mv docs/com.amazon.aws.ios.docset "$BUILT_PRODUCTS_DIR"/Documentation + mv docs/aws-sdk-ios-docs.zip "$BUILT_PRODUCTS_DIR"/Documentation rm -rf docs rm -rf docs_tmp diff --git a/Scripts/Package.sh b/Scripts/Package.sh old mode 100755 new mode 100644 index f5e888bc349..f9c9d5a0438 --- a/Scripts/Package.sh +++ b/Scripts/Package.sh @@ -13,7 +13,7 @@ function exitOnFailureCode() { # clean if [ -n $1 ] && [ "$1" == "clean" ]; then - rm -rf build + rm -rf builtFramework echo "Cleaning Completed" exit 0 fi diff --git a/Scripts/SdkPackage.sh b/Scripts/SdkPackage.sh old mode 100755 new mode 100644 index fdcf067537f..1d415cb9a1c --- a/Scripts/SdkPackage.sh +++ b/Scripts/SdkPackage.sh @@ -30,7 +30,7 @@ FRAMEWORK_VERSION=A # Where we'll put the build framework. # The script presumes we're in the project root # directory. Xcode builds in "build" by default -FRAMEWORK_BUILD_PATH="build/framework" +FRAMEWORK_BUILD_PATH="builtFramework/framework" # Clean any existing framework that might be there @@ -48,7 +48,7 @@ xcodebuild ARCHS="armv7 armv7s arm64 i386 x86_64" \ -project "${project_name}.xcodeproj" \ -target "${project_name}" \ -sdk iphonesimulator \ - SYMROOT=$(PWD)/build \ + SYMROOT=$(PWD)/builtFramework \ clean build exitOnFailureCode $? @@ -59,7 +59,7 @@ xcodebuild ARCHS="armv7 armv7s arm64 i386 x86_64" \ -project "${project_name}.xcodeproj" \ -target "${project_name}" \ -sdk iphoneos \ - SYMROOT=$(PWD)/build \ + SYMROOT=$(PWD)/builtFramework \ clean build exitOnFailureCode $? @@ -96,8 +96,8 @@ ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_DIR/$FRAMEWORK_NAME # framework with no .a extension. echo "Framework: Creating library..." lipo -create \ - "build/Debug-iphonesimulator/lib${project_name}.a" \ - "build/Release-iphoneos/lib${project_name}.a" \ + "builtFramework/Debug-iphonesimulator/lib${project_name}.a" \ + "builtFramework/Release-iphoneos/lib${project_name}.a" \ -o "$FRAMEWORK_DIR/Versions/Current/$FRAMEWORK_NAME" exitOnFailureCode $? @@ -106,11 +106,11 @@ exitOnFailureCode $? # header files and service definition json files echo "Framework: Copying public headers into current version..." #those headers are declared in xcode's building phase: Headers -cp -a build/Release-iphoneos/include/${project_name}/*.h $FRAMEWORK_DIR/Headers/ +cp -a builtFramework/Release-iphoneos/include/${project_name}/*.h $FRAMEWORK_DIR/Headers/ exitOnFailureCode $? # copy service definition json files echo "Copying service definition files into current build directory..." -mkdir -p 'build/service-definitions' -find . -name "*.json" -not -path "./*Tests/*" -not -path './build/*' -exec cp {} 'build/service-definitions/' \; +mkdir -p 'builtFramework/service-definitions' +find . -name "*.json" -not -path "./*Tests/*" -not -path './builtFramework/*' -exec cp {} 'builtFramework/service-definitions/' \; exitOnFailureCode $? diff --git a/include/AWSCore/AWSUICKeyChainStore.h b/include/AWSCore/AWSUICKeyChainStore.h new file mode 120000 index 00000000000..021cf3823c8 --- /dev/null +++ b/include/AWSCore/AWSUICKeyChainStore.h @@ -0,0 +1 @@ +../../AWSCore/UICKeyChainStore/AWSUICKeyChainStore.h \ No newline at end of file diff --git a/include/AWSCore/MobileAnalytics.h b/include/AWSCore/MobileAnalytics.h deleted file mode 120000 index 848157db746..00000000000 --- a/include/AWSCore/MobileAnalytics.h +++ /dev/null @@ -1 +0,0 @@ -../../AWSCore/MobileAnalytics/MobileAnalytics.h \ No newline at end of file

<2<0K<{61lYK;%u~59@Xm;p`p5-zjjDzz%^c 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�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