mirror of
https://github.com/juanfont/headscale.git
synced 2026-04-09 14:37:45 +09:00
Address-based aliases (Prefix, Host) now resolve to exactly the literal prefix and do not expand to include the matching node's other IP addresses. This means an IPv4-only host definition only produces IPv4 filter rules, and an IPv6-only definition only produces IPv6 rules. Update TestACLDevice1CanAccessDevice2 and TestACLNamedHostsCanReach to track which addresses each test case covers via test1Addr/test2Addr/ test3Addr fields and only assert connectivity for that family. Previously the tests assumed all address families would work regardless of how the policy aliases were defined, which was true only when address-based aliases auto-expanded to include all of a node's IPs. The group test case (identity-based) keeps using IPv4 since tags, users, groups, autogroups and the wildcard still resolve to both IPv4 and IPv6. Updates #2180
Integration testing
Headscale relies on integration testing to ensure we remain compatible with Tailscale.
This is typically performed by starting a Headscale server and running a test "scenario" with an array of Tailscale clients and versions.
Headscale's test framework and the current set of scenarios are defined in this directory.
Tests are located in files ending with _test.go and the framework are located in the rest.
Running integration tests locally
The easiest way to run tests locally is to use act, a local GitHub Actions runner:
act pull_request -W .github/workflows/test-integration.yaml
Alternatively, the docker run command in each GitHub workflow file can be used.
Running integration tests on GitHub Actions
Each test currently runs as a separate workflows in GitHub actions, to add new test, run
go generate inside ../cmd/gh-action-integration-generator/ and commit the result.