test(backend): add ArchUnit domain boundary enforcement (Rules 1–4) #428

Merged
marcel merged 3 commits from feat/issue-409-archunit into main 2026-05-05 18:08:40 +02:00
Showing only changes of commit 0dd58556a7 - Show all commits

View File

@@ -118,11 +118,15 @@ class ArchitectureTest {
// Tracked in: http://heim-nas:3005/marcel/familienarchiv/issues/427
private static DescribedPredicate<JavaClass> foreignJpaRepositoryFor(String ownDomain) {
// Exact-segment match: prevents a domain name that is a substring of another
// (e.g. "tag" inside "tagging") from silently escaping the predicate.
// The pattern matches the domain as a complete path segment, with an optional sub-package.
String ownPackagePattern = ".*\\.familienarchiv\\." + ownDomain + "(\\..+)?$";
return new DescribedPredicate<JavaClass>("be a JPA repository from a domain other than " + ownDomain) {
@Override
public boolean test(JavaClass clazz) {
return clazz.isAssignableTo(JpaRepository.class)
&& !clazz.getPackageName().contains("." + ownDomain);
&& !clazz.getPackageName().matches(ownPackagePattern);
}
};
}