|
8 | 8 | ATOMIC_PERMISSIONS, |
9 | 9 | BUNDLED_PERMISSIONS, |
10 | 10 | canTogglePermissions, |
| 11 | + getBundledPermissions, |
11 | 12 | hasPermissions, |
12 | 13 | permissionsSetIsValid, |
13 | 14 | subtractPermissions, |
@@ -76,4 +77,75 @@ describe('SharePermissionsToolBox', () => { |
76 | 77 | expect(canTogglePermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE)).toBe(true) |
77 | 78 | expect(canTogglePermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE, ATOMIC_PERMISSIONS.CREATE)).toBe(true) |
78 | 79 | }) |
| 80 | + |
| 81 | + test('Get bundled permissions without SHARE (default)', () => { |
| 82 | + const permissions = getBundledPermissions(false) |
| 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(15) |
| 89 | + expect(permissions.ALL_FILE).toBe(3) |
| 90 | + expect(hasPermissions(permissions.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(false) |
| 91 | + expect(hasPermissions(permissions.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(false) |
| 92 | + }) |
| 93 | + |
| 94 | + test('Get bundled permissions with SHARE included', () => { |
| 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(31) |
| 102 | + expect(permissions.ALL_FILE).toBe(19) |
| 103 | + expect(hasPermissions(permissions.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(true) |
| 104 | + expect(hasPermissions(permissions.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(true) |
| 105 | + }) |
| 106 | + |
| 107 | + test('Get bundled permissions default argument', () => { |
| 108 | + const permissions = getBundledPermissions() |
| 109 | + expect(permissions.ALL).toBe(BUNDLED_PERMISSIONS.ALL) |
| 110 | + expect(permissions.ALL_FILE).toBe(BUNDLED_PERMISSIONS.ALL_FILE) |
| 111 | + expect(hasPermissions(permissions.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(false) |
| 112 | + }) |
| 113 | + |
| 114 | + test('Operations with bundled permissions including SHARE', () => { |
| 115 | + const permissionsWithShare = getBundledPermissions(true) |
| 116 | + |
| 117 | + // Adding permissions to ALL with SHARE should preserve SHARE |
| 118 | + expect(addPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.READ)).toBe(permissionsWithShare.ALL) |
| 119 | + |
| 120 | + // Subtracting READ from ALL with SHARE should leave UPDATE | CREATE | DELETE | SHARE |
| 121 | + expect(subtractPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.READ)) |
| 122 | + .toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE) |
| 123 | + |
| 124 | + // Toggle UPLOAD_AND_UPDATE from ALL with SHARE should leave only SHARE |
| 125 | + expect(togglePermissions(permissionsWithShare.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)) |
| 126 | + .toBe(ATOMIC_PERMISSIONS.SHARE) |
| 127 | + |
| 128 | + // Toggle FILE_DROP from ALL with SHARE |
| 129 | + expect(togglePermissions(permissionsWithShare.ALL, BUNDLED_PERMISSIONS.FILE_DROP)) |
| 130 | + .toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE) |
| 131 | + |
| 132 | + // Adding SHARE to base ALL should equal ALL with SHARE |
| 133 | + expect(addPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(permissionsWithShare.ALL) |
| 134 | + |
| 135 | + // Subtracting SHARE from ALL with SHARE should equal base ALL |
| 136 | + expect(subtractPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(BUNDLED_PERMISSIONS.ALL) |
| 137 | + }) |
| 138 | + |
| 139 | + test('Operations with bundled permissions for files including SHARE', () => { |
| 140 | + const permissionsWithShare = getBundledPermissions(true) |
| 141 | + |
| 142 | + // ALL_FILE with SHARE should be READ | UPDATE | SHARE |
| 143 | + expect(permissionsWithShare.ALL_FILE).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.SHARE) |
| 144 | + |
| 145 | + // Subtracting SHARE from ALL_FILE with SHARE should equal base ALL_FILE |
| 146 | + expect(subtractPermissions(permissionsWithShare.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(BUNDLED_PERMISSIONS.ALL_FILE) |
| 147 | + |
| 148 | + // Adding SHARE to base ALL_FILE should equal ALL_FILE with SHARE |
| 149 | + expect(addPermissions(BUNDLED_PERMISSIONS.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(permissionsWithShare.ALL_FILE) |
| 150 | + }) |
79 | 151 | }) |
0 commit comments