81 lines
2.4 KiB
Dart
81 lines
2.4 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:marianum_mobile/api/marianumcloud/files_sharing/share_permissions.dart';
|
|
|
|
void main() {
|
|
group('permissionsFor', () {
|
|
test('readOnly is just the read bit', () {
|
|
expect(permissionsFor(SharePreset.readOnly), kPermissionRead);
|
|
});
|
|
|
|
test('edit on a file is only read+update (no create/delete)', () {
|
|
expect(
|
|
permissionsFor(SharePreset.edit),
|
|
kPermissionRead | kPermissionUpdate,
|
|
);
|
|
});
|
|
|
|
test('edit on a folder adds create+delete', () {
|
|
expect(
|
|
permissionsFor(SharePreset.edit, isFolder: true),
|
|
kPermissionRead |
|
|
kPermissionUpdate |
|
|
kPermissionCreate |
|
|
kPermissionDelete,
|
|
);
|
|
});
|
|
|
|
test('edit adds the share bit when reshare is allowed', () {
|
|
final mask = permissionsFor(SharePreset.edit, allowReshare: true);
|
|
expect(hasPermission(mask, kPermissionShare), isTrue);
|
|
expect(hasPermission(mask, kPermissionUpdate), isTrue);
|
|
});
|
|
|
|
test('fileDrop is create-only (upload)', () {
|
|
expect(permissionsFor(SharePreset.fileDrop), kPermissionCreate);
|
|
expect(
|
|
hasPermission(permissionsFor(SharePreset.fileDrop), kPermissionRead),
|
|
isFalse,
|
|
);
|
|
});
|
|
});
|
|
|
|
group('presetFromBitmask', () {
|
|
test('round-trips readOnly and fileDrop', () {
|
|
expect(
|
|
presetFromBitmask(permissionsFor(SharePreset.readOnly)),
|
|
SharePreset.readOnly,
|
|
);
|
|
expect(
|
|
presetFromBitmask(permissionsFor(SharePreset.fileDrop)),
|
|
SharePreset.fileDrop,
|
|
);
|
|
});
|
|
|
|
test('edit is recognised regardless of the reshare bit', () {
|
|
expect(
|
|
presetFromBitmask(permissionsFor(SharePreset.edit)),
|
|
SharePreset.edit,
|
|
);
|
|
expect(
|
|
presetFromBitmask(permissionsFor(SharePreset.edit, allowReshare: true)),
|
|
SharePreset.edit,
|
|
);
|
|
});
|
|
|
|
test('returns null for an unmatched mask', () {
|
|
// share-only (16) with no read bit matches nothing.
|
|
expect(presetFromBitmask(kPermissionShare), isNull);
|
|
expect(presetFromBitmask(0), isNull);
|
|
});
|
|
});
|
|
|
|
group('hasPermission', () {
|
|
test('detects individual bits', () {
|
|
const mask = kPermissionRead | kPermissionUpdate;
|
|
expect(hasPermission(mask, kPermissionRead), isTrue);
|
|
expect(hasPermission(mask, kPermissionUpdate), isTrue);
|
|
expect(hasPermission(mask, kPermissionDelete), isFalse);
|
|
});
|
|
});
|
|
}
|