Commit Graph

8 Commits (f6bf778af835f769f6ebf6abe5d4e2f4fa0bd663)

Author SHA1 Message Date
Ofer Erez d6f61e54b8
Merge branch 'main' into claude/analyze-test-coverage-01BnJsiXhLinMJyRe78R29e9
Signed-off-by: Ofer Erez <ofer43211@users.noreply.github.com>
2 months ago
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
Naman Sood f157f3288d
cmd/tailscale/cli,ipn/conffile: add declarative config mode for Services (#17435)
This commit adds the subcommands `get-config` and `set-config` to Serve,
which can be used to read the current Tailscale Services configuration
in a standard syntax and provide a configuration to declaratively apply
with that same syntax.

Both commands must be provided with either `--service=svc:service` for
one service, or `--all` for all services. When writing a config,
`--set-config --all` will overwrite all existing Services configuration,
and `--set-config --service=svc:service` will overwrite all
configuration for that particular Service. Incremental changes are not
supported.

Fixes tailscale/corp#30983.

cmd/tailscale/cli: hide serve "get-config"/"set-config" commands for now

tailscale/corp#33152 tracks unhiding them when docs exist.

Signed-off-by: Naman Sood <mail@nsood.in>
3 months ago
Brad Fitzpatrick f7afb9b6ca feature/featuretags, ipn/conffile: make HuJSON support in config files optional
Saves 33 KB.

Updates #12614

Change-Id: Ie701c230e0765281f409f29ed263910b9be9cc77
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
4 months ago
Brad Fitzpatrick 508980603b ipn/conffile: don't depend on hujson on iOS/Android
Fixes #13772

Change-Id: I3ae03a5ee48c801f2e5ea12d1e54681df25d4604
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
1 year ago
Brad Fitzpatrick 1ea100e2e5 cmd/tailscaled, ipn/conffile: support ec2 user-data config file
Updates #1412
Updates #1866

Change-Id: I4d08fb233b80c2078b3b28ffc18559baabb4a081
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago
Brad Fitzpatrick 1fc3573446 ipn/{conffile,ipnlocal}: start booting tailscaled from a config file w/ auth key
Updates #1412

Change-Id: Icd880035a31df59797b8379f4af19da5c4c453e2
Co-authored-by: Maisem Ali <maisem@tailscale.com>
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago
Brad Fitzpatrick 18bd98d35b cmd/tailscaled,*: add start of configuration file support
Updates #1412

Co-authored-by: Maisem Ali <maisem@tailscale.com>
Change-Id: I38d559c1784d09fc804f521986c9b4b548718f7d
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2 years ago