[#1177] cli: Fix resource name parsing

* If `root` name is given explicitly, then it should be translated to
  `//` but not `/root/`.

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
This commit is contained in:
Airat Arifullin 2024-06-14 13:06:11 +03:00
parent 3fc8e0e08c
commit b9d6c9d10c
2 changed files with 11 additions and 2 deletions

View file

@ -279,7 +279,7 @@ func parseResource(lexeme string, isObj bool) (string, error) {
if isObj { if isObj {
if lexeme == "*" { if lexeme == "*" {
return nativeschema.ResourceFormatAllObjects, nil return nativeschema.ResourceFormatAllObjects, nil
} else if lexeme == "/*" { } else if lexeme == "/*" || lexeme == "root/*" {
return nativeschema.ResourceFormatRootObjects, nil return nativeschema.ResourceFormatRootObjects, nil
} else if strings.HasPrefix(lexeme, "/") { } else if strings.HasPrefix(lexeme, "/") {
lexeme = lexeme[1:] lexeme = lexeme[1:]

View file

@ -26,7 +26,7 @@ func TestParseAPERule(t *testing.T) {
}, },
}, },
{ {
name: "Valid rule for all objects in root namespace", name: "Valid rule for all objects in implicit root namespace",
rule: "allow Object.Put /*", rule: "allow Object.Put /*",
expectRule: policyengine.Rule{ expectRule: policyengine.Rule{
Status: policyengine.Allow, Status: policyengine.Allow,
@ -34,6 +34,15 @@ func TestParseAPERule(t *testing.T) {
Resources: policyengine.Resources{Names: []string{nativeschema.ResourceFormatRootObjects}}, Resources: policyengine.Resources{Names: []string{nativeschema.ResourceFormatRootObjects}},
}, },
}, },
{
name: "Valid rule for all objects in explicit root namespace",
rule: "allow Object.Put root/*",
expectRule: policyengine.Rule{
Status: policyengine.Allow,
Actions: policyengine.Actions{Names: []string{nativeschema.MethodPutObject}},
Resources: policyengine.Resources{Names: []string{nativeschema.ResourceFormatRootObjects}},
},
},
{ {
name: "Valid rule for all objects in root namespace and container", name: "Valid rule for all objects in root namespace and container",
rule: "allow Object.Put /cid/*", rule: "allow Object.Put /cid/*",