summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlapinskijw <jlapinski.dev@gmail.com>2020-06-29 15:35:56 -0400
committerlapinskijw <jlapinski.dev@gmail.com>2020-06-29 15:35:56 -0400
commitc41fd57c44460511a2f884134d172c3f4b6bf87d (patch)
tree16caa79a5c541ad3d04f29cb8435ca7dccaf80c9
parent36f0399b965f1d9b6509d2289c6e6296435aa698 (diff)
downloadsdl_ios-c41fd57c44460511a2f884134d172c3f4b6bf87d.tar.gz
added permission status object and tests
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj12
-rw-r--r--SmartDeviceLink/SDLRPCPermissionStatus.h39
-rw-r--r--SmartDeviceLink/SDLRPCPermissionStatus.m21
-rw-r--r--SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m2
-rw-r--r--SmartDeviceLinkTests/SDLPermissionElementSpec.m55
-rw-r--r--SmartDeviceLinkTests/SDLRPCPermissionStatusSpec.m49
6 files changed, 177 insertions, 1 deletions
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
index e08ab3728..9496d5983 100644
--- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
+++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj
@@ -38,9 +38,12 @@
00E22CED22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 00E22CEB22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; };
00EADD3322DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EADD3222DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m */; };
00EADD3522DFE5670088B608 /* SDLEncryptionConfigurationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EADD3422DFE5670088B608 /* SDLEncryptionConfigurationSpec.m */; };
+ 106187B924AA75540045C4EC /* SDLRPCPermissionStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 106187B824AA75540045C4EC /* SDLRPCPermissionStatusSpec.m */; };
+ 106187BA24AA76550045C4EC /* SDLRPCPermissionStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */; };
106412C6249FB80B0069A97A /* SDLPermissionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 106412C4249FB80B0069A97A /* SDLPermissionElement.h */; settings = {ATTRIBUTES = (Public, ); }; };
106412C7249FB80B0069A97A /* SDLPermissionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 106412C5249FB80B0069A97A /* SDLPermissionElement.m */; };
106412C824A13F160069A97A /* SDLPermissionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D8204241BCEA8A600D0A41B /* SDLPermissionManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 106982AB24AA3B4700B1F649 /* SDLRPCPermissionStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */; };
10893C162417D78300BA347E /* SDLIconArchiveFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 10893C142417D78300BA347E /* SDLIconArchiveFile.h */; };
10893C172417D78300BA347E /* SDLIconArchiveFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 10893C152417D78300BA347E /* SDLIconArchiveFile.m */; };
10893C1A2418188600BA347E /* SDLCacheFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 10893C182418188600BA347E /* SDLCacheFileManager.h */; };
@@ -1758,8 +1761,11 @@
00E22CEB22C2F1B300BC6B08 /* SDLEncryptionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncryptionConfiguration.h; sourceTree = "<group>"; };
00EADD3222DFE54B0088B608 /* SDLEncryptionLifecycleManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionLifecycleManagerSpec.m; sourceTree = "<group>"; };
00EADD3422DFE5670088B608 /* SDLEncryptionConfigurationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLEncryptionConfigurationSpec.m; sourceTree = "<group>"; };
+ 106187B824AA75540045C4EC /* SDLRPCPermissionStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCPermissionStatusSpec.m; sourceTree = "<group>"; };
106412C4249FB80B0069A97A /* SDLPermissionElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLPermissionElement.h; sourceTree = "<group>"; };
106412C5249FB80B0069A97A /* SDLPermissionElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPermissionElement.m; sourceTree = "<group>"; };
+ 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRPCPermissionStatus.h; sourceTree = "<group>"; };
+ 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCPermissionStatus.m; sourceTree = "<group>"; };
10893C142417D78300BA347E /* SDLIconArchiveFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIconArchiveFile.h; sourceTree = "<group>"; };
10893C152417D78300BA347E /* SDLIconArchiveFile.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIconArchiveFile.m; sourceTree = "<group>"; };
10893C182418188600BA347E /* SDLCacheFileManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLCacheFileManager.h; sourceTree = "<group>"; };
@@ -5589,6 +5595,8 @@
5D8204251BCEA8A600D0A41B /* SDLPermissionManager.m */,
106412C4249FB80B0069A97A /* SDLPermissionElement.h */,
106412C5249FB80B0069A97A /* SDLPermissionElement.m */,
+ 106982A824AA3B4700B1F649 /* SDLRPCPermissionStatus.h */,
+ 106982A924AA3B4700B1F649 /* SDLRPCPermissionStatus.m */,
);
name = Permissions;
sourceTree = "<group>";
@@ -5679,6 +5687,7 @@
5D9F50801BE7E6E300FEF399 /* SDLPermissionsManagerSpec.m */,
5DB1BCD71D243AA6002FFC37 /* SDLPermissionFilterSpec.m */,
1098F03724A39699004F53CC /* SDLPermissionElementSpec.m */,
+ 106187B824AA75540045C4EC /* SDLRPCPermissionStatusSpec.m */,
);
name = Permissions;
sourceTree = "<group>";
@@ -7026,6 +7035,7 @@
1E5AD04C1F1F79640029B8AF /* SDLDefrostZone.h in Headers */,
1E5AD0601F207AB10029B8AF /* SDLRadioState.h in Headers */,
1E5AD0801F20B73E0029B8AF /* SDLButtonPress.h in Headers */,
+ 106187BA24AA76550045C4EC /* SDLRPCPermissionStatus.h in Headers */,
884554AC222453A800BAFB6C /* SDLNavigationServiceManifest.h in Headers */,
8816772C222097C3001FACFF /* SDLNavigationServiceData.h in Headers */,
1E5AD05C1F2064A80029B8AF /* SDLRDSData.h in Headers */,
@@ -7550,6 +7560,7 @@
5D61FDB21A84238C00846EE7 /* SDLSubscribeVehicleData.m in Sources */,
5D61FC991A84238C00846EE7 /* SDLECallInfo.m in Sources */,
5D61FD601A84238C00846EE7 /* SDLRegisterAppInterfaceResponse.m in Sources */,
+ 106982AB24AA3B4700B1F649 /* SDLRPCPermissionStatus.m in Sources */,
5DB996581F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.m in Sources */,
DAC572621D10C5020004288B /* SDLPinchGesture.m in Sources */,
1EAA471A203406B2000FE74B /* SDLSISData.m in Sources */,
@@ -8048,6 +8059,7 @@
162E83281A9BDE8B00906325 /* SDLDeleteCommandSpec.m in Sources */,
88A81F6C2200FD4A00A691A9 /* SDLAppServiceRecordSpec.m in Sources */,
162E83531A9BDE8B00906325 /* SDLDiagnosticMessageResponseSpec.m in Sources */,
+ 106187B924AA75540045C4EC /* SDLRPCPermissionStatusSpec.m in Sources */,
8881AFB52225E37800EA870B /* SDLSetCloudAppPropertiesResponseSpec.m in Sources */,
162E83671A9BDE8B00906325 /* SDLSliderResponseSpec.m in Sources */,
8877F5F11F34AA2D00DC128A /* SDLSendHapticDataResponseSpec.m in Sources */,
diff --git a/SmartDeviceLink/SDLRPCPermissionStatus.h b/SmartDeviceLink/SDLRPCPermissionStatus.h
new file mode 100644
index 000000000..9229ee74c
--- /dev/null
+++ b/SmartDeviceLink/SDLRPCPermissionStatus.h
@@ -0,0 +1,39 @@
+//
+// SDLRPCPermissionStatus.h
+// SmartDeviceLink
+//
+// Created by James Lapinski on 6/29/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "SDLRPCFunctionNames.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDLRPCPermissionStatus : NSObject
+
+/**
+ Name of the individual RPC.
+
+ Required
+ */
+@property (strong, nonatomic, readonly) SDLRPCFunctionName rpcName;
+
+/**
+ * Whether or not the RPC is allowed.
+ */
+@property (assign, nonatomic, readonly, getter=isRPCAllowed) BOOL rpcAllowed;
+
+/**
+ * Holds a dictionary of RPC parameters and their permission status
+ */
+@property (strong, nonatomic, nullable, readonly) NSMutableDictionary<NSString *, NSNumber *> *allowedParameters;
+
+// to do add description
+- (instancetype)initWithRPCName:(SDLRPCFunctionName)rpcName isRPCAllowed:(BOOL)isRPCAllowed allowedParameters:(nullable NSDictionary<NSString *, NSNumber *> *)allowedParameters;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLink/SDLRPCPermissionStatus.m b/SmartDeviceLink/SDLRPCPermissionStatus.m
new file mode 100644
index 000000000..f868ab267
--- /dev/null
+++ b/SmartDeviceLink/SDLRPCPermissionStatus.m
@@ -0,0 +1,21 @@
+//
+// SDLRPCPermissionStatus.m
+// SmartDeviceLink
+//
+// Created by James Lapinski on 6/29/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import "SDLRPCPermissionStatus.h"
+
+@implementation SDLRPCPermissionStatus
+
+- (instancetype)initWithRPCName:(SDLRPCFunctionName)rpcName isRPCAllowed:(BOOL)isRPCAllowed allowedParameters:(nullable NSMutableDictionary<NSString *,NSNumber *> *)allowedParameters {
+ _rpcName = rpcName;
+ _rpcAllowed = isRPCAllowed;
+ _allowedParameters = allowedParameters;
+
+ return self;
+}
+
+@end
diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLPermissionsManagerSpec.m
index e54acfbbc..2bf094624 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;
diff --git a/SmartDeviceLinkTests/SDLPermissionElementSpec.m b/SmartDeviceLinkTests/SDLPermissionElementSpec.m
index 461e590dc..8a924bf59 100644
--- a/SmartDeviceLinkTests/SDLPermissionElementSpec.m
+++ b/SmartDeviceLinkTests/SDLPermissionElementSpec.m
@@ -9,6 +9,61 @@
#import <Quick/Quick.h>
#import <Nimble/Nimble.h>
+#import "SDLParameterPermissions.h"
+#import "SDLPermissionElement.h"
+
QuickSpecBegin(SDLPermissionElementSpec)
+describe(@"A permission element", ^{
+ __block NSString *testRPCName1 = nil;
+ __block SDLParameterPermissions *parameterPermissions = nil;
+ __block NSString *testParameterRPCName = nil;
+
+ beforeEach(^{
+ testRPCName1 = @"testRPCName1";
+ testParameterRPCName = @"testParameterRPCName";
+ parameterPermissions = [[SDLParameterPermissions alloc] init];
+ parameterPermissions.allowed = @[testParameterRPCName];
+ });
+
+ describe(@"it should initialize correctly", ^{
+ __block SDLPermissionElement *testPermissionElement = nil;
+
+ beforeEach(^{
+ testPermissionElement = [[SDLPermissionElement alloc] initWithRPCName:testRPCName1 parameterPermissions:parameterPermissions];
+ });
+
+ it(@"should set the rpcName correctly", ^{
+ expect(testPermissionElement.rpcName).to(equal(testRPCName1));
+ });
+
+ it(@"should set the parameterPermissions correctly", ^{
+ expect(testPermissionElement.parameterPermissions).to(equal(parameterPermissions));
+ });
+ });
+
+ describe(@"copying a permission element", ^{
+ __block SDLPermissionElement *testPermissionElement = nil;
+ __block SDLPermissionElement *testPermissionElementCopy = nil;
+
+ beforeEach(^{
+ testPermissionElement = [[SDLPermissionElement alloc] initWithRPCName:testRPCName1 parameterPermissions:parameterPermissions];
+ testPermissionElementCopy = [testPermissionElement copy];
+ });
+
+ it(@"should say copied filters are not the same instance", ^{
+ expect(testPermissionElementCopy).toNot(beIdenticalTo(testPermissionElement));
+ });
+
+ it(@"should copy the rpc name correctly", ^{
+ expect(testPermissionElementCopy.rpcName).to(equal(testPermissionElement.rpcName));
+ });
+
+ it(@"should copy the parameter permissions correctly", ^{
+ expect(testPermissionElementCopy.parameterPermissions).to(equal(testPermissionElement.parameterPermissions));
+ });
+ });
+});
+
+
QuickSpecEnd
diff --git a/SmartDeviceLinkTests/SDLRPCPermissionStatusSpec.m b/SmartDeviceLinkTests/SDLRPCPermissionStatusSpec.m
new file mode 100644
index 000000000..e01e6d32c
--- /dev/null
+++ b/SmartDeviceLinkTests/SDLRPCPermissionStatusSpec.m
@@ -0,0 +1,49 @@
+//
+// SDLRPCPermissionStatusSpec.m
+// SmartDeviceLinkTests
+//
+// Created by James Lapinski on 6/29/20.
+// Copyright © 2020 smartdevicelink. All rights reserved.
+//
+
+#import <Quick/Quick.h>
+#import <Nimble/Nimble.h>
+
+#import "SDLRPCPermissionStatus.h"
+
+QuickSpecBegin(SDLRPCPermissionStatusSpec)
+
+describe(@"A rpc permission status", ^{
+ __block NSString *testRPCName = nil;
+ __block NSString *testParameterName = nil;
+ __block BOOL isRPCAllowed = NO;
+ __block NSMutableDictionary<NSString *,NSNumber *> *allowedParameters = nil;
+
+ beforeEach(^{
+ testRPCName = @"testRPCName";
+ testParameterName = @"testParameterRPCName";
+ allowedParameters = [@{testParameterName:@0} mutableCopy];
+ });
+
+ describe(@"it should initialize correctly", ^{
+ __block SDLRPCPermissionStatus *testSDLRPCPermissionStatusSpec = nil;
+
+ beforeEach(^{
+ testSDLRPCPermissionStatusSpec = [[SDLRPCPermissionStatus alloc] initWithRPCName:testRPCName isRPCAllowed:isRPCAllowed allowedParameters:allowedParameters];
+ });
+
+ it(@"should set the rpcName correctly", ^{
+ expect(testSDLRPCPermissionStatusSpec.rpcName).to(equal(testRPCName));
+ });
+
+ it(@"should set isRPCAllowed correctly", ^{
+ expect(testSDLRPCPermissionStatusSpec.isRPCAllowed).to(equal(isRPCAllowed));
+ });
+
+ it(@"should set the parameter permissions correctly", ^{
+ expect(testSDLRPCPermissionStatusSpec.allowedParameters[testParameterName]).to(equal(@NO));
+ });
+ });
+});
+
+QuickSpecEnd