diff options
author | lapinskijw <jlapinski.dev@gmail.com> | 2020-07-02 16:11:07 -0400 |
---|---|---|
committer | lapinskijw <jlapinski.dev@gmail.com> | 2020-07-02 16:11:07 -0400 |
commit | 35d64d19f589a96aed7ee2afed5f108a0eb114cc (patch) | |
tree | 2cbeb63f1cb00469943678e8990f136b6c4d3816 | |
parent | 28e952c039ad2fd483213f02428fffb3d9865621 (diff) | |
download | sdl_ios-35d64d19f589a96aed7ee2afed5f108a0eb114cc.tar.gz |
updated permission filter intializers and tests
-rw-r--r-- | SmartDeviceLink/SDLPermissionFilter.h | 15 | ||||
-rw-r--r-- | SmartDeviceLink/SDLPermissionFilter.m | 34 | ||||
-rw-r--r-- | SmartDeviceLink/SDLPermissionManager.m | 4 | ||||
-rw-r--r-- | SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m | 90 |
4 files changed, 38 insertions, 105 deletions
diff --git a/SmartDeviceLink/SDLPermissionFilter.h b/SmartDeviceLink/SDLPermissionFilter.h index ca9bfdc9f..592841545 100644 --- a/SmartDeviceLink/SDLPermissionFilter.h +++ b/SmartDeviceLink/SDLPermissionFilter.h @@ -42,17 +42,6 @@ NS_ASSUME_NONNULL_BEGIN @property (copy, nonatomic, readonly) NSArray<SDLPermissionElement *> *permissionElements; /** - * Create a new permission filter group. - * - * @param rpcNames The names of the RPCs to watch permissions of. - * @param groupType The type of notifications to be sent for this filter group. - * @param handler The block observer to be called when changes occur. - * - * @return An instance of `SDLPermissionFilter`. - */ -- (instancetype)initWithRPCNames:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(nullable SDLPermissionsChangedHandler)handler; - -/** * Create a new permission filter group with a SDLPermissionsChangedHandler. * * @param rpcNames The names of the RPCs to watch permissions of. @@ -61,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN * * @return An instance of `SDLPermissionFilter`. */ -+ (instancetype)filterWithRPCNames:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(nullable SDLPermissionsChangedHandler)handler NS_SWIFT_UNAVAILABLE("Use the initializer"); +- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(SDLPermissionsChangedHandler)handler NS_SWIFT_UNAVAILABLE("Use the initializer"); /** * Create a new permission filter group with a SDLRPCPermissionStatusChangedHandler. @@ -72,7 +61,7 @@ NS_ASSUME_NONNULL_BEGIN * * @return An instance of `SDLPermissionFilter`. */ -+ (instancetype)filterWithRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler; +- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler; /** * Whether the current filter is equivalent with another filter or not. diff --git a/SmartDeviceLink/SDLPermissionFilter.m b/SmartDeviceLink/SDLPermissionFilter.m index 558f3910d..1cc2f8550 100644 --- a/SmartDeviceLink/SDLPermissionFilter.m +++ b/SmartDeviceLink/SDLPermissionFilter.m @@ -17,12 +17,19 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Lifecycle - (instancetype)init { - return [self initWithRPCNames:@[] - groupType:SDLPermissionGroupTypeAny - permissionsHandler:^(NSDictionary<SDLPermissionElement *, NSNumber<SDLBool> *> *_Nonnull change, SDLPermissionGroupStatus status){ }]; + self = [super init]; + if (!self) { return nil; } + + _identifier = [NSUUID UUID]; + _permissionElements = @[]; + _groupType = SDLPermissionGroupTypeAny; + _handler = nil; + _rpcPermissionStatusHandler = nil; + + return self; } -- (instancetype)initWithRPCNames:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(nullable SDLPermissionsChangedHandler)observer { +- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(SDLPermissionsChangedHandler)observer { self = [super init]; if (!self) { return nil; @@ -32,15 +39,23 @@ NS_ASSUME_NONNULL_BEGIN _permissionElements = rpcNames; _groupType = groupType; _handler = observer; -// _rpcPermissionStatusHandler = permissionStatusHandler; return self; } -+ (instancetype)filterWithRPCNames:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionsHandler:(nullable SDLPermissionsChangedHandler)observer { - return [[self alloc] initWithRPCNames:rpcNames groupType:groupType permissionsHandler:observer]; -} +- (instancetype)initWithPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType permissionStatusHandler:(SDLRPCPermissionStatusChangedHandler)permissionStatusHandler { + self = [super init]; + if (!self) { + return nil; + } + + _identifier = [NSUUID UUID]; + _permissionElements = rpcNames; + _groupType = groupType; + _rpcPermissionStatusHandler = permissionStatusHandler; + return self; +} #pragma mark - Helpers @@ -57,8 +72,9 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - NSCopying - (id)copyWithZone:(nullable NSZone *)zone { - SDLPermissionFilter *newFilter = [[self.class allocWithZone:zone] initWithRPCNames:[_permissionElements copyWithZone:zone] groupType:_groupType permissionsHandler:[_handler copyWithZone:zone]]; + SDLPermissionFilter *newFilter = [[self.class allocWithZone:zone] initWithPermissions:[_permissionElements copyWithZone:zone] groupType:_groupType permissionsHandler:[_handler copyWithZone:zone]]; newFilter->_identifier = _identifier; + newFilter->_rpcPermissionStatusHandler = _rpcPermissionStatusHandler; return newFilter; } diff --git a/SmartDeviceLink/SDLPermissionManager.m b/SmartDeviceLink/SDLPermissionManager.m index 81169f206..dfe5a39a6 100644 --- a/SmartDeviceLink/SDLPermissionManager.m +++ b/SmartDeviceLink/SDLPermissionManager.m @@ -166,7 +166,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark Add Observers - (SDLPermissionObserverIdentifier)addObserverForRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(nonnull SDLPermissionsChangedHandler)handler { - SDLPermissionFilter *filter = [SDLPermissionFilter filterWithRPCNames:[self sdl_createPermissionElementsFromRPCNames:rpcNames] groupType:groupType permissionsHandler:handler]; + SDLPermissionFilter *filter = [[SDLPermissionFilter alloc] initWithPermissions:[self sdl_createPermissionElementsFromRPCNames:rpcNames] groupType:groupType permissionsHandler:handler]; // Store the filter for later use [self.filters addObject:filter]; @@ -178,7 +178,7 @@ NS_ASSUME_NONNULL_BEGIN } - (SDLPermissionObserverIdentifier)subscribeToRPCPermissions:(NSArray<SDLPermissionElement *> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(SDLRPCPermissionStatusChangedHandler)handler { - SDLPermissionFilter *filter = [SDLPermissionFilter filterWithRPCPermissions:rpcNames groupType:groupType permissionStatusHandler:handler]; + SDLPermissionFilter *filter = [[SDLPermissionFilter alloc] initWithPermissions:rpcNames groupType:groupType permissionStatusHandler:handler]; // Store the filter for later use [self.filters addObject:filter]; diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m index 769f86675..77885e5b1 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m @@ -34,91 +34,19 @@ describe(@"A filter", ^{ }); context(@"using initWithRPCNames:changeType:permissionsHandler:rpcPermissionStatusHandler", ^{ - context(@"and the rpcPermissionStatusHandler is nil", ^{ + context(@"using SDLPermissionsChangedHandler init", ^{ beforeEach(^{ - testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) { testObserverReturnChangedDict = change; } :nil]; - }); - - it(@"should set the rpcNames array correctly", ^{ - expect(testFilter.permissionElements).to(equal(testPermissionElements)); - }); - - describe(@"it should set up the observer correctly", ^{ - __block NSDictionary<SDLPermissionRPCName,NSNumber<SDLBool> *> *testObserverChangedDict = nil; - __block NSNumber<SDLBool> *testRPCName1Bool = nil; - __block NSNumber<SDLBool> *testRPCName2Bool = nil; - __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown; - - beforeEach(^{ - testRPCName1Bool = @YES; - testRPCName2Bool = @NO; - testObserverChangedDict = @{testRPCName1: testRPCName1Bool, - testRPCName2: testRPCName2Bool}; - testObserverGroupStatus = SDLPermissionGroupStatusMixed; - - testFilter.handler(testObserverChangedDict, testObserverGroupStatus); - }); - - it(@"should call the changedDict correctly", ^{ - expect(testObserverReturnChangedDict).to(equal(testObserverChangedDict)); - }); - - it(@"should call the status correctly", ^{ - expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus))); - }); - }); - }); - - context(@"and the permissionsHandler is nil", ^{ - beforeEach(^{ - testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:nil :^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { - testRPCPermissionStatusReturnChangedDict = change; + testFilter = [[SDLPermissionFilter alloc] initWithPermissions:testPermissionElements groupType:testGroupType permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) { + testObserverReturnChangedDict = change; }]; }); - it(@"should set the permission elements array correctly", ^{ - expect(testFilter.permissionElements).to(equal(testPermissionElements)); - }); - - describe(@"it should set up the observer correctly", ^{ - __block NSDictionary<SDLPermissionRPCName, SDLRPCPermissionStatus *> *testObserverChangedDict = nil; - __block SDLRPCPermissionStatus *rpcPermissionStatus1 = nil; - __block SDLRPCPermissionStatus *rpcPermissionStatus2 = nil; - __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown; - - beforeEach(^{ - rpcPermissionStatus1 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName1 isRPCAllowed:YES rpcParameters:nil]; - rpcPermissionStatus2 = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName2 isRPCAllowed:NO rpcParameters:nil]; - testObserverChangedDict = @{testRPCName1: rpcPermissionStatus1, - testRPCName2: rpcPermissionStatus2}; - testObserverGroupStatus = SDLPermissionGroupStatusMixed; - - testFilter.rpcPermissionStatusHandler(testObserverChangedDict, testObserverGroupStatus); - }); - - it(@"should call the changedDict correctly", ^{ - expect(testRPCPermissionStatusReturnChangedDict).to(equal(testObserverChangedDict)); - }); - - it(@"should call the status correctly", ^{ - expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus))); - }); - }); - }); - }); - - context(@"using filterWithRPCNames:changeType:observer:", ^{ - context(@"and the rpcPermissionStatusHandler is nil", ^{ - beforeEach(^{ - testFilter = [SDLPermissionFilter filterWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:^(NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> * _Nonnull change, SDLPermissionGroupStatus status) { testObserverReturnChangedDict = change; } rpcPermissionStatusHandler:nil]; - }); - it(@"should set the rpcNames array correctly", ^{ expect(testFilter.permissionElements).to(equal(testPermissionElements)); }); describe(@"it should set up the observer correctly", ^{ - __block NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> *testObserverChangedDict = nil; + __block NSDictionary<SDLPermissionRPCName,NSNumber<SDLBool> *> *testObserverChangedDict = nil; __block NSNumber<SDLBool> *testRPCName1Bool = nil; __block NSNumber<SDLBool> *testRPCName2Bool = nil; __block SDLPermissionGroupStatus testObserverGroupStatus = SDLPermissionGroupStatusUnknown; @@ -143,9 +71,9 @@ describe(@"A filter", ^{ }); }); - context(@"and the permissionsHandler is nil", ^{ + context(@"using the SDLRPCPermissionStatusChangedHandler init", ^{ beforeEach(^{ - testFilter = [SDLPermissionFilter filterWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:nil rpcPermissionStatusHandler:^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { + testFilter = [[SDLPermissionFilter alloc] initWithPermissions:testPermissionElements groupType:testGroupType permissionStatusHandler:^(NSDictionary<SDLRPCFunctionName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { testRPCPermissionStatusReturnChangedDict = change; }]; }); @@ -187,7 +115,7 @@ describe(@"A filter", ^{ __block SDLPermissionFilter *testCopiedFilter = nil; beforeEach(^{ - testFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}]; testCopiedFilter = [testFilter copy]; }); @@ -214,10 +142,10 @@ describe(@"A filter", ^{ __block SDLPermissionFilter *testDifferentFilter = nil; beforeEach(^{ - testSameFilter1 = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testSameFilter1 = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:(SDLPermissionGroupType)SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}]; testSameFilter2 = [testSameFilter1 copy]; - testDifferentFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testDifferentFilter = [[SDLPermissionFilter alloc] initWithPermissions:@[testPermissionElement1] groupType:(SDLPermissionGroupType)SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) {}]; }); it(@"should say copied filters are the same", ^{ |