diff options
Diffstat (limited to 'SmartDeviceLinkTests/DevAPISpecs')
-rw-r--r-- | SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m | 180 | ||||
-rw-r--r-- | SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m | 52 |
2 files changed, 159 insertions, 73 deletions
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m index c3e482f18..524fdf923 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionFilterSpec.m @@ -26,83 +26,157 @@ describe(@"A filter", ^{ __block SDLPermissionFilter *testFilter = nil; __block NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> *testObserverReturnChangedDict = nil; + __block NSDictionary<SDLPermissionRPCName, SDLRPCPermissionStatus *> *testRPCPermissionStatusReturnChangedDict = nil; beforeEach(^{ testPermissionElements = @[testPermissionElement1, testPermissionElement2]; testGroupType = SDLPermissionGroupTypeAny; }); - context(@"using initWithRPCNames:changeType:observer:", ^{ - beforeEach(^{ -// testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType observer:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) { -// -// } rpcPermissionStatusHandler:^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { -// -// }]; - testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType observer:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) { testObserverReturnChangedDict = change; } rpcPermissionStatusHandler:nil]; - }); + context(@"using initWithRPCNames:changeType:permissionsHandler:rpcPermissionStatusHandler", ^{ + context(@"and the rpcPermissionStatusHandler is nil", ^{ + beforeEach(^{ + testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:^(NSDictionary<SDLPermissionRPCName,NSNumber *> * _Nonnull change, SDLPermissionGroupStatus status) { testObserverReturnChangedDict = change; } rpcPermissionStatusHandler:nil]; + }); - it(@"should set the rpcNames array correctly", ^{ - expect(testFilter.permissionElements).to(equal(testPermissionElements)); - }); + 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; + 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(^{ - testRPCName1Bool = @YES; - testRPCName2Bool = @NO; - testObserverChangedDict = @{testRPCName1: testRPCName1Bool, - testRPCName2: testRPCName2Bool}; - testObserverGroupStatus = SDLPermissionGroupStatusMixed; - - testFilter.handler(testObserverChangedDict, testObserverGroupStatus); + testFilter = [[SDLPermissionFilter alloc] initWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:nil rpcPermissionStatusHandler:^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { + testRPCPermissionStatusReturnChangedDict = change; + }]; }); - it(@"should call the changedDict correctly", ^{ - expect(testObserverReturnChangedDict).to(equal(testObserverChangedDict)); + it(@"should set the rpcNames array correctly", ^{ + expect(testFilter.permissionElements).to(equal(testPermissionElements)); }); - it(@"should call the status correctly", ^{ - expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus))); + 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:", ^{ - beforeEach(^{ - testFilter = [SDLPermissionFilter filterWithRPCNames:testPermissionElements groupType:testGroupType observer:^(NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> * _Nonnull change, SDLPermissionGroupStatus status) { testObserverReturnChangedDict = change; } rpcPermissionStatusHandler:nil]; - }); + 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)); - }); + 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; + 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(^{ - testRPCName1Bool = @YES; - testRPCName2Bool = @NO; - testObserverChangedDict = @{testRPCName1: testRPCName1Bool, - testRPCName2: testRPCName2Bool}; - testObserverGroupStatus = SDLPermissionGroupStatusMixed; - - testFilter.handler(testObserverChangedDict, testObserverGroupStatus); + testFilter = [SDLPermissionFilter filterWithRPCNames:testPermissionElements groupType:testGroupType permissionsHandler:nil rpcPermissionStatusHandler:^(NSDictionary<SDLPermissionRPCName,SDLRPCPermissionStatus *> * _Nonnull change, SDLPermissionGroupStatus status) { + testRPCPermissionStatusReturnChangedDict = change; + }]; }); - it(@"should call the changedDict correctly", ^{ - expect(testObserverReturnChangedDict).to(equal(testObserverChangedDict)); + it(@"should set the rpcNames array correctly", ^{ + expect(testFilter.permissionElements).to(equal(testPermissionElements)); }); - it(@"should call the status correctly", ^{ - expect(@(testObserverGroupStatus)).to(equal(@(testObserverGroupStatus))); + 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))); + }); }); }); }); @@ -113,7 +187,7 @@ describe(@"A filter", ^{ __block SDLPermissionFilter *testCopiedFilter = nil; beforeEach(^{ - testFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny observer:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; testCopiedFilter = [testFilter copy]; }); @@ -140,10 +214,10 @@ describe(@"A filter", ^{ __block SDLPermissionFilter *testDifferentFilter = nil; beforeEach(^{ - testSameFilter1 = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny observer:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testSameFilter1 = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; testSameFilter2 = [testSameFilter1 copy]; - testDifferentFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny observer:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; + testDifferentFilter = [SDLPermissionFilter filterWithRPCNames:@[testPermissionElement1] groupType:SDLPermissionGroupTypeAny permissionsHandler:^(NSDictionary<SDLPermissionElement *,NSNumber<SDLBool> *> * _Nonnull changedDict, SDLPermissionGroupStatus status) {} rpcPermissionStatusHandler:nil]; }); it(@"should say copied filters are the same", ^{ diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m index bfcb9a3eb..e0fedfadf 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m @@ -26,7 +26,7 @@ QuickSpecBegin(SDLPermissionsManagerSpec) -fdescribe(@"SDLPermissionsManager", ^{ +describe(@"SDLPermissionsManager", ^{ __block SDLPermissionManager *testPermissionsManager = nil; __block NSString *testRPCNameAllAllowed = nil; @@ -67,12 +67,6 @@ fdescribe(@"SDLPermissionsManager", ^{ __block SDLPermissionElement *testPermissionElementFullLimitedAllowed = nil; __block SDLPermissionElement *testPermissionElementDisallowed = nil; - __block NSDictionary *testAllowedDict = nil; - __block SDLRPCPermissionStatus *testAllowedStatus = nil; - - __block NSDictionary *testDisallowedDict = nil; - __block SDLRPCPermissionStatus *testDisallowedStatus = nil; - beforeEach(^{ // Permission Names testRPCNameAllAllowed = @"AllAllowed"; @@ -161,12 +155,6 @@ fdescribe(@"SDLPermissionsManager", ^{ testPermissionElementAllAllowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameAllAllowed parameterPermissions:@[testRPCParameterNameAllAllowed]]; testPermissionElementFullLimitedAllowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameFullLimitedAllowed parameterPermissions:@[testRPCParameterNameFullLimitedAllowed]]; testPermissionElementDisallowed = [[SDLPermissionElement alloc] initWithRPCName:testRPCNameAllDisallowed parameterPermissions:@[testRPCParameterNameAllDisallowed]]; - - testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0),testRPCParameterNameAllAllowed, nil]; - testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES allowedParameters:testAllowedDict]; - - testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0),testRPCParameterNameAllDisallowed, nil]; - testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:YES allowedParameters:testDisallowedDict]; }); it(@"should clear when stopped", ^{ @@ -426,6 +414,11 @@ fdescribe(@"SDLPermissionsManager", ^{ __block SDLRPCPermissionStatus *allowedResultStatus = nil; __block SDLRPCPermissionStatus *disallowedResultStatus = nil; + __block NSDictionary *testAllowedDict = nil; + __block SDLRPCPermissionStatus *testAllowedStatus = nil; + __block NSDictionary *testDisallowedDict = nil; + __block SDLRPCPermissionStatus *testDisallowedStatus = nil; + context(@"with no permissions data", ^{ context(@"deprecated statusOfRPCs: method", ^{ beforeEach(^{ @@ -446,15 +439,20 @@ fdescribe(@"SDLPermissionsManager", ^{ testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCNames:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]]; allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName]; disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName]; + + testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllAllowed, nil]; + testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict]; + testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil]; + testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:YES rpcParameters:testDisallowedDict]; }); - it(@"should return correct permission statuses", ^{ + it(@"should return the correct permission statuses", ^{ expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName)); - expect(allowedResultStatus.allowedParameters).to(equal(testAllowedStatus.allowedParameters)); + expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters)); expect(allowedResultStatus.rpcAllowed).to(equal(@NO)); expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName)); - expect(disallowedResultStatus.allowedParameters).to(equal(testDisallowedStatus.allowedParameters)); + expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters)); expect(disallowedResultStatus.rpcAllowed).to(equal(@NO)); }); }); @@ -482,12 +480,26 @@ fdescribe(@"SDLPermissionsManager", ^{ [[NSNotificationCenter defaultCenter] postNotification:limitedHMINotification]; [[NSNotificationCenter defaultCenter] postNotification:testPermissionsNotification]; - testResultPermissionStatusDict = [testPermissionsManager statusesOfRPCNames:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]]; + testResultRPCPermissionStatusDict = [testPermissionsManager statusesOfRPCNames:@[testPermissionElementAllAllowed, testPermissionElementDisallowed]]; + + allowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementAllAllowed.rpcName]; + disallowedResultStatus = testResultRPCPermissionStatusDict[testPermissionElementDisallowed.rpcName]; + + testAllowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(1), testRPCParameterNameAllAllowed, nil]; + testAllowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementAllAllowed.rpcName isRPCAllowed:YES rpcParameters:testAllowedDict]; + + testDisallowedDict = [[NSDictionary alloc] initWithObjectsAndKeys:@(0), testRPCParameterNameAllDisallowed, nil]; + testDisallowedStatus = [[SDLRPCPermissionStatus alloc] initWithRPCName:testPermissionElementDisallowed.rpcName isRPCAllowed:NO rpcParameters:testDisallowedDict]; }); - it(@"should return correct permission statuses", ^{ - expect(testResultPermissionStatusDict[testRPCNameAllAllowed]).to(equal(@YES)); - expect(testResultPermissionStatusDict[testRPCNameAllDisallowed]).to(equal(@NO)); + it(@"should return the correct permission statuses", ^{ + expect(allowedResultStatus.rpcName).to(equal(testAllowedStatus.rpcName)); + expect(allowedResultStatus.rpcParameters).to(equal(testAllowedStatus.rpcParameters)); + expect(allowedResultStatus.rpcAllowed).to(equal(testAllowedStatus.rpcAllowed)); + + expect(disallowedResultStatus.rpcName).to(equal(testDisallowedStatus.rpcName)); + expect(disallowedResultStatus.rpcParameters).to(equal(testDisallowedStatus.rpcParameters)); + expect(disallowedResultStatus.rpcAllowed).to(equal(testDisallowedStatus.rpcAllowed)); }); }); }); |