headscale/hscontrol/policy/v2
Kristoffer Dalby 53d17aa321 policy: add comprehensive Tailscale ACL compatibility tests
Add extensive test coverage verifying Headscale's ACL policy behavior
matches Tailscale's coordination server. Tests cover:
- Source/destination resolution for users, groups, tags, hosts, IPs
- autogroup:member, autogroup:tagged, autogroup:self behavior
- Filter rule deduplication and merging semantics
- Multi-rule interaction patterns
- Error case validation
Key behavioral differences documented:
- Headscale creates separate filter entries per ACL rule; Tailscale
  merges rules with identical sources
- Headscale deduplicates Dsts within a rule; Tailscale does not
- Headscale does not validate autogroup:self source restrictions for
  ACL rules (only SSH rules); Tailscale rejects invalid sources
Tests are based on real Tailscale coordination server responses
captured from a test environment with 5 nodes (1 user-owned, 4 tagged).

Updates #3036
2026-02-05 19:29:16 +01:00
..
filter.go policy/v2: add Caller() to log statements in compileACLWithAutogroupSelf 2026-02-03 16:53:15 +01:00
filter_test.go policy/v2: use partial IPSet on group resolution errors in autogroup:self path 2026-02-03 16:53:15 +01:00
policy.go policy/v2: add IsTagged() guards to prevent panics on tagged nodes 2026-02-03 16:53:15 +01:00
policy_test.go policy/v2: add test for issue #2990 same-user tagged device 2026-02-03 16:53:15 +01:00
tailscale_compat_test.go policy: add comprehensive Tailscale ACL compatibility tests 2026-02-05 19:29:16 +01:00
types.go policy/v2: validate SSH source/destination combinations 2026-01-21 17:01:30 +00:00
types_test.go policy: update tests for SSH validation rules 2026-01-21 17:01:30 +00:00
utils.go modernize: run gopls modernize to bring up to 1.25 (#2920) 2025-12-01 19:40:25 +01:00
utils_test.go integration: replace time.Sleep with assert.EventuallyWithT (#2680) 2025-07-10 23:38:55 +02:00