summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlapinskijw <jlapinski.dev@gmail.com>2020-07-02 16:11:07 -0400
committerlapinskijw <jlapinski.dev@gmail.com>2020-07-02 16:11:07 -0400
commit35d64d19f589a96aed7ee2afed5f108a0eb114cc (patch)
tree2cbeb63f1cb00469943678e8990f136b6c4d3816
parent28e952c039ad2fd483213f02428fffb3d9865621 (diff)
downloadsdl_ios-35d64d19f589a96aed7ee2afed5f108a0eb114cc.tar.gz
updated permission filter intializers and tests
-rw-r--r--SmartDeviceLink/SDLPermissionFilter.h15
-rw-r--r--SmartDeviceLink/SDLPermissionFilter.m34
-rw-r--r--SmartDeviceLink/SDLPermissionManager.m4
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m90
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", ^{