mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	fix: handle empty aclPolicy for integration tests
This commit is contained in:
		
							parent
							
								
									68417cc888
								
							
						
					
					
						commit
						dc8c20e002
					
				@ -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 New Issue
	
	Block a user