headscale/hscontrol/servertest
Kristoffer Dalby 6fcff9e352 mapper, state: deliver nodeAttrs through MapResponse and harden nextdns DoH rewrite
WithSelfNode and buildTailPeers merge each node's policy CapMap
into the tailcfg.Node.CapMap they emit. State.NodeCapMap and
State.NodeCapMaps wrap the policy manager: NodeCapMap returns a
defensive clone per call; NodeCapMaps snapshots the full per-node
map once for batched callers, amortising pm.mu acquisition across
a peer build.

generateDNSConfig grew a per-node CapMap argument so it can apply
nodeAttr-driven DNS overlays. The nextdns DoH rewrite hardens against
policy-controlled inputs:

  - nextDNSDoHHost anchors the prefix match instead of substring,
    so a hostile resolver URL cannot smuggle a nextdns hostname in
    a path or query.
  - nextDNSProfileFromCapMap accepts only profile names matching
    [A-Za-z0-9._-]{1,64} and picks the lexicographically first when
    multiple are granted -- deterministic, no shell metacharacters
    or URL fragments through.
  - addNextDNSMetadata composes the rewritten URL via url.Parse +
    url.Values rather than fmt.Sprintf, so existing query strings
    on the resolver URL survive and metadata cannot inject a new
    component.

WithTaildropEnabled in servertest controls cfg.Taildrop.Enabled per
test so cap/file-sharing emission can be toggled in tests that need
to verify the off path.
2026-05-13 14:22:30 +02:00
..
assertions.go hscontrol/servertest: add policy, route, ephemeral, and content tests 2026-03-19 07:05:58 +01:00
client.go servertest: use memnet networking and add WithNodeExpiry option 2026-04-08 13:00:22 +01:00
connect_race_test.go state: switch consumers to NodeStore primary routes 2026-04-29 18:08:39 +01:00
consistency_test.go hscontrol/servertest: add policy, route, ephemeral, and content tests 2026-03-19 07:05:58 +01:00
content_test.go hscontrol/servertest: add policy, route, ephemeral, and content tests 2026-03-19 07:05:58 +01:00
ephemeral_test.go state: replace zcache with bounded LRU for auth cache 2026-04-10 14:09:57 +01:00
grants_test.go servertest: cover via-grant exit-node visibility end-to-end 2026-04-30 19:22:45 +01:00
ha_dynamic_test.go state: switch consumers to NodeStore primary routes 2026-04-29 18:08:39 +01:00
ha_health_test.go state: clear Unhealthy when node leaves HA candidate set 2026-04-29 18:08:39 +01:00
harness.go hscontrol/servertest: add policy, route, ephemeral, and content tests 2026-03-19 07:05:58 +01:00
issues_test.go Add unit test 2026-05-11 09:25:26 +01:00
lifecycle_test.go hscontrol/servertest: expand issue tests to 24 scenarios, surface 4 issues 2026-03-19 07:05:58 +01:00
ping_test.go noise: reject non-HEAD on PingResponseHandler 2026-04-17 16:31:49 +01:00
policy_test.go servertest: add regression tests for via grant filter rules 2026-04-01 14:10:42 +01:00
poll_race_test.go hscontrol/servertest: add race, stress, and poll race tests 2026-03-19 07:05:58 +01:00
race_test.go hscontrol/servertest: add race, stress, and poll race tests 2026-03-19 07:05:58 +01:00
routes_test.go servertest, integration: cover HA both-offline recovery 2026-04-29 18:08:39 +01:00
server.go mapper, state: deliver nodeAttrs through MapResponse and harden nextdns DoH rewrite 2026-05-13 14:22:30 +02:00
stress_test.go hscontrol/servertest: add race, stress, and poll race tests 2026-03-19 07:05:58 +01:00
via_compat_test.go servertest: add via grant map compat tests 2026-04-17 16:31:49 +01:00
via_ha_compat_test.go servertest: add TestViaGrantHACompat for via+HA compat tests 2026-04-17 16:31:49 +01:00
weather_test.go hscontrol/servertest: add control plane lifecycle and consistency tests 2026-03-19 07:05:58 +01:00