github.com/cozy/cozy-stack@v0.0.0-20240327093429-939e4a21320e/model/permission/rule_test.go (about) 1 package permission 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestMergeRulesIdentical(t *testing.T) { 10 rule1 := Rule{ 11 Title: "myrule1", 12 Type: "io.cozy.files", 13 Description: "description of rule1", 14 Verbs: Verbs(GET), 15 Values: []string{}, 16 } 17 18 rule2 := Rule{ 19 Title: "myrule1", 20 Type: "io.cozy.files", 21 Description: "description of rule1", 22 Verbs: Verbs(GET), 23 Values: []string{}, 24 } 25 26 newRule, err := rule1.Merge(rule2) 27 assert.NoError(t, err) 28 assert.Equal(t, &rule2, newRule) 29 } 30 31 func TestMergeRules(t *testing.T) { 32 rule1 := Rule{ 33 Title: "myrule1", 34 Type: "io.cozy.files", 35 Description: "description of rule1", 36 Verbs: Verbs(GET), 37 Values: []string{}, 38 } 39 40 rule2 := Rule{ 41 Title: "myrule2", 42 Type: "io.cozy.files", 43 Description: "description of rule2", 44 Verbs: Verbs(GET, POST), 45 Values: []string{"io"}, 46 } 47 48 expectedRule := &Rule{ 49 Title: "myrule1", 50 Type: "io.cozy.files", 51 Description: "description of rule1", 52 Verbs: Verbs(GET, POST), 53 Values: []string{"io"}, 54 } 55 56 newRule, err := rule1.Merge(rule2) 57 assert.NoError(t, err) 58 assert.Equal(t, expectedRule, newRule) 59 } 60 61 func TestMergeRulesBadType(t *testing.T) { 62 rule1 := Rule{ 63 Title: "myrule1", 64 Type: "io.cozy.files", 65 Description: "description of rule1", 66 Verbs: Verbs(GET), 67 Values: []string{}, 68 } 69 70 rule2 := Rule{ 71 Title: "myrule2", 72 Type: "io.cozy.contacts", 73 Description: "description of rule2", 74 Verbs: Verbs(GET, POST), 75 Values: []string{"io"}, 76 } 77 78 newRule, err := rule1.Merge(rule2) 79 assert.Error(t, err) 80 assert.Nil(t, newRule) 81 assert.ErrorIs(t, err, ErrImpossibleMerge) 82 }