fleet/server/platform/arch_test.go
Victor Lyuboslavsky 92bc1c650e
Move PostJSONWithTimeout to platform/http package and activity cleanup (#40561)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38536

- Moved PostJSONWithTimeout to platform/http
- Created platform/errors package with only types needed by ctxerr. This
way, ctxerr did not need to import fleethttp.
- Made activity bounded context use PostJSONWithTimeout directly
- Removed some activity types from legacy code that were no longer
needed

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- Changes file `38536-new-activity-bc` already present, and this is just
cleanup from that work.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

* **Refactor**
* Reorganized error handling utilities for improved clarity and
decoupling.
* Consolidated HTTP utilities to centralize JSON posting functionality
with timeout support.
* Simplified activity service initialization by removing unused internal
parameters.
* Cleaned up test utilities and removed webhook-related test
scaffolding.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-26 17:39:10 -06:00

134 lines
3.6 KiB
Go

package platform_test
import (
"regexp"
"testing"
"github.com/fleetdm/fleet/v4/server/archtest"
)
const m = archtest.ModuleName
// TestPlatformPackageDependencies checks that platform packages are NOT dependent on Fleet domain packages
// to maintain decoupling and modularity. This is a catch-all test.
func TestPlatformPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform...").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
// Platform packages can depend on each other
m+"/server/platform...",
// Infra packages
m+"/pkg/fleethttp",
m+"/server/contexts/authz",
m+"/server/contexts/ctxerr",
m+"/server/contexts/license",
m+"/server/contexts/logging",
m+"/server/contexts/publicip",
).
Check()
}
// TestEndpointerPackageDependencies checks that endpointer package is not dependent on other Fleet domain packages
// to maintain decoupling and modularity.
func TestEndpointerPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/endpointer").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
// Platform packages
m+"/server/platform...",
// Infra packages
m+"/pkg/fleethttp",
m+"/server/contexts/authz",
m+"/server/contexts/ctxerr",
m+"/server/contexts/license",
m+"/server/contexts/logging",
m+"/server/contexts/publicip",
).
Check()
}
func TestHTTPPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/http").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
m+"/pkg/fleethttp",
m+"/server/platform/errors",
).
Check()
}
func TestAuthzCheckPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/middleware/authzcheck").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
// Platform packages
m+"/server/platform/errors",
m+"/server/platform/http",
// Other infra packages
m+"/pkg/fleethttp",
m+"/server/contexts/authz",
).
Check()
}
func TestRatelimitPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/middleware/ratelimit").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
// Platform packages
m+"/server/platform/errors",
m+"/server/platform/http",
// Other infra packages
m+"/server/contexts/authz",
m+"/server/contexts/ctxerr",
m+"/server/contexts/publicip",
).
Check()
}
// TestMysqlPackageDependencies checks that mysql package is not dependent on other Fleet domain packages
// to maintain decoupling and modularity.
func TestMysqlPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/mysql...").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m+"/...").
IgnoreDeps(
// Ignore our own packages
m+"/server/platform/mysql...",
// Other infra packages
m+"/server/platform/errors",
m+"/server/platform/logging",
m+"/server/contexts/ctxerr",
).
Check()
}
func TestLoggingPackageDependencies(t *testing.T) {
t.Parallel()
archtest.NewPackageTest(t, m+"/server/platform/logging...").
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
WithTests().
ShouldNotDependOn(m + "/...").
IgnoreDeps(
// Ignore our own packages
m + "/server/platform/logging...",
).
Check()
}