From 1fe4060ad4441fc502dd53f4dd7092c824d4fb11 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Thu, 15 Oct 2015 22:51:05 -0700 Subject: [PATCH 1/2] Updated paths to all configuration files. --- ParseTwitterUtils.xcodeproj/project.pbxproj | 108 ++++++++++---------- Podfile.lock | 2 +- 2 files changed, 57 insertions(+), 53 deletions(-) diff --git a/ParseTwitterUtils.xcodeproj/project.pbxproj b/ParseTwitterUtils.xcodeproj/project.pbxproj index c1a010d..7c5a50d 100644 --- a/ParseTwitterUtils.xcodeproj/project.pbxproj +++ b/ParseTwitterUtils.xcodeproj/project.pbxproj @@ -65,6 +65,17 @@ /* Begin PBXFileReference section */ 06D00BAE1BC78F29005BAA6F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/ParseTwitterUtils.strings; sourceTree = ""; }; 06D00BB41BC790F3005BAA6F /* PFTwitterLocalization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFTwitterLocalization.h; sourceTree = ""; }; + 06DD47201BD0C64500A43759 /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; + 06DD47221BD0C64500A43759 /* iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; + 06DD47231BD0C64500A43759 /* OSX.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OSX.xcconfig; sourceTree = ""; }; + 06DD47241BD0C64500A43759 /* tvOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = tvOS.xcconfig; sourceTree = ""; }; + 06DD47251BD0C64500A43759 /* watchOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = watchOS.xcconfig; sourceTree = ""; }; + 06DD47271BD0C64500A43759 /* Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Application.xcconfig; sourceTree = ""; }; + 06DD47281BD0C64500A43759 /* Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Framework.xcconfig; sourceTree = ""; }; + 06DD47291BD0C64500A43759 /* UnitTest.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = UnitTest.xcconfig; sourceTree = ""; }; + 06DD472B1BD0C64500A43759 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + 06DD472C1BD0C64500A43759 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 06DD472D1BD0C64500A43759 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 8135E48E1B4B6A0E0092F452 /* PF_Twitter_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PF_Twitter_Private.h; sourceTree = ""; }; 8135E48F1B4B6A0E0092F452 /* PFTwitterAuthenticationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFTwitterAuthenticationProvider.h; sourceTree = ""; }; 8135E4901B4B6A0E0092F452 /* PFTwitterAuthenticationProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PFTwitterAuthenticationProvider.m; sourceTree = ""; }; @@ -90,15 +101,6 @@ 8166FB671B4F1D77003841A2 /* ParseTwitterTestApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ParseTwitterTestApplication.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8166FB8F1B4F1DC5003841A2 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 8166FB911B4F1DC5003841A2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8178BEB21B716EB900051CF4 /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; - 8178BEB41B716EB900051CF4 /* iOS.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iOS.xcconfig; sourceTree = ""; }; - 8178BEB51B716EB900051CF4 /* OSX.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OSX.xcconfig; sourceTree = ""; }; - 8178BEB71B716EB900051CF4 /* Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Application.xcconfig; sourceTree = ""; }; - 8178BEB81B716EB900051CF4 /* Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Framework.xcconfig; sourceTree = ""; }; - 8178BEB91B716EB900051CF4 /* UnitTest.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = UnitTest.xcconfig; sourceTree = ""; }; - 8178BEBB1B716EB900051CF4 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 8178BEBC1B716EB900051CF4 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8178BEBE1B716EB900051CF4 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 817A37C91B4B741A00129AFA /* PF_OAuthCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PF_OAuthCore.h; sourceTree = ""; }; 817A37CA1B4B741A00129AFA /* PF_OAuthCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PF_OAuthCore.m; sourceTree = ""; }; 81930A391BBDE76E00A5E4BB /* PFTwitterTestMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PFTwitterTestMacros.h; sourceTree = ""; }; @@ -161,6 +163,48 @@ name = Products; sourceTree = ""; }; + 06DD471F1BD0C64500A43759 /* Shared */ = { + isa = PBXGroup; + children = ( + 06DD47201BD0C64500A43759 /* Common.xcconfig */, + 06DD47211BD0C64500A43759 /* Platform */, + 06DD47261BD0C64500A43759 /* Product */, + 06DD472A1BD0C64500A43759 /* Project */, + 06DD472D1BD0C64500A43759 /* Warnings.xcconfig */, + ); + path = Shared; + sourceTree = ""; + }; + 06DD47211BD0C64500A43759 /* Platform */ = { + isa = PBXGroup; + children = ( + 06DD47221BD0C64500A43759 /* iOS.xcconfig */, + 06DD47231BD0C64500A43759 /* OSX.xcconfig */, + 06DD47241BD0C64500A43759 /* tvOS.xcconfig */, + 06DD47251BD0C64500A43759 /* watchOS.xcconfig */, + ); + path = Platform; + sourceTree = ""; + }; + 06DD47261BD0C64500A43759 /* Product */ = { + isa = PBXGroup; + children = ( + 06DD47271BD0C64500A43759 /* Application.xcconfig */, + 06DD47281BD0C64500A43759 /* Framework.xcconfig */, + 06DD47291BD0C64500A43759 /* UnitTest.xcconfig */, + ); + path = Product; + sourceTree = ""; + }; + 06DD472A1BD0C64500A43759 /* Project */ = { + isa = PBXGroup; + children = ( + 06DD472B1BD0C64500A43759 /* Debug.xcconfig */, + 06DD472C1BD0C64500A43759 /* Release.xcconfig */, + ); + path = Project; + sourceTree = ""; + }; 0867D691FE84028FC02AAC07 /* Breakpad */ = { isa = PBXGroup; children = ( @@ -317,46 +361,6 @@ path = Resources; sourceTree = ""; }; - 8178BEB11B716EB900051CF4 /* Shared */ = { - isa = PBXGroup; - children = ( - 8178BEB21B716EB900051CF4 /* Common.xcconfig */, - 8178BEB31B716EB900051CF4 /* Platform */, - 8178BEB61B716EB900051CF4 /* Product */, - 8178BEBA1B716EB900051CF4 /* Project */, - 8178BEBE1B716EB900051CF4 /* Warnings.xcconfig */, - ); - path = Shared; - sourceTree = ""; - }; - 8178BEB31B716EB900051CF4 /* Platform */ = { - isa = PBXGroup; - children = ( - 8178BEB41B716EB900051CF4 /* iOS.xcconfig */, - 8178BEB51B716EB900051CF4 /* OSX.xcconfig */, - ); - path = Platform; - sourceTree = ""; - }; - 8178BEB61B716EB900051CF4 /* Product */ = { - isa = PBXGroup; - children = ( - 8178BEB71B716EB900051CF4 /* Application.xcconfig */, - 8178BEB81B716EB900051CF4 /* Framework.xcconfig */, - 8178BEB91B716EB900051CF4 /* UnitTest.xcconfig */, - ); - path = Product; - sourceTree = ""; - }; - 8178BEBA1B716EB900051CF4 /* Project */ = { - isa = PBXGroup; - children = ( - 8178BEBB1B716EB900051CF4 /* Debug.xcconfig */, - 8178BEBC1B716EB900051CF4 /* Release.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; 817A37C81B4B741A00129AFA /* OAuthCore */ = { isa = PBXGroup; children = ( @@ -388,7 +392,7 @@ F51535381B57451200C49F56 /* Configurations */ = { isa = PBXGroup; children = ( - 8178BEB11B716EB900051CF4 /* Shared */, + 06DD471F1BD0C64500A43759 /* Shared */, F51535531B57453700C49F56 /* ParseTwitterUtils-iOS.xcconfig */, F51535541B57454500C49F56 /* ParseTwitterUtils-Tests.xcconfig */, F51535551B57455200C49F56 /* ParseTwitterTestApplication.xcconfig */, @@ -701,7 +705,7 @@ }; 1DEB922308733DC00010E9CD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8178BEBB1B716EB900051CF4 /* Debug.xcconfig */; + baseConfigurationReference = 06DD472B1BD0C64500A43759 /* Debug.xcconfig */; buildSettings = { PARSE_DIR = "$(PROJECT_DIR)/.."; }; @@ -709,7 +713,7 @@ }; 1DEB922408733DC00010E9CD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8178BEBC1B716EB900051CF4 /* Release.xcconfig */; + baseConfigurationReference = 06DD472C1BD0C64500A43759 /* Release.xcconfig */; buildSettings = { PARSE_DIR = "$(PROJECT_DIR)/.."; }; diff --git a/Podfile.lock b/Podfile.lock index 844ef74..bea819f 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -7,4 +7,4 @@ DEPENDENCIES: SPEC CHECKSUMS: OCMock: 28def049ef47f996b515a8eeea958be7ccab2dbb -COCOAPODS: 0.39.0.beta.4 +COCOAPODS: 0.39.0 From 06c65956b4074d766fb90f5bc6c6cfd5b48be9e4 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Thu, 15 Oct 2015 22:51:22 -0700 Subject: [PATCH 2/2] Added assert for Parse initialization before PFTwitterUtils. --- ParseTwitterUtils/PFTwitterUtils.m | 8 ++++++++ Tests/Unit/TwitterUtilsTests.m | 15 +++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ParseTwitterUtils/PFTwitterUtils.m b/ParseTwitterUtils/PFTwitterUtils.m index a745674..e683425 100644 --- a/ParseTwitterUtils/PFTwitterUtils.m +++ b/ParseTwitterUtils/PFTwitterUtils.m @@ -12,6 +12,8 @@ #import #import +#import + #import "PFTwitterAuthenticationProvider.h" #import "PFTwitterPrivateUtilities.h" #import "PF_Twitter.h" @@ -41,7 +43,13 @@ + (void)_assertTwitterInitialized { @"You must call PFTwitterUtils initializeWithConsumerKey:consumerSecret: to use PFTwitterUtils."); } ++ (void)_assertParseInitialized { + PFTWConsistencyAssert([Parse getApplicationId] && [Parse getClientKey], + @"PFTwitterUtils should be initialized after setting up Parse."); +} + + (void)initializeWithConsumerKey:(NSString *)consumerKey consumerSecret:(NSString *)consumerSecret { + [self _assertParseInitialized]; if (![self _authenticationProvider]) { PF_Twitter *twitter = [[PF_Twitter alloc] init]; twitter.consumerKey = consumerKey; diff --git a/Tests/Unit/TwitterUtilsTests.m b/Tests/Unit/TwitterUtilsTests.m index f0fc212..cdcba2e 100644 --- a/Tests/Unit/TwitterUtilsTests.m +++ b/Tests/Unit/TwitterUtilsTests.m @@ -11,8 +11,7 @@ #import "PFTwitterUtils_Private.h" #import "PF_Twitter.h" -@import Parse.PFUser; -@import Parse.PFUserAuthenticationDelegate; +@import Parse; ///-------------------------------------- #pragma mark - Tests @@ -39,6 +38,10 @@ - (void)tearDown { ///-------------------------------------- - (void)testInitialize { + id parseMock = PFStrictClassMock([Parse class]); + OCMStub([parseMock getApplicationId]).andReturn(@"yolo"); + OCMStub([parseMock getClientKey]).andReturn(@"yarr"); + id userMock = PFStrictClassMock([PFUser class]); OCMExpect(ClassMethod([userMock registerAuthenticationDelegate:[OCMArg checkWithBlock:^BOOL(id obj) { return (obj != nil); @@ -53,6 +56,10 @@ - (void)testInitialize { } - (void)testInitializeTwice { + id parseMock = PFStrictClassMock([Parse class]); + OCMStub([parseMock getApplicationId]).andReturn(@"yolo"); + OCMStub([parseMock getClientKey]).andReturn(@"yarr"); + id userMock = PFStrictClassMock([PFUser class]); [PFTwitterUtils initializeWithConsumerKey:@"a" consumerSecret:@"b"]; @@ -68,4 +75,8 @@ - (void)testInitializeTwice { OCMVerifyAll(userMock); } +- (void)testInitializeRequiresParseInitialize { + PFAssertThrowsInconsistencyException([PFTwitterUtils initializeWithConsumerKey:@"a" consumerSecret:@"b"]); +} + @end