Skip to content

Commit

Permalink
Add test to validate auth yaml
Browse files Browse the repository at this point in the history
Signed-off-by: Sam Lucidi <slucidi@redhat.com>
  • Loading branch information
mansam committed Nov 30, 2023
1 parent 9cce965 commit e721b13
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 8 deletions.
17 changes: 9 additions & 8 deletions auth/role.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package auth

import (
"io"
"os"

liberr "github.com/jortel/go-utils/error"
"github.com/konveyor/tackle2-hub/settings"
"gopkg.in/yaml.v2"
"io"
"os"
)

var Settings = &settings.Settings
Expand Down Expand Up @@ -36,15 +37,15 @@ var AddonRole = []string{
// Role represents a RBAC role which grants
// access to particular resources in the hub.
type Role struct {
Name string `yaml:"role"`
Resources []Resource `yaml:"resources"`
Name string `yaml:"role" validate:"required"`
Resources []Resource `yaml:"resources" validate:"required"`
}

//
// Resource is a set of permissions for a hub resource that a role may have.
type Resource struct {
Name string `yaml:"name"`
Verbs []string `yaml:"verbs"`
Name string `yaml:"name" validate:"required"`
Verbs []string `yaml:"verbs" validate:"required,dive,oneof=get post put patch delete"`
}

//
Expand Down Expand Up @@ -75,7 +76,7 @@ func LoadRoles(path string) (roles []Role, err error) {
return
}

err = yaml.Unmarshal(yamlBytes, &roles)
err = yaml.UnmarshalStrict(yamlBytes, &roles)
if err != nil {
err = liberr.Wrap(err)
return
Expand All @@ -100,7 +101,7 @@ func LoadUsers(path string) (users []User, err error) {
return
}

err = yaml.Unmarshal(yamlBytes, &users)
err = yaml.UnmarshalStrict(yamlBytes, &users)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down
40 changes: 40 additions & 0 deletions auth/role_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package auth

/*
These tests serve to validate the users.yaml and roles.yaml files that are located in this package.
*/

import (
"testing"

"github.com/go-playground/validator/v10"
"github.com/onsi/gomega"
)

func TestLoadYaml(t *testing.T) {
g := gomega.NewGomegaWithT(t)
roles, err := LoadRoles("./roles.yaml")
g.Expect(err).To(gomega.BeNil())
users, err := LoadUsers("./users.yaml")
g.Expect(err).To(gomega.BeNil())

validate := validator.New()
var roleNames []string
for _, role := range roles {
err = validate.Struct(role)
g.Expect(err).To(gomega.BeNil())
for _, resource := range role.Resources {
err = validate.Struct(resource)
g.Expect(err).To(gomega.BeNil())
}
roleNames = append(roleNames, role.Name)
}

for _, user := range users {
err = validate.Struct(user)
g.Expect(err).To(gomega.BeNil())
for _, role := range user.Roles {
g.Expect(role).To(gomega.BeElementOf(roleNames))
}
}
}

0 comments on commit e721b13

Please sign in to comment.