headscale/integration
Kristoffer Dalby b9868f6516
Make more granular SSH tests for both Policies (#2555)
* policy/v1: dont consider empty if ssh has rules

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy/v2: replace time.Duration with model.Duration

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy/v2: add autogroup and ssh validation

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy/v2: replace time.Duration with model.Duration

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy: replace old ssh tests with more granular test

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy: skip v1 tests expected to fail (missing error handling)

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* policy: skip v1 group tests, old bugs wont be fixed

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* integration: user valid policy for ssh

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* Changelog, add ssh section

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

* nix update

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>

---------

Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
2025-05-04 12:05:41 +00:00
..
dockertestutil fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
dsic Multi network integration tests (#2464) 2025-03-21 11:49:32 +01:00
hsic types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
integrationutil feat: support client verify for derp (add integration tests) (#2046) 2024-11-22 13:23:05 +01:00
tsic fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
acl_test.go fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
auth_key_test.go types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
auth_oidc_test.go fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
auth_web_flow_test.go fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
cli_test.go notify nodes after owner change (#2543) 2025-04-30 18:33:38 +02:00
control.go types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
derp_verify_endpoint_test.go Multi network integration tests (#2464) 2025-03-21 11:49:32 +01:00
dns_test.go integration: remove failing resolvconf tests (#2549) 2025-04-30 07:52:23 +02:00
embedded_derp_test.go Multi network integration tests (#2464) 2025-03-21 11:49:32 +01:00
general_test.go types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
README.md feat: support client verify for derp (add integration tests) (#2046) 2024-11-22 13:23:05 +01:00
route_test.go auth: ensure that routes are autoapproved when the node is stored (#2550) 2025-05-01 07:05:42 +02:00
run.sh Fix 764 (#2093) 2024-09-03 09:22:17 +02:00
scenario.go types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
scenario_test.go types/authkey: include user object in response (#2542) 2025-04-30 11:45:08 +02:00
ssh_test.go Make more granular SSH tests for both Policies (#2555) 2025-05-04 12:05:41 +00:00
tailscale.go fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00
utils.go fix webauth + autoapprove routes (#2528) 2025-04-30 07:54:04 +02:00

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.