2025-12-31 15:12:00 +00:00
|
|
|
package platform_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"regexp"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/fleetdm/fleet/v4/server/archtest"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const m = archtest.ModuleName
|
|
|
|
|
|
2026-01-06 20:23:07 +00:00
|
|
|
// 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+"/server/contexts/authz",
|
|
|
|
|
m+"/server/contexts/ctxerr",
|
|
|
|
|
m+"/server/contexts/license",
|
|
|
|
|
m+"/server/contexts/logging",
|
|
|
|
|
m+"/server/contexts/publicip",
|
|
|
|
|
).
|
|
|
|
|
Check()
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-31 15:12:00 +00:00
|
|
|
// 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()
|
2026-01-06 20:23:07 +00:00
|
|
|
archtest.NewPackageTest(t, m+"/server/platform/endpointer").
|
2025-12-31 15:12:00 +00:00
|
|
|
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
|
|
|
|
|
WithTests().
|
|
|
|
|
ShouldNotDependOn(m+"/...").
|
|
|
|
|
IgnoreDeps(
|
|
|
|
|
// Platform packages
|
|
|
|
|
m+"/server/platform...",
|
|
|
|
|
// Other infra packages
|
|
|
|
|
m+"/server/contexts/authz",
|
|
|
|
|
m+"/server/contexts/ctxerr",
|
|
|
|
|
m+"/server/contexts/license",
|
|
|
|
|
m+"/server/contexts/logging",
|
|
|
|
|
m+"/server/contexts/publicip",
|
|
|
|
|
).
|
|
|
|
|
Check()
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-06 20:23:07 +00:00
|
|
|
func TestHTTPPackageDependencies(t *testing.T) {
|
2025-12-31 15:12:00 +00:00
|
|
|
t.Parallel()
|
2026-01-06 20:23:07 +00:00
|
|
|
archtest.NewPackageTest(t, m+"/server/platform/http").
|
2025-12-31 15:12:00 +00:00
|
|
|
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
|
|
|
|
|
WithTests().
|
|
|
|
|
ShouldNotDependOn(m + "/...").
|
|
|
|
|
Check()
|
|
|
|
|
}
|
2026-01-06 20:23:07 +00:00
|
|
|
|
|
|
|
|
func TestAuthzCheckPackageDependencies(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
archtest.NewPackageTest(t, m+"/server/platform/middleware/authzcheck").
|
|
|
|
|
OnlyInclude(regexp.MustCompile(`^github\.com/fleetdm/`)).
|
|
|
|
|
WithTests().
|
|
|
|
|
IgnoreDeps(
|
|
|
|
|
// Platform packages
|
|
|
|
|
m+"/server/platform/http",
|
|
|
|
|
// Other infra packages
|
|
|
|
|
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/http",
|
|
|
|
|
// Other infra packages
|
|
|
|
|
m+"/server/contexts/authz",
|
|
|
|
|
m+"/server/contexts/ctxerr",
|
|
|
|
|
m+"/server/contexts/publicip",
|
|
|
|
|
).
|
|
|
|
|
Check()
|
|
|
|
|
}
|
2026-01-08 19:17:19 +00:00
|
|
|
|
|
|
|
|
// 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/http",
|
|
|
|
|
m+"/server/contexts/ctxerr",
|
|
|
|
|
).
|
|
|
|
|
Check()
|
|
|
|
|
}
|