mirror of
https://github.com/juanfont/headscale.git
synced 2026-04-23 17:18:50 +02:00
integration: prepare AutoApprove test for new tags
Validates #2891 Signed-off-by: Kristoffer Dalby <kristoffer@dalby.cc>
This commit is contained in:
@@ -789,17 +789,23 @@ func (s *Scenario) createHeadscaleEnv(
|
||||
tsOpts []tsic.Option,
|
||||
opts ...hsic.Option,
|
||||
) error {
|
||||
return s.createHeadscaleEnvWithTags(withURL, tsOpts, nil, opts...)
|
||||
return s.createHeadscaleEnvWithTags(withURL, tsOpts, nil, "", opts...)
|
||||
}
|
||||
|
||||
// createHeadscaleEnvWithTags starts the headscale environment and the clients
|
||||
// according to the ScenarioSpec passed to the Scenario. If preAuthKeyTags is
|
||||
// non-empty and withURL is false, the tags will be applied to the PreAuthKey
|
||||
// (tags-as-identity model).
|
||||
//
|
||||
// For webauth (withURL=true), if webauthTagUser is non-empty and preAuthKeyTags
|
||||
// is non-empty, only nodes belonging to that user will request tags via
|
||||
// --advertise-tags. This is necessary because tagOwners ACL controls which
|
||||
// users can request specific tags.
|
||||
func (s *Scenario) createHeadscaleEnvWithTags(
|
||||
withURL bool,
|
||||
tsOpts []tsic.Option,
|
||||
preAuthKeyTags []string,
|
||||
webauthTagUser string,
|
||||
opts ...hsic.Option,
|
||||
) error {
|
||||
headscale, err := s.Headscale(opts...)
|
||||
@@ -813,14 +819,20 @@ func (s *Scenario) createHeadscaleEnvWithTags(
|
||||
return err
|
||||
}
|
||||
|
||||
var opts []tsic.Option
|
||||
var userOpts []tsic.Option
|
||||
if s.userToNetwork != nil {
|
||||
opts = append(tsOpts, tsic.WithNetwork(s.userToNetwork[user]))
|
||||
userOpts = append(tsOpts, tsic.WithNetwork(s.userToNetwork[user]))
|
||||
} else {
|
||||
opts = append(tsOpts, tsic.WithNetwork(s.networks[s.testDefaultNetwork]))
|
||||
userOpts = append(tsOpts, tsic.WithNetwork(s.networks[s.testDefaultNetwork]))
|
||||
}
|
||||
|
||||
err = s.CreateTailscaleNodesInUser(user, "all", s.spec.NodesPerUser, opts...)
|
||||
// For webauth with tags, only apply tags to the specified webauthTagUser
|
||||
// (other users may not be authorized via tagOwners)
|
||||
if withURL && webauthTagUser != "" && len(preAuthKeyTags) > 0 && user == webauthTagUser {
|
||||
userOpts = append(userOpts, tsic.WithTags(preAuthKeyTags))
|
||||
}
|
||||
|
||||
err = s.CreateTailscaleNodesInUser(user, "all", s.spec.NodesPerUser, userOpts...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user