88 ATOMIC_PERMISSIONS ,
99 BUNDLED_PERMISSIONS ,
1010 canTogglePermissions ,
11+ getBundledPermissions ,
1112 hasPermissions ,
1213 permissionsSetIsValid ,
1314 subtractPermissions ,
@@ -20,7 +21,7 @@ describe('SharePermissionsToolBox', () => {
2021 expect ( addPermissions ( ATOMIC_PERMISSIONS . NONE , ATOMIC_PERMISSIONS . READ ) ) . toBe ( ATOMIC_PERMISSIONS . READ )
2122 expect ( addPermissions ( ATOMIC_PERMISSIONS . READ , ATOMIC_PERMISSIONS . READ ) ) . toBe ( ATOMIC_PERMISSIONS . READ )
2223 expect ( addPermissions ( ATOMIC_PERMISSIONS . READ , ATOMIC_PERMISSIONS . UPDATE ) ) . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE )
23- expect ( addPermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
24+ expect ( addPermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE | ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
2425 expect ( addPermissions ( BUNDLED_PERMISSIONS . ALL , ATOMIC_PERMISSIONS . READ ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
2526 expect ( addPermissions ( BUNDLED_PERMISSIONS . ALL , ATOMIC_PERMISSIONS . NONE ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
2627 } )
@@ -32,7 +33,7 @@ describe('SharePermissionsToolBox', () => {
3233 expect ( subtractPermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . UPDATE ) ) . toBe ( ATOMIC_PERMISSIONS . READ )
3334 expect ( subtractPermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE ) ) . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE )
3435 expect ( subtractPermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . DELETE ) ) . toBe ( ATOMIC_PERMISSIONS . READ )
35- expect ( subtractPermissions ( BUNDLED_PERMISSIONS . ALL , ATOMIC_PERMISSIONS . READ ) ) . toBe ( ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE )
36+ expect ( subtractPermissions ( BUNDLED_PERMISSIONS . ALL , ATOMIC_PERMISSIONS . READ ) ) . toBe ( ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE | ATOMIC_PERMISSIONS . SHARE )
3637 } )
3738
3839 test ( 'Has permissions' , ( ) => {
@@ -45,8 +46,8 @@ describe('SharePermissionsToolBox', () => {
4546 } )
4647
4748 test ( 'Toggle permissions' , ( ) => {
48- expect ( togglePermissions ( BUNDLED_PERMISSIONS . ALL , BUNDLED_PERMISSIONS . UPLOAD_AND_UPDATE ) ) . toBe ( ATOMIC_PERMISSIONS . NONE )
49- expect ( togglePermissions ( BUNDLED_PERMISSIONS . ALL , BUNDLED_PERMISSIONS . FILE_DROP ) ) . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . DELETE )
49+ expect ( togglePermissions ( BUNDLED_PERMISSIONS . ALL , BUNDLED_PERMISSIONS . UPLOAD_AND_UPDATE ) ) . toBe ( ATOMIC_PERMISSIONS . SHARE )
50+ expect ( togglePermissions ( BUNDLED_PERMISSIONS . ALL , BUNDLED_PERMISSIONS . FILE_DROP ) ) . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . DELETE | ATOMIC_PERMISSIONS . SHARE )
5051 expect ( togglePermissions ( BUNDLED_PERMISSIONS . ALL , ATOMIC_PERMISSIONS . NONE ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
5152 expect ( togglePermissions ( ATOMIC_PERMISSIONS . NONE , BUNDLED_PERMISSIONS . ALL ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
5253 expect ( togglePermissions ( ATOMIC_PERMISSIONS . READ , BUNDLED_PERMISSIONS . ALL ) ) . toBe ( BUNDLED_PERMISSIONS . ALL )
@@ -76,4 +77,70 @@ describe('SharePermissionsToolBox', () => {
7677 expect ( canTogglePermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . UPDATE , ATOMIC_PERMISSIONS . CREATE ) ) . toBe ( true )
7778 expect ( canTogglePermissions ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE , ATOMIC_PERMISSIONS . CREATE ) ) . toBe ( true )
7879 } )
80+
81+ test ( 'Get bundled permissions with SHARE included (default)' , ( ) => {
82+ const permissions = getBundledPermissions ( )
83+ expect ( permissions . READ_ONLY ) . toBe ( BUNDLED_PERMISSIONS . READ_ONLY )
84+ expect ( permissions . FILE_DROP ) . toBe ( BUNDLED_PERMISSIONS . FILE_DROP )
85+ expect ( permissions . UPLOAD_AND_UPDATE ) . toBe ( BUNDLED_PERMISSIONS . UPLOAD_AND_UPDATE )
86+ expect ( permissions . ALL ) . toBe ( BUNDLED_PERMISSIONS . ALL )
87+ expect ( permissions . ALL_FILE ) . toBe ( BUNDLED_PERMISSIONS . ALL_FILE )
88+ expect ( permissions . ALL ) . toBe ( 31 )
89+ expect ( permissions . ALL_FILE ) . toBe ( 19 )
90+ expect ( hasPermissions ( permissions . ALL , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( true )
91+ expect ( hasPermissions ( permissions . ALL_FILE , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( true )
92+ } )
93+
94+ test ( 'Get bundled permissions without SHARE (excludeShare=true)' , ( ) => {
95+ const permissions = getBundledPermissions ( true )
96+ expect ( permissions . READ_ONLY ) . toBe ( BUNDLED_PERMISSIONS . READ_ONLY )
97+ expect ( permissions . FILE_DROP ) . toBe ( BUNDLED_PERMISSIONS . FILE_DROP )
98+ expect ( permissions . UPLOAD_AND_UPDATE ) . toBe ( BUNDLED_PERMISSIONS . UPLOAD_AND_UPDATE )
99+ expect ( permissions . ALL ) . toBe ( BUNDLED_PERMISSIONS . ALL & ~ ATOMIC_PERMISSIONS . SHARE )
100+ expect ( permissions . ALL_FILE ) . toBe ( BUNDLED_PERMISSIONS . ALL_FILE & ~ ATOMIC_PERMISSIONS . SHARE )
101+ expect ( permissions . ALL ) . toBe ( 15 )
102+ expect ( permissions . ALL_FILE ) . toBe ( 3 )
103+ expect ( hasPermissions ( permissions . ALL , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( false )
104+ expect ( hasPermissions ( permissions . ALL_FILE , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( false )
105+ } )
106+
107+ test ( 'Operations with bundled permissions including SHARE' , ( ) => {
108+ const permissionsWithShare = getBundledPermissions ( false )
109+ const permissionsWithoutShare = getBundledPermissions ( true )
110+
111+ // Adding permissions to ALL with SHARE should preserve SHARE
112+ expect ( addPermissions ( permissionsWithShare . ALL , ATOMIC_PERMISSIONS . READ ) ) . toBe ( permissionsWithShare . ALL )
113+
114+ // Subtracting READ from ALL with SHARE should leave UPDATE | CREATE | DELETE | SHARE
115+ expect ( subtractPermissions ( permissionsWithShare . ALL , ATOMIC_PERMISSIONS . READ ) )
116+ . toBe ( ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . CREATE | ATOMIC_PERMISSIONS . DELETE | ATOMIC_PERMISSIONS . SHARE )
117+
118+ // Toggle UPLOAD_AND_UPDATE from ALL with SHARE should leave only SHARE
119+ expect ( togglePermissions ( permissionsWithShare . ALL , BUNDLED_PERMISSIONS . UPLOAD_AND_UPDATE ) )
120+ . toBe ( ATOMIC_PERMISSIONS . SHARE )
121+
122+ // Toggle FILE_DROP from ALL with SHARE
123+ expect ( togglePermissions ( permissionsWithShare . ALL , BUNDLED_PERMISSIONS . FILE_DROP ) )
124+ . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . DELETE | ATOMIC_PERMISSIONS . SHARE )
125+
126+ // BUNDLED_PERMISSIONS.ALL already includes SHARE
127+ expect ( BUNDLED_PERMISSIONS . ALL ) . toBe ( permissionsWithShare . ALL )
128+
129+ // Subtracting SHARE from ALL with SHARE should equal ALL without SHARE
130+ expect ( subtractPermissions ( permissionsWithShare . ALL , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( permissionsWithoutShare . ALL )
131+ } )
132+
133+ test ( 'Operations with bundled permissions for files including SHARE' , ( ) => {
134+ const permissionsWithShare = getBundledPermissions ( false )
135+ const permissionsWithoutShare = getBundledPermissions ( true )
136+
137+ // ALL_FILE with SHARE should be READ | UPDATE | SHARE
138+ expect ( permissionsWithShare . ALL_FILE ) . toBe ( ATOMIC_PERMISSIONS . READ | ATOMIC_PERMISSIONS . UPDATE | ATOMIC_PERMISSIONS . SHARE )
139+
140+ // Subtracting SHARE from ALL_FILE with SHARE should equal ALL_FILE without SHARE
141+ expect ( subtractPermissions ( permissionsWithShare . ALL_FILE , ATOMIC_PERMISSIONS . SHARE ) ) . toBe ( permissionsWithoutShare . ALL_FILE )
142+
143+ // BUNDLED_PERMISSIONS.ALL_FILE already includes SHARE
144+ expect ( BUNDLED_PERMISSIONS . ALL_FILE ) . toBe ( permissionsWithShare . ALL_FILE )
145+ } )
79146} )
0 commit comments