mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	feat: add unit tests and fmt
This commit is contained in:
		
							parent
							
								
									db1528bc73
								
							
						
					
					
						commit
						89a1a56328
					
				| @ -662,13 +662,17 @@ func (machine *Machine) toProto() *v1.Machine { | ||||
| } | ||||
| 
 | ||||
| // getTags will return the tags of the current machine
 | ||||
| func getTags(aclPolicy ACLPolicy, machine Machine, stripEmailDomain bool) (validTags []string, invalidTags []string) { | ||||
| func getTags( | ||||
| 	aclPolicy ACLPolicy, | ||||
| 	machine Machine, | ||||
| 	stripEmailDomain bool, | ||||
| ) (validTags []string, invalidTags []string) { | ||||
| 	validTagMap := make(map[string]bool) | ||||
| 	invalidTagMap := make(map[string]bool) | ||||
| 	for _, tag := range machine.HostInfo.RequestTags { | ||||
| 		owners, err := expandTagOwners(aclPolicy, tag, stripEmailDomain) | ||||
| 		if errors.Is(err, errInvalidTag) { | ||||
| 			invalidTags = append(invalidTags, tag) | ||||
| 			invalidTagMap[tag] = true | ||||
| 		} | ||||
| 		var found bool | ||||
| 		for _, owner := range owners { | ||||
|  | ||||
							
								
								
									
										118
									
								
								machine_test.go
									
									
									
									
									
								
							
							
						
						
									
										118
									
								
								machine_test.go
									
									
									
									
									
								
							| @ -277,6 +277,124 @@ func (s *Suite) TestSerdeAddressStrignSlice(c *check.C) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func Test_getTags(t *testing.T) { | ||||
| 	type args struct { | ||||
| 		aclPolicy        ACLPolicy | ||||
| 		machine          Machine | ||||
| 		stripEmailDomain bool | ||||
| 	} | ||||
| 	tests := []struct { | ||||
| 		name        string | ||||
| 		args        args | ||||
| 		wantInvalid []string | ||||
| 		wantValid   []string | ||||
| 	}{ | ||||
| 		{ | ||||
| 			name: "valid tag one machine", | ||||
| 			args: args{ | ||||
| 				aclPolicy: ACLPolicy{ | ||||
| 					TagOwners: TagOwners{ | ||||
| 						"tag:valid": []string{"joe"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				machine: Machine{ | ||||
| 					Namespace: Namespace{ | ||||
| 						Name: "joe", | ||||
| 					}, | ||||
| 					HostInfo: HostInfo{ | ||||
| 						RequestTags: []string{"tag:valid"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				stripEmailDomain: false, | ||||
| 			}, | ||||
| 			wantValid:   []string{"tag:valid"}, | ||||
| 			wantInvalid: nil, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "invalid tag and valid tag one machine", | ||||
| 			args: args{ | ||||
| 				aclPolicy: ACLPolicy{ | ||||
| 					TagOwners: TagOwners{ | ||||
| 						"tag:valid": []string{"joe"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				machine: Machine{ | ||||
| 					Namespace: Namespace{ | ||||
| 						Name: "joe", | ||||
| 					}, | ||||
| 					HostInfo: HostInfo{ | ||||
| 						RequestTags: []string{"tag:valid", "tag:invalid"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				stripEmailDomain: false, | ||||
| 			}, | ||||
| 			wantValid:   []string{"tag:valid"}, | ||||
| 			wantInvalid: []string{"tag:invalid"}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "multiple invalid and identical tags, should return only one invalid tag", | ||||
| 			args: args{ | ||||
| 				aclPolicy: ACLPolicy{ | ||||
| 					TagOwners: TagOwners{ | ||||
| 						"tag:valid": []string{"joe"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				machine: Machine{ | ||||
| 					Namespace: Namespace{ | ||||
| 						Name: "joe", | ||||
| 					}, | ||||
| 					HostInfo: HostInfo{ | ||||
| 						RequestTags: []string{ | ||||
| 							"tag:invalid", | ||||
| 							"tag:valid", | ||||
| 							"tag:invalid", | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				stripEmailDomain: false, | ||||
| 			}, | ||||
| 			wantValid:   []string{"tag:valid"}, | ||||
| 			wantInvalid: []string{"tag:invalid"}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "only invalid tags", | ||||
| 			args: args{ | ||||
| 				aclPolicy: ACLPolicy{ | ||||
| 					TagOwners: TagOwners{ | ||||
| 						"tag:valid": []string{"joe"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				machine: Machine{ | ||||
| 					Namespace: Namespace{ | ||||
| 						Name: "joe", | ||||
| 					}, | ||||
| 					HostInfo: HostInfo{ | ||||
| 						RequestTags: []string{"tag:invalid", "very-invalid"}, | ||||
| 					}, | ||||
| 				}, | ||||
| 				stripEmailDomain: false, | ||||
| 			}, | ||||
| 			wantValid:   nil, | ||||
| 			wantInvalid: []string{"tag:invalid", "very-invalid"}, | ||||
| 		}, | ||||
| 	} | ||||
| 	for _, test := range tests { | ||||
| 		t.Run(test.name, func(t *testing.T) { | ||||
| 			gotValid, gotInvalid := getTags( | ||||
| 				test.args.aclPolicy, | ||||
| 				test.args.machine, | ||||
| 				test.args.stripEmailDomain, | ||||
| 			) | ||||
| 			if !reflect.DeepEqual(gotValid, test.wantValid) { | ||||
| 				t.Errorf("getTags() = %v, want %v", gotValid, test.wantValid) | ||||
| 			} | ||||
| 			if !reflect.DeepEqual(gotInvalid, test.wantInvalid) { | ||||
| 				t.Errorf("getTags() = %v, want %v", gotInvalid, test.wantInvalid) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // nolint
 | ||||
| func Test_getFilteredByACLPeers(t *testing.T) { | ||||
| 	type args struct { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user