github.com/cs3org/reva/v2@v2.27.7/pkg/conversions/role_test.go (about) 1 package conversions 2 3 import ( 4 "testing" 5 6 providerv1beta1 "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestSufficientPermissions(t *testing.T) { 11 type testData struct { 12 Existing *providerv1beta1.ResourcePermissions 13 Requested *providerv1beta1.ResourcePermissions 14 Sufficient bool 15 } 16 table := []testData{ 17 { 18 Existing: nil, 19 Requested: nil, 20 Sufficient: false, 21 }, 22 { 23 Existing: RoleFromName("editor").CS3ResourcePermissions(), 24 Requested: nil, 25 Sufficient: false, 26 }, 27 { 28 Existing: nil, 29 Requested: RoleFromName("viewer").CS3ResourcePermissions(), 30 Sufficient: false, 31 }, 32 { 33 Existing: RoleFromName("editor").CS3ResourcePermissions(), 34 Requested: RoleFromName("viewer").CS3ResourcePermissions(), 35 Sufficient: true, 36 }, 37 { 38 Existing: RoleFromName("viewer").CS3ResourcePermissions(), 39 Requested: RoleFromName("editor").CS3ResourcePermissions(), 40 Sufficient: false, 41 }, 42 { 43 Existing: RoleFromName("spaceviewer").CS3ResourcePermissions(), 44 Requested: RoleFromName("spaceeditor").CS3ResourcePermissions(), 45 Sufficient: false, 46 }, 47 { 48 Existing: RoleFromName("manager").CS3ResourcePermissions(), 49 Requested: RoleFromName("spaceeditor").CS3ResourcePermissions(), 50 Sufficient: true, 51 }, 52 { 53 Existing: RoleFromName("manager").CS3ResourcePermissions(), 54 Requested: RoleFromName("spaceviewer").CS3ResourcePermissions(), 55 Sufficient: true, 56 }, 57 { 58 Existing: RoleFromName("manager").CS3ResourcePermissions(), 59 Requested: RoleFromName("manager").CS3ResourcePermissions(), 60 Sufficient: true, 61 }, 62 { 63 Existing: RoleFromName("manager").CS3ResourcePermissions(), 64 Requested: RoleFromName("denied").CS3ResourcePermissions(), 65 Sufficient: true, 66 }, 67 { 68 Existing: RoleFromName("spaceeditor").CS3ResourcePermissions(), 69 Requested: RoleFromName("denied").CS3ResourcePermissions(), 70 Sufficient: false, 71 }, 72 { 73 Existing: RoleFromName("editor").CS3ResourcePermissions(), 74 Requested: RoleFromName("denied").CS3ResourcePermissions(), 75 Sufficient: false, 76 }, 77 { 78 Existing: RoleFromName("secure-viewer").CS3ResourcePermissions(), 79 Requested: RoleFromName("secure-viewer").CS3ResourcePermissions(), 80 Sufficient: true, 81 }, 82 { 83 Existing: RoleFromName("secure-viewer").CS3ResourcePermissions(), 84 Requested: RoleFromName("viewer").CS3ResourcePermissions(), 85 Sufficient: false, 86 }, 87 { 88 Existing: RoleFromName("secure-viewer").CS3ResourcePermissions(), 89 Requested: RoleFromName("editor").CS3ResourcePermissions(), 90 Sufficient: false, 91 }, 92 { 93 Existing: &providerv1beta1.ResourcePermissions{ 94 // all permissions, used for personal space owners 95 AddGrant: true, 96 CreateContainer: true, 97 Delete: true, 98 GetPath: true, 99 GetQuota: true, 100 InitiateFileDownload: true, 101 InitiateFileUpload: true, 102 ListContainer: true, 103 ListFileVersions: true, 104 ListGrants: true, 105 ListRecycle: true, 106 Move: true, 107 PurgeRecycle: true, 108 RemoveGrant: true, 109 RestoreFileVersion: true, 110 RestoreRecycleItem: true, 111 Stat: true, 112 UpdateGrant: true, 113 DenyGrant: true, 114 }, 115 Requested: RoleFromName("denied").CS3ResourcePermissions(), 116 Sufficient: true, 117 }, 118 } 119 for _, test := range table { 120 assert.Equal(t, test.Sufficient, SufficientCS3Permissions(test.Existing, test.Requested)) 121 } 122 }