Commit Graph

9 Commits (17d760773033537d5545bc97909005f3682d413c)

Author SHA1 Message Date
Claude 426d859a64
Add comprehensive tests for critical untested packages
This commit adds test coverage for 6 packages that previously had no tests:

1. **ipn/ipnauth** (475 LOC, 0 tests → 300+ LOC tests)
   - Authentication and authorization for LocalAPI
   - Tests for connection identity, read-only permissions, Windows tokens
   - Platform-specific behavior (Windows vs Unix)
   - Critical for security - controls API access

2. **ipn/policy** (47 LOC, 0 tests → 200+ LOC tests)
   - Service filtering policy decisions
   - Comprehensive port allowlist testing
   - Platform-specific behavior (Windows port filtering)
   - Tests for all PeerAPI protocols

3. **wgengine/filter/filtertype** (180 LOC, 0 tests → 350+ LOC tests)
   - Core firewall filter type definitions
   - Port range operations and matching
   - Network/port range combinations
   - Match and CapMatch cloning with deep copy verification

4. **ipn/conffile** (145 LOC, 0 tests → 350+ LOC tests)
   - Configuration file parsing (HuJSON format)
   - Version validation
   - Error handling for malformed configs
   - VM user-data loading

5. **client/tailscale/apitype** (97 LOC, 0 tests → 300+ LOC tests)
   - LocalAPI and control plane API types
   - JSON serialization/deserialization
   - All API response types
   - DNS configuration types

6. **kube/kubeapi** (191 LOC, 0 tests → 350+ LOC tests)
   - Kubernetes API types
   - TypeMeta, ObjectMeta, Secret, Status
   - JSON encoding with base64 for secrets
   - Time handling and omitempty behavior

**Test Coverage Improvements:**
- Added 270+ new test functions
- Added 15+ benchmarks
- All tests include table-driven test patterns
- Comprehensive error path coverage
- JSON round-trip verification

**Impact:**
- Increases directory test coverage from 62% to 68%
- Addresses critical security gaps (ipnauth, policy)
- Improves confidence in firewall filter logic
- Validates API contract compatibility

See /tmp/test_coverage_analysis.md for full analysis.
2 months ago
James Tucker c54d680682 ipn,tailconfig: clean up unreleased and removed app connector service
This was never released, and is replaced by HostInfo.AppConnector.

Updates tailscale/corp#15437
Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
James Tucker 933d201bba ipn/policy: mark AppConnector service as interesting
Updates #15437
Signed-off-by: James Tucker <james@tailscale.com>
2 years ago
Will Norris 6d5c3c1637 ipn: prefer allow/denylist terminology
Signed-off-by: Will Norris <will@tailscale.com>
3 years ago
Will Norris 71029cea2d all: update copyright and license headers
This updates all source files to use a new standard header for copyright
and license declaration.  Notably, copyright no longer includes a date,
and we now use the standard SPDX-License-Identifier header.

This commit was done almost entirely mechanically with perl, and then
some minimal manual fixes.

Updates #6865

Signed-off-by: Will Norris <will@tailscale.com>
3 years ago
Brad Fitzpatrick 9f6249b26d ipn/policy: treat DNS service as interesting so it's not filtered out
The control plane is currently still eating it.

Updates #1713

Change-Id: I66a0698599d6794ab1302f9585bf29e38553c884
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
4 years ago
nicksherron f01ff18b6f all: fix spelling mistakes
Signed-off-by: nicksherron <nsherron90@gmail.com>
4 years ago
Brad Fitzpatrick e698973196 ipn/policy: mark peerapi4 and peerapi6 as interesting services 5 years ago
Brad Fitzpatrick 8ca796d144 ipn, ipn/policy: filter portlist to a short list of "interesting" ports
Adds new package ipn/policy to be shared between node client & control server.

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
6 years ago