policy/v2: SaaS-derived compat tests for nodeAttrs
Adds a data-driven test that loads testdata/nodeattrs_results/*.hujson and diffs the captured SaaS-rendered netmaps against headscale's compileNodeAttrs output. Each capture is one scenario the SaaS control plane has rendered against the same policy headscale is asked to compile -- the test enforces shape parity per node. tailnet_state_caps.go enumerates the caps SaaS emits where headscale has no equivalent concept yet (user-role admin/owner, tailnet lock, services host, app connectors, internal magicsock and SSH tuning, tailnet-state metadata) plus the always-on baseline (admin, ssh, file-sharing) and the taildrive pair. stripUnmodelledTailnetStateCaps filters both sides of cmp.Diff so the comparison focuses on the policy-driven caps. PeerCapMap encodes which caps the Tailscale client reads from the peer view (suggest-exit-node when exit routes are approved, etc.) for use by the mapper. testcapture switches to typed tailcfg/netmap/filtertype/apitype values so schema drift between the capture tool and headscale becomes a compile error rather than a silent test failure. Existing compat suites (acl, grants, routes, ssh, issue_3212) move to the typed shape. The 53 SelfNode netmap captures and the 7 anonymizer-corrupted suggest-charmander -> suggest-exit-node restorations in routes_results / issue_3212 ride along.
This commit is contained in:
parent
3f73ed5404
commit
078b9e308f
72 changed files with 463447 additions and 183 deletions
7774
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c1-funnel.hujson
vendored
Normal file
7774
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c1-funnel.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c10-disable-relay-server.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c10-disable-relay-server.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c11-unknown.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c11-unknown.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c12-cap-with-query.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c12-cap-with-query.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c13-suggest-exit-node.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c13-suggest-exit-node.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c14-suggest-exit-node-approved.hujson
vendored
Normal file
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c14-suggest-exit-node-approved.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c2-randomize.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c2-randomize.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c3-captive.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c3-captive.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c4-magicdns-aaaa.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c4-magicdns-aaaa.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
7735
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c5-taildrive-share.hujson
vendored
Normal file
7735
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c5-taildrive-share.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c6-taildrive-access-only.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c6-taildrive-access-only.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c7-file-sharing.hujson
vendored
Normal file
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c7-file-sharing.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c8-admin.hujson
vendored
Normal file
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c8-admin.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8813
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c9-ssh.hujson
vendored
Normal file
8813
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-attr-c9-ssh.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8818
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e1-empty.hujson
vendored
Normal file
8818
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e1-empty.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e2-bad-target.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e2-bad-target.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e3-autogroup-self.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e3-autogroup-self.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e4-reserved-ippool.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e4-reserved-ippool.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e5-empty-target-array.hujson
vendored
Normal file
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e5-empty-target-array.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e6-tag-not-defined.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e6-tag-not-defined.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8818
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e7-empty-nodeAttrs.hujson
vendored
Normal file
8818
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-error-e7-empty-nodeAttrs.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-funnel-f1-tag.hujson
vendored
Normal file
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-funnel-f1-tag.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-funnel-f2-user.hujson
vendored
Normal file
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-funnel-f2-user.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8816
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h1-with-acls.hujson
vendored
Normal file
8816
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h1-with-acls.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
7308
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h2-with-grants.hujson
vendored
Normal file
7308
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h2-with-grants.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
7408
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h3-policy-uses-everything.hujson
vendored
Normal file
7408
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-interaction-h3-policy-uses-everything.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g1-admin.hujson
vendored
Normal file
8821
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g1-admin.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8826
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g2-group.hujson
vendored
Normal file
8826
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g2-group.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8828
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g3-mixed.hujson
vendored
Normal file
8828
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-ippool-g3-mixed.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b1-union.hujson
vendored
Normal file
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b1-union.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b2-overlap.hujson
vendored
Normal file
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b2-overlap.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b3-same-target-twice.hujson
vendored
Normal file
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b3-same-target-twice.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b4-duplicate-attr.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b4-duplicate-attr.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8824
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b5-multiple-nextdns.hujson
vendored
Normal file
8824
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-merge-b5-multiple-nextdns.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d1-profile.hujson
vendored
Normal file
8837
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d1-profile.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8852
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d2-no-device-info.hujson
vendored
Normal file
8852
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d2-no-device-info.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8817
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d3-per-tag.hujson
vendored
Normal file
8817
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-nextdns-d3-per-tag.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
9138
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-tailnet-devices-auto-updates-on.hujson
vendored
Normal file
9138
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-tailnet-devices-auto-updates-on.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
9202
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-tailnet-magicdns-on.hujson
vendored
Normal file
9202
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-tailnet-magicdns-on.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
7739
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a1-wildcard.hujson
vendored
Normal file
7739
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a1-wildcard.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a10-autogroup-admin.hujson
vendored
Normal file
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a10-autogroup-admin.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a11-autogroup-owner.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a11-autogroup-owner.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a12-tag-vs-autogroup-member.hujson
vendored
Normal file
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a12-tag-vs-autogroup-member.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a2-user.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a2-user.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8817
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a3-tag.hujson
vendored
Normal file
8817
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a3-tag.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8828
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a4-group.hujson
vendored
Normal file
8828
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a4-group.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a5-autogroup-member.hujson
vendored
Normal file
8827
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a5-autogroup-member.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a6-autogroup-tagged.hujson
vendored
Normal file
8831
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a6-autogroup-tagged.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a7-mixed.hujson
vendored
Normal file
8825
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a7-mixed.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8824
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a8-host.hujson
vendored
Normal file
8824
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a8-host.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a9-prefix.hujson
vendored
Normal file
8823
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-target-a9-prefix.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8834
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-toplevel-randomize-client-port.hujson
vendored
Normal file
8834
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-toplevel-randomize-client-port.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
8838
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-toplevel-randomize-plus-nodeattrs.hujson
vendored
Normal file
8838
hscontrol/policy/v2/testdata/nodeattrs_results/nodeattrs-toplevel-randomize-plus-nodeattrs.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue