Commit Graph

1158 Commits

Author SHA1 Message Date
Aarnav Tale 73ef483f25 test(harness): match Headplane redirects by origin in the Dex sign-in 2026-10-20 11:47:06 -07:00
Aarnav Tale 0419033fd2 test: generate the class tables instead of relying on a prior build 2026-10-20 08:50:05 -07:00
Aarnav Tale 3f261f71e1 ci: run integration tests per Headscale version alongside the build 2026-10-19 17:31:02 -07:00
Aarnav Tale 6cd1bc8320 fix(ssh): show why sessions fail, support check rules and connect once 2026-10-19 16:16:03 -07:00
Aarnav Tale 90914ccb89 test: cover SSO, signing out, linking, status and the agent page 2026-10-19 16:16:02 -07:00
Aarnav Tale faba4f053d test(harness): relay tailnets through Headscale's own DERP server 2026-10-19 16:16:01 -07:00
Aarnav Tale 9b939db787 fix(acls): only offer an empty policy when Headscale has none 2026-10-19 15:22:08 -07:00
Aarnav Tale 8ea30095ee fix(machines): refuse disabling key expiry before 0.29 and name deleted machines 2026-10-19 15:22:06 -07:00
Aarnav Tale 5f043eabb1 fix(dns): refuse changes Headscale can't start with or that no longer apply 2026-10-19 15:22:04 -07:00
Aarnav Tale 3c190b55f0 fix(users): refuse taken names, missing accounts and owner role changes 2026-10-19 15:21:45 -07:00
Aarnav Tale f9362775d6 test(harness): start Headscale with a policy file and submit forms URL-encoded 2026-10-19 15:21:43 -07:00
Aarnav Tale a739a7f336 fix(agent): re-register when Headscale no longer knows the saved node 2026-10-19 15:11:37 -07:00
Aarnav Tale ac47034b48 test(harness): keep DNS records in their own file, as Headplane now requires 2026-10-19 12:57:26 -07:00
Aarnav Tale 6209174f15 docs: keep the testing guide next to the tests 2026-10-19 12:28:11 -07:00
Aarnav Tale b1a7403491 fix: more adversarial review cleanup 2026-10-19 12:25:04 -07:00
Aarnav Tale a3e0289ee5 feat: start some cleanup 2026-10-19 12:25:04 -07:00
Aarnav Tale f9004dc21f feat: de-slop round 1 2026-10-19 12:24:56 -07:00
Aarnav Tale a1d15bf049 test: drop the fake Headscale and test routes against the real one 2026-10-19 12:24:53 -07:00
Aarnav Tale 8322de9ebc test(fake): model only what unit tests use 2026-10-19 12:24:50 -07:00
Aarnav Tale f151e8521a test(agent): give each test file its own agent binary so files run in parallel 2026-10-19 12:24:50 -07:00
Aarnav Tale 598e014780 test(harness): retry Headscale on a new port when another process takes it 2026-10-19 12:24:45 -07:00
Aarnav Tale 0131cbe6d7 test: trim comments to one line 2026-10-19 12:24:45 -07:00
Aarnav Tale e433d4388c docs: describe the test app, contract, and harness 2026-10-19 12:24:44 -07:00
Aarnav Tale 061609c057 test: accept any route function in the test app without a cast 2026-10-19 12:24:11 -07:00
Aarnav Tale d4213f3b39 fix(auth): trim pasted API keys and reject ones that can't be sent 2026-10-19 12:24:10 -07:00
Aarnav Tale 9f37ba4d4d test(contract): cover API keys that can't be sent as a header 2026-10-19 12:24:10 -07:00
Aarnav Tale c86bc5a929 test(harness): run seeded scenarios from the command line
For manual testing, reproducing user setups, and the docs screenshots.
2026-10-19 12:24:10 -07:00
Aarnav Tale fc1d99a24e test: drop unit tests that restate the code 2026-10-19 12:24:00 -07:00
Aarnav Tale 873e41a739 test: move the remaining integration tests onto the harness
Supported versions now live in one place, and CI runs every one of them.
2026-10-19 12:23:59 -07:00
Aarnav Tale 50981b115b fix(machines): keep a machine signed in when key expiry is turned on
Headscale treats an expire request without a future expiry as expire now.
2026-10-19 12:23:50 -07:00
Aarnav Tale 076478e1d0 test: drive machines and DNS from Headplane on a real tailnet 2026-10-19 12:23:50 -07:00
Aarnav Tale ffde9946a6 test(contract): cover 0.28.0 deleting every auth key with a user 2026-10-19 12:23:50 -07:00
Aarnav Tale 5d026f2108 test(harness): serve Headscale over TLS and run Headplane in-process
Tailscale clients retry control over TLS on 443 after a quick reconnect, so a plain HTTP Headscale strands them on every restart.
2026-10-19 12:23:49 -07:00
Aarnav Tale 57c3354d68 test: type the empty sign-in forms 2026-10-19 12:23:49 -07:00
Aarnav Tale 89b2cefef0 test: sign in with API keys against every Headscale version 2026-10-19 12:23:49 -07:00
Aarnav Tale 069804158e test: check every route's permissions against each role 2026-10-19 12:23:49 -07:00
Aarnav Tale e672d63594 fix(agent): require permission to view machines to sync 2026-10-19 12:23:48 -07:00
Aarnav Tale 02529396a1 fix(auth-keys): only show self-service users their own keys
The loader sent every user's keys to anyone signed in, unmasked on Headscale 0.27.
2026-10-19 12:23:48 -07:00
Aarnav Tale 5430324ef3 test: call loaders and actions against the real app context 2026-10-19 12:23:48 -07:00
Aarnav Tale 74e79b175e test: hold an in-memory Headscale to the same contract as the real one 2026-10-19 12:23:48 -07:00
Aarnav Tale 4f41fc6748 fix(api): keep listForUser to the user's own keys
Headscale 0.28+ ignores the user filter and returns every key.
2026-10-19 12:23:48 -07:00
Aarnav Tale 2bd5c2faf1 test(harness): start disposable tailnets with real Tailscale nodes 2026-10-19 12:23:47 -07:00
Aarnav Tale 13223b2236 refactor(server): let tests build the app context around their own services
Startup config errors now throw instead of exiting so they can be tested.
2026-10-19 12:23:47 -07:00
Aarnav Tale d5a40ed74a test: read config from temp dirs and keep logs out of passing runs 2026-10-19 12:23:28 -07:00
Aarnav Tale 31d9c36d5a docs(agents): set the bar for tests and describe the harness 2026-10-19 12:23:28 -07:00
Aarnav Tale fc6f6ce4f6 fix(docs): move the version picker next to the header controls 2026-10-19 11:53:38 -07:00
Aarnav Tale 2e01fa3200 docs: rewrite the docs and version them (#668) 2026-10-19 11:48:26 -07:00
Aarnav Tale b19c638c3a fix: restart headscale for config changes instead of sighup (#667) 2026-10-18 16:01:07 -07:00
Aarnav Tale e770c63bcf fix: sign the OIDC cookie and clear it 2026-10-17 16:39:09 -07:00
Aarnav Tale 078a18d0cb fix(oidc): sync profile picture with the provider on every sign-in 2026-10-17 14:30:17 -07:00