Ctrl K
ComunidadGuías…

rbac/rbac_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package rbac

import (
	"testing"

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

func TestPermissions(t *testing.T) {
	p := NewPermission(ScopeProjectAll, ActionView, nil)
	assert.True(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.True(t, p.allows(Actions.Project("bar").Node("bar").View()))

	p = NewPermission(ScopeProjectAll, ActionView, Object{"project_id": "foo"})
	assert.True(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.False(t, p.allows(Actions.Project("bar").Node("foo").View()))

	p = NewPermission(ScopeNode, ActionView, nil)
	assert.True(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.True(t, p.allows(Actions.Project("bar").Node("bar").View()))

	p = NewPermission(ScopeNode, ActionView, Object{"node_name": "*"})
	assert.True(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.True(t, p.allows(Actions.Project("bar").Node("bar").View()))

	p = NewPermission(ScopeNode, ActionView, Object{"node_name": "foo*"})
	assert.True(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.True(t, p.allows(Actions.Project("foo").Node("foobar").View()))
	assert.False(t, p.allows(Actions.Project("bar").Node("bar").View()))

	p = NewPermission(ScopeNode, ActionView, Object{"node_name": ""})
	assert.False(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.False(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.False(t, p.allows(Actions.Project("bar").Node("bar").View()))

	p = NewPermission(ScopeApplication, ActionView, nil)
	assert.False(t, p.allows(Actions.Project("*").Node("*").View()))
	assert.False(t, p.allows(Actions.Project("foo").Node("foo").View()))
	assert.False(t, p.allows(Actions.Project("bar").Node("bar").View()))
}