fix: handle empty aclPolicy for integration tests
This commit is contained in:
parent
68417cc888
commit
dc8c20e002
4 changed files with 31 additions and 9 deletions
|
@ -68,7 +68,8 @@ func init() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf(err.Error())
|
log.Fatalf(err.Error())
|
||||||
}
|
}
|
||||||
tagCmd.Flags().StringSliceP("tags", "t", []string{}, "List of tags to add to the node")
|
tagCmd.Flags().
|
||||||
|
StringSliceP("tags", "t", []string{}, "List of tags to add to the node")
|
||||||
nodeCmd.AddCommand(tagCmd)
|
nodeCmd.AddCommand(tagCmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -268,7 +268,7 @@ func (api headscaleV1APIServer) ListMachines(
|
||||||
for index, machine := range machines {
|
for index, machine := range machines {
|
||||||
m := machine.toProto()
|
m := machine.toProto()
|
||||||
validTags, invalidTags := getTags(
|
validTags, invalidTags := getTags(
|
||||||
*api.h.aclPolicy,
|
api.h.aclPolicy,
|
||||||
machine,
|
machine,
|
||||||
api.h.cfg.OIDC.StripEmaildomain,
|
api.h.cfg.OIDC.StripEmaildomain,
|
||||||
)
|
)
|
||||||
|
|
|
@ -659,14 +659,18 @@ func (machine *Machine) toProto() *v1.Machine {
|
||||||
|
|
||||||
// getTags will return the tags of the current machine.
|
// getTags will return the tags of the current machine.
|
||||||
func getTags(
|
func getTags(
|
||||||
aclPolicy ACLPolicy,
|
aclPolicy *ACLPolicy,
|
||||||
machine Machine,
|
machine Machine,
|
||||||
stripEmailDomain bool,
|
stripEmailDomain bool,
|
||||||
) (validTags []string, invalidTags []string) {
|
) (validTags []string, invalidTags []string) {
|
||||||
|
if aclPolicy == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(aclPolicy)
|
||||||
validTagMap := make(map[string]bool)
|
validTagMap := make(map[string]bool)
|
||||||
invalidTagMap := make(map[string]bool)
|
invalidTagMap := make(map[string]bool)
|
||||||
for _, tag := range machine.HostInfo.RequestTags {
|
for _, tag := range machine.HostInfo.RequestTags {
|
||||||
owners, err := expandTagOwners(aclPolicy, tag, stripEmailDomain)
|
owners, err := expandTagOwners(*aclPolicy, tag, stripEmailDomain)
|
||||||
if errors.Is(err, errInvalidTag) {
|
if errors.Is(err, errInvalidTag) {
|
||||||
invalidTagMap[tag] = true
|
invalidTagMap[tag] = true
|
||||||
|
|
||||||
|
|
|
@ -279,7 +279,7 @@ func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) {
|
||||||
|
|
||||||
func Test_getTags(t *testing.T) {
|
func Test_getTags(t *testing.T) {
|
||||||
type args struct {
|
type args struct {
|
||||||
aclPolicy ACLPolicy
|
aclPolicy *ACLPolicy
|
||||||
machine Machine
|
machine Machine
|
||||||
stripEmailDomain bool
|
stripEmailDomain bool
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ func Test_getTags(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "valid tag one machine",
|
name: "valid tag one machine",
|
||||||
args: args{
|
args: args{
|
||||||
aclPolicy: ACLPolicy{
|
aclPolicy: &ACLPolicy{
|
||||||
TagOwners: TagOwners{
|
TagOwners: TagOwners{
|
||||||
"tag:valid": []string{"joe"},
|
"tag:valid": []string{"joe"},
|
||||||
},
|
},
|
||||||
|
@ -313,7 +313,7 @@ func Test_getTags(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "invalid tag and valid tag one machine",
|
name: "invalid tag and valid tag one machine",
|
||||||
args: args{
|
args: args{
|
||||||
aclPolicy: ACLPolicy{
|
aclPolicy: &ACLPolicy{
|
||||||
TagOwners: TagOwners{
|
TagOwners: TagOwners{
|
||||||
"tag:valid": []string{"joe"},
|
"tag:valid": []string{"joe"},
|
||||||
},
|
},
|
||||||
|
@ -334,7 +334,7 @@ func Test_getTags(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "multiple invalid and identical tags, should return only one invalid tag",
|
name: "multiple invalid and identical tags, should return only one invalid tag",
|
||||||
args: args{
|
args: args{
|
||||||
aclPolicy: ACLPolicy{
|
aclPolicy: &ACLPolicy{
|
||||||
TagOwners: TagOwners{
|
TagOwners: TagOwners{
|
||||||
"tag:valid": []string{"joe"},
|
"tag:valid": []string{"joe"},
|
||||||
},
|
},
|
||||||
|
@ -359,7 +359,7 @@ func Test_getTags(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "only invalid tags",
|
name: "only invalid tags",
|
||||||
args: args{
|
args: args{
|
||||||
aclPolicy: ACLPolicy{
|
aclPolicy: &ACLPolicy{
|
||||||
TagOwners: TagOwners{
|
TagOwners: TagOwners{
|
||||||
"tag:valid": []string{"joe"},
|
"tag:valid": []string{"joe"},
|
||||||
},
|
},
|
||||||
|
@ -377,6 +377,23 @@ func Test_getTags(t *testing.T) {
|
||||||
wantValid: nil,
|
wantValid: nil,
|
||||||
wantInvalid: []string{"tag:invalid", "very-invalid"},
|
wantInvalid: []string{"tag:invalid", "very-invalid"},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "empty ACLPolicy should return empty tags and should not panic",
|
||||||
|
args: args{
|
||||||
|
aclPolicy: nil,
|
||||||
|
machine: Machine{
|
||||||
|
Namespace: Namespace{
|
||||||
|
Name: "joe",
|
||||||
|
},
|
||||||
|
HostInfo: HostInfo{
|
||||||
|
RequestTags: []string{"tag:invalid", "very-invalid"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
stripEmailDomain: false,
|
||||||
|
},
|
||||||
|
wantValid: nil,
|
||||||
|
wantInvalid: nil,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue