Skip to content

Commit d0656a6

Browse files
Add tests for application data sharing exceptions.
1 parent bd96443 commit d0656a6

File tree

4 files changed

+53
-6
lines changed

4 files changed

+53
-6
lines changed

Parse/Internal/ParseManager.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,6 @@ - (instancetype)initWithConfiguration:(ParseClientConfiguration *)configuration
113113
return self;
114114
}
115115

116-
///--------------------------------------
117-
#pragma mark - Offline Store
118-
///--------------------------------------
119-
120116
- (void)startManaging {
121117
// Migrate any data if it's required.
122118
[self _migrateSandboxDataToApplicationGroupContainerIfNeeded];
@@ -131,6 +127,10 @@ - (void)startManaging {
131127
}
132128
}
133129

130+
///--------------------------------------
131+
#pragma mark - Offline Store
132+
///--------------------------------------
133+
134134
- (void)loadOfflineStoreWithOptions:(PFOfflineStoreOptions)options {
135135
dispatch_barrier_sync(_offlineStoreAccessQueue, ^{
136136
PFConsistencyAssert(!_offlineStore, @"Can't load offline store more than once.");

Parse/Parse.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ + (void)setApplicationId:(NSString *)applicationId clientKey:(NSString *)clientK
6464
}
6565

6666
+ (void)initializeWithConfiguration:(ParseClientConfiguration *)configuration {
67+
PFConsistencyAssert(configuration.applicationId.length != 0,
68+
@"You must set your configuration's `applicationId` before calling %s!", __PRETTY_FUNCTION__);
69+
PFConsistencyAssert(configuration.clientKey.length != 0,
70+
@"You must set your configuration's `clientKey` before calling %s!", __PRETTY_FUNCTION__);
6771
PFConsistencyAssert(![PFApplication currentApplication].extensionEnvironment ||
6872
configuration.applicationGroupIdentifier == nil ||
6973
configuration.containingApplicationBundleIdentifier != nil,

Parse/ParseClientConfiguration.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,16 @@ @implementation ParseClientConfiguration
2424
///--------------------------------------
2525

2626
+ (instancetype)emptyConfiguration {
27-
return [super new];
27+
return [[super alloc] initEmpty];
28+
}
29+
30+
- (instancetype)initEmpty {
31+
self = [super init];
32+
if (!self) return nil;
33+
34+
_networkRetryAttempts = PFCommandRunningDefaultMaxAttemptsCount;
35+
36+
return self;
2837
}
2938

3039
- (instancetype)initWithBlock:(void (^)(id<ParseMutableClientConfiguration>))configurationBlock {

Tests/Unit/ParseClientConfigurationTests.m

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,27 @@
1212
#import "PFTestCase.h"
1313
#import "ParseClientConfiguration.h"
1414
#import "ParseClientConfiguration_Private.h"
15+
#import "PFExtensionDataSharingTestHelper.h"
1516

16-
@interface ParseClientConfigurationTests : PFTestCase
17+
@interface ParseClientConfigurationTests : PFTestCase {
18+
PFExtensionDataSharingTestHelper *_testHelper;
19+
}
1720
@end
1821

1922
@implementation ParseClientConfigurationTests
2023

24+
- (void)setUp {
25+
[super setUp];
26+
27+
_testHelper = [[PFExtensionDataSharingTestHelper alloc] init];
28+
}
29+
30+
- (void)tearDown {
31+
_testHelper = nil;
32+
33+
[super tearDown];
34+
}
35+
2136
- (void)testConfigurationWithBlock {
2237
ParseClientConfiguration *configuration = [ParseClientConfiguration configurationWithBlock:^(id<ParseMutableClientConfiguration> configuration) {
2338
configuration.applicationId = @"foo";
@@ -89,4 +104,23 @@ - (void)testCopy {
89104
XCTAssertEqual(configurationB.networkRetryAttempts, 1337);
90105
}
91106

107+
- (void)testExtensionDataSharing {
108+
ParseClientConfiguration *configuration = [ParseClientConfiguration emptyConfiguration];
109+
110+
// Innaccessible bundle identifiers should throw
111+
XCTAssertThrows(configuration.applicationGroupIdentifier = @"someBundleIdentifier");
112+
113+
// Accessible bundle identifiers should not throw
114+
_testHelper.swizzledGroupContainerDirectoryPath = YES;
115+
XCTAssertNoThrow(configuration.applicationGroupIdentifier = @"someBundleIdentifier");
116+
117+
// In non-extension environment, setting containing identifier should throw.
118+
XCTAssertThrows(configuration.containingApplicationBundleIdentifier = @"someContainer");
119+
120+
_testHelper.runningInExtensionEnvironment = YES;
121+
122+
// In extension environment this should succeed.
123+
XCTAssertNoThrow(configuration.containingApplicationBundleIdentifier = @"someContainer");
124+
}
125+
92126
@end

0 commit comments

Comments
 (0)