mirror of
https://github.com/juanfont/headscale.git
synced 2024-11-29 18:33:05 +00:00
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
|
|
|
@ -268,7 +268,7 @@ func (api headscaleV1APIServer) ListMachines(
|
|||
for index, machine := range machines {
|
||||
m := machine.toProto()
|
||||
validTags, invalidTags := getTags(
|
||||
*api.h.aclPolicy,
|
||||
api.h.aclPolicy,
|
||||
machine,
|
||||
api.h.cfg.OIDC.StripEmaildomain,
|
||||
)
|
||||
|
|
|
@ -659,14 +659,18 @@ func (machine *Machine) toProto() *v1.Machine {
|
|||
|
||||
// getTags will return the tags of the current machine.
|
||||
func getTags(
|
||||
aclPolicy ACLPolicy,
|
||||
aclPolicy *ACLPolicy,
|
||||
machine Machine,
|
||||
stripEmailDomain bool,
|
||||
) (validTags []string, invalidTags []string) {
|
||||
if aclPolicy == nil {
|
||||
return
|
||||
}
|
||||
fmt.Println(aclPolicy)
|
||||
validTagMap := make(map[string]bool)
|
||||
invalidTagMap := make(map[string]bool)
|
||||
for _, tag := range machine.HostInfo.RequestTags {
|
||||
owners, err := expandTagOwners(aclPolicy, tag, stripEmailDomain)
|
||||
owners, err := expandTagOwners(*aclPolicy, tag, stripEmailDomain)
|
||||
if errors.Is(err, errInvalidTag) {
|
||||
invalidTagMap[tag] = true
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) {
|
|||
|
||||
func Test_getTags(t *testing.T) {
|
||||
type args struct {
|
||||
aclPolicy ACLPolicy
|
||||
aclPolicy *ACLPolicy
|
||||
machine Machine
|
||||
stripEmailDomain bool
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ func Test_getTags(t *testing.T) {
|
|||
{
|
||||
name: "valid tag one machine",
|
||||
args: args{
|
||||
aclPolicy: ACLPolicy{
|
||||
aclPolicy: &ACLPolicy{
|
||||
TagOwners: TagOwners{
|
||||
"tag:valid": []string{"joe"},
|
||||
},
|
||||
|
@ -313,7 +313,7 @@ func Test_getTags(t *testing.T) {
|
|||
{
|
||||
name: "invalid tag and valid tag one machine",
|
||||
args: args{
|
||||
aclPolicy: ACLPolicy{
|
||||
aclPolicy: &ACLPolicy{
|
||||
TagOwners: TagOwners{
|
||||
"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",
|
||||
args: args{
|
||||
aclPolicy: ACLPolicy{
|
||||
aclPolicy: &ACLPolicy{
|
||||
TagOwners: TagOwners{
|
||||
"tag:valid": []string{"joe"},
|
||||
},
|
||||
|
@ -359,7 +359,7 @@ func Test_getTags(t *testing.T) {
|
|||
{
|
||||
name: "only invalid tags",
|
||||
args: args{
|
||||
aclPolicy: ACLPolicy{
|
||||
aclPolicy: &ACLPolicy{
|
||||
TagOwners: TagOwners{
|
||||
"tag:valid": []string{"joe"},
|
||||
},
|
||||
|
@ -377,6 +377,23 @@ func Test_getTags(t *testing.T) {
|
|||
wantValid: nil,
|
||||
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 {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
|
|
Loading…
Reference in a new issue