@@ -12,7 +12,7 @@ describe('ParseLiveQueryServer', function() {
12
12
var mockParseWebSocketServer = jasmine . createSpy ( 'ParseWebSocketServer' ) ;
13
13
jasmine . mockLibrary ( '../src/LiveQuery/ParseWebSocketServer' , 'ParseWebSocketServer' , mockParseWebSocketServer ) ;
14
14
// Mock Client
15
- var mockClient = function ( ) {
15
+ var mockClient = function ( id , socket , hasMasterKey ) {
16
16
this . pushConnect = jasmine . createSpy ( 'pushConnect' ) ;
17
17
this . pushSubscribe = jasmine . createSpy ( 'pushSubscribe' ) ;
18
18
this . pushUnsubscribe = jasmine . createSpy ( 'pushUnsubscribe' ) ;
@@ -24,6 +24,7 @@ describe('ParseLiveQueryServer', function() {
24
24
this . addSubscriptionInfo = jasmine . createSpy ( 'addSubscriptionInfo' ) ;
25
25
this . getSubscriptionInfo = jasmine . createSpy ( 'getSubscriptionInfo' ) ;
26
26
this . deleteSubscriptionInfo = jasmine . createSpy ( 'deleteSubscriptionInfo' ) ;
27
+ this . hasMasterKey = hasMasterKey ;
27
28
}
28
29
mockClient . pushError = jasmine . createSpy ( 'pushError' ) ;
29
30
jasmine . mockLibrary ( '../src/LiveQuery/Client' , 'Client' , mockClient ) ;
@@ -1018,6 +1019,89 @@ describe('ParseLiveQueryServer', function() {
1018
1019
expect ( parseLiveQueryServer . _validateKeys ( request , parseLiveQueryServer . keyPairs ) ) . toBeTruthy ( ) ;
1019
1020
} ) ;
1020
1021
1022
+ it ( 'can validate client has master key when valid' , function ( ) {
1023
+ var parseLiveQueryServer = new ParseLiveQueryServer ( { } , {
1024
+ keyPairs : {
1025
+ masterKey : 'test'
1026
+ }
1027
+ } ) ;
1028
+ var request = {
1029
+ masterKey : 'test'
1030
+ } ;
1031
+
1032
+ expect ( parseLiveQueryServer . _hasMasterKey ( request , parseLiveQueryServer . keyPairs ) ) . toBeTruthy ( ) ;
1033
+ } ) ;
1034
+
1035
+ it ( 'can validate client doesn\'t have master key when invalid' , function ( ) {
1036
+ var parseLiveQueryServer = new ParseLiveQueryServer ( { } , {
1037
+ keyPairs : {
1038
+ masterKey : 'test'
1039
+ }
1040
+ } ) ;
1041
+ var request = {
1042
+ masterKey : 'notValid'
1043
+ } ;
1044
+
1045
+ expect ( parseLiveQueryServer . _hasMasterKey ( request , parseLiveQueryServer . keyPairs ) ) . not . toBeTruthy ( ) ;
1046
+ } ) ;
1047
+
1048
+ it ( 'can validate client doesn\'t have master key when not provided' , function ( ) {
1049
+ var parseLiveQueryServer = new ParseLiveQueryServer ( { } , {
1050
+ keyPairs : {
1051
+ masterKey : 'test'
1052
+ }
1053
+ } ) ;
1054
+
1055
+ expect ( parseLiveQueryServer . _hasMasterKey ( { } , parseLiveQueryServer . keyPairs ) ) . not . toBeTruthy ( ) ;
1056
+ } ) ;
1057
+
1058
+ it ( 'can validate client doesn\'t have master key when validKeyPairs is empty' , function ( ) {
1059
+ var parseLiveQueryServer = new ParseLiveQueryServer ( { } , { } ) ;
1060
+ var request = {
1061
+ masterKey : 'test'
1062
+ } ;
1063
+
1064
+ expect ( parseLiveQueryServer . _hasMasterKey ( request , parseLiveQueryServer . keyPairs ) ) . not . toBeTruthy ( ) ;
1065
+ } ) ;
1066
+
1067
+ it ( 'will match non-public ACL when client has master key' , function ( done ) {
1068
+
1069
+ var parseLiveQueryServer = new ParseLiveQueryServer ( 10 , 10 , { } ) ;
1070
+ var acl = new Parse . ACL ( ) ;
1071
+ acl . setPublicReadAccess ( false ) ;
1072
+ var client = {
1073
+ getSubscriptionInfo : jasmine . createSpy ( 'getSubscriptionInfo' ) . and . returnValue ( {
1074
+ } ) ,
1075
+ hasMasterKey : true
1076
+ } ;
1077
+ var requestId = 0 ;
1078
+
1079
+ parseLiveQueryServer . _matchesACL ( acl , client , requestId ) . then ( function ( isMatched ) {
1080
+ expect ( isMatched ) . toBe ( true ) ;
1081
+ done ( ) ;
1082
+ } ) ;
1083
+
1084
+ } ) ;
1085
+
1086
+ it ( 'won\'t match non-public ACL when client has no master key' , function ( done ) {
1087
+
1088
+ var parseLiveQueryServer = new ParseLiveQueryServer ( 10 , 10 , { } ) ;
1089
+ var acl = new Parse . ACL ( ) ;
1090
+ acl . setPublicReadAccess ( false ) ;
1091
+ var client = {
1092
+ getSubscriptionInfo : jasmine . createSpy ( 'getSubscriptionInfo' ) . and . returnValue ( {
1093
+ } ) ,
1094
+ hasMasterKey : false
1095
+ } ;
1096
+ var requestId = 0 ;
1097
+
1098
+ parseLiveQueryServer . _matchesACL ( acl , client , requestId ) . then ( function ( isMatched ) {
1099
+ expect ( isMatched ) . toBe ( false ) ;
1100
+ done ( ) ;
1101
+ } ) ;
1102
+
1103
+ } ) ;
1104
+
1021
1105
afterEach ( function ( ) {
1022
1106
jasmine . restoreLibrary ( '../src/LiveQuery/ParseWebSocketServer' , 'ParseWebSocketServer' ) ;
1023
1107
jasmine . restoreLibrary ( '../src/LiveQuery/Client' , 'Client' ) ;
0 commit comments