File: ace_test.go

package info (click to toggle)
golang-github-tombuildsstuff-giovanni 0.20.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 15,908 kB
  • sloc: makefile: 3
file content (91 lines) | stat: -rw-r--r-- 3,000 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package accesscontrol

import (
	"testing"

	"github.com/google/uuid"
	"github.com/stretchr/testify/assert"
)

func TestACEValidate_WithValidACE(t *testing.T) {
	ace := ACE{
		TagType:     TagTypeUser,
		Permissions: "rwx",
	}
	assert.Nil(t, ace.Validate(), "Expected ACE to Validate successfully")
}

func TestACEValidate_WithACEInvalidPermisions(t *testing.T) {
	ace := ACE{
		TagType:     TagTypeUser,
		Permissions: "awx",
	}

	assert.EqualError(t, ace.Validate(), "Permissions must be of the form [r-][w-][x-]")
}

func TestACEValidate_WithACEQualifierSetForMask(t *testing.T) {
	qualifier := uuid.MustParse("ba4662cb-995c-479d-8f7c-a1b3d8ae05a9")
	ace := ACE{
		TagType:      TagTypeMask,
		TagQualifier: &qualifier,
		Permissions:  "rwx",
	}

	assert.EqualError(t, ace.Validate(), "TagQualifier cannot be set for 'mask' or 'other' TagTypes")
}

func TestACEParse_WithValidDefault(t *testing.T) {
	ace, err := ParseACE("default:user:22edd3d8-9253-4463-b8f8-442ebe33b622:rwx")
	assert.NoError(t, err)
	assert.Equal(t, true, ace.IsDefault, "Expected default")
	assert.Equal(t, TagTypeUser, ace.TagType)
	assert.Equal(t, "22edd3d8-9253-4463-b8f8-442ebe33b622", ace.TagQualifier.String())
	assert.Equal(t, "rwx", ace.Permissions)
}
func TestACEParse_WithValidNonDefault(t *testing.T) {
	ace, err := ParseACE("user:885d0d94-9ecb-4e0d-8581-781b56d27b10:rwx")
	assert.NoError(t, err)
	assert.Equal(t, false, ace.IsDefault, "Expected non-default")
	assert.Equal(t, TagTypeUser, ace.TagType)
	assert.Equal(t, "885d0d94-9ecb-4e0d-8581-781b56d27b10", ace.TagQualifier.String())
	assert.Equal(t, "rwx", ace.Permissions)
}

func TestACEParse_WithInvalid4Part(t *testing.T) {
	_, err := ParseACE("test:::")
	assert.EqualError(t, err, "When specifying a 4-part ACE the first part must be 'default'")
}
func TestACEParse_WithInvalidTagType(t *testing.T) {
	_, err := ParseACE("wibble::rwx")
	assert.EqualError(t, err, "Unrecognized TagType: \"wibble\"")
}
func TestACEParse_WithInvalidNumberOfParts(t *testing.T) {
	_, err := ParseACE("user:rwx")
	assert.EqualError(t, err, "ACE string should have either 3 or 4 parts")
}
func TestACEParse_WithInvalidQualifier(t *testing.T) {
	_, err := ParseACE("user:wibble94-9ecb-4e0d-8581-781b56d27b10:rwx")
	assert.EqualError(t, err, "Error parsing qualifer \"wibble94-9ecb-4e0d-8581-781b56d27b10\": invalid UUID format")
}

func TestACEString_WithDefault(t *testing.T) {
	qualifier := uuid.MustParse("ba4662cb-995c-479d-8f7c-a1b3d8ae05a9")
	ace := ACE{
		IsDefault:    true,
		TagType:      TagTypeUser,
		TagQualifier: &qualifier,
		Permissions:  "r-x",
	}
	assert.Equal(t, "default:user:ba4662cb-995c-479d-8f7c-a1b3d8ae05a9:r-x", ace.String())
}
func TestACEString_WithNonDefault(t *testing.T) {
	qualifier := uuid.MustParse("ba4662cb-995c-479d-8f7c-a1b3d8ae05a9")
	ace := ACE{
		IsDefault:    false,
		TagType:      TagTypeGroup,
		TagQualifier: &qualifier,
		Permissions:  "rw-",
	}
	assert.Equal(t, "group:ba4662cb-995c-479d-8f7c-a1b3d8ae05a9:rw-", ace.String())
}