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  }