133 lines
4.4 KiB
Go
133 lines
4.4 KiB
Go
|
package ape
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"git.frostfs.info/TrueCloudLab/policy-engine/schema/native"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestValidationOfChainResources(t *testing.T) {
|
||
|
tests := [...]struct {
|
||
|
testName string
|
||
|
resourceName string
|
||
|
expectErr error
|
||
|
}{
|
||
|
{
|
||
|
testName: "native object: all objects",
|
||
|
resourceName: native.ObjectPrefix + "/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: all objects in namespace",
|
||
|
resourceName: native.ObjectPrefix + "/ns/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: all objects in root namespace",
|
||
|
resourceName: native.ObjectPrefix + "//*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: all objects in namespace/container",
|
||
|
resourceName: native.ObjectPrefix + "/ns/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: all objects in root namespace/container",
|
||
|
resourceName: native.ObjectPrefix + "//SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: object in namespace/container",
|
||
|
resourceName: native.ObjectPrefix + "/ns/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH/BCGsUu6o92oG1UALVox1sV6YbBUKUL2xSCtAFkrsuvWY",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: object in root namespace/container",
|
||
|
resourceName: native.ObjectPrefix + "//SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH/BCGsUu6o92oG1UALVox1sV6YbBUKUL2xSCtAFkrsuvWY",
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid all objects",
|
||
|
resourceName: native.ObjectPrefix + "/*12313",
|
||
|
expectErr: ErrInvalidResource,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: all objects in invalid namespace",
|
||
|
resourceName: native.ObjectPrefix + "/qwe_123123/*",
|
||
|
expectErr: ErrInvalidNamespace,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid all objects in root namespace",
|
||
|
resourceName: native.ObjectPrefix + "//qwe",
|
||
|
expectErr: ErrInvalidResource,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid cid in all objects in root namespace",
|
||
|
resourceName: native.ObjectPrefix + "//SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytHqwe/*",
|
||
|
expectErr: ErrInvalidContainerID,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid cid in all objects in namespace",
|
||
|
resourceName: native.ObjectPrefix + "/ns/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytHqwe/*",
|
||
|
expectErr: ErrInvalidContainerID,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid object in namespace/container",
|
||
|
resourceName: native.ObjectPrefix + "/ns/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH/BCGsUu6o92oG1UALVox1sV6YbBUKUL2xSCtAFkrsuvWY111",
|
||
|
expectErr: ErrInvalidObjectID,
|
||
|
},
|
||
|
{
|
||
|
testName: "native object: invalid resource",
|
||
|
resourceName: native.ObjectPrefix + "/ns/SeHNpifD/AFkrsuvWY111/AFkrsuvWY222",
|
||
|
expectErr: ErrInvalidResource,
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: all containers",
|
||
|
resourceName: native.ContainerPrefix + "/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: all containers in namespace",
|
||
|
resourceName: native.ContainerPrefix + "/ns/*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: all containers in root namespace",
|
||
|
resourceName: native.ContainerPrefix + "//*",
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: container in namespace",
|
||
|
resourceName: native.ContainerPrefix + "/ns/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH",
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: container in root namespace",
|
||
|
resourceName: native.ContainerPrefix + "//SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH",
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: invalid all containers",
|
||
|
resourceName: native.ContainerPrefix + "/*asd",
|
||
|
expectErr: ErrInvalidResource,
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: invalid resource",
|
||
|
resourceName: native.ContainerPrefix + "/ns/cid/cid",
|
||
|
expectErr: ErrInvalidResource,
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: invalid container in root namespace",
|
||
|
resourceName: native.ContainerPrefix + "//*asd",
|
||
|
expectErr: ErrInvalidContainerID,
|
||
|
},
|
||
|
{
|
||
|
testName: "native container: container in invalid namespace",
|
||
|
resourceName: native.ContainerPrefix + "/ns_111/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH",
|
||
|
expectErr: ErrInvalidNamespace,
|
||
|
},
|
||
|
{
|
||
|
testName: "unsupported prefix",
|
||
|
resourceName: "native:test/ns_111/SeHNpifDH2Fc4scNBphrbmrKi96QXj2HzYJkhSGuytH",
|
||
|
expectErr: ErrUnsupportedPrefix,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.testName, func(t *testing.T) {
|
||
|
err := ValidateResourceName(test.resourceName)
|
||
|
require.ErrorIs(t, err, test.expectErr)
|
||
|
})
|
||
|
}
|
||
|
}
|