59b785b8ed
- pom.xml: introduce risk-tiered JaCoCo rules in parent POM
- bundle: 80% line coverage
- bankimport/finance packages: 90% (highest precision)
- api.security: 85%
- scheduler/notification: 70%
- exclude entity/enums/dto/config from coverage measurement
- add Surefire 3.5.2 plugin management
- cannamanage-service/pom.xml: remove obsolete module-local ComplianceService=100% rule
(subsumed by parent package rules), add explicit jackson-databind dep so
ByteBuddy can mock AuditService.METADATA_MAPPER
- Add AbstractServiceTest base class for service-layer tests
- Add FinanceServiceTest
- Add bankimport test suite:
- Mt940ParserTest with malformed input fixtures
(encoding, overflow, truncated, generic)
- PaymentMatchingServiceTest with ParsedTransactionBuilder helper
- CAMT.053 / Sparkasse MT940 sample fixtures
- XXE attack fixtures (billion-laughs, SSRF, generic)
- docs/sprint-11/: analysis, plan, plan-review, testplan
116 lines
4.6 KiB
XML
116 lines
4.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<parent>
|
|
<groupId>de.cannamanage</groupId>
|
|
<artifactId>cannamanage-parent</artifactId>
|
|
<version>1.0.0-SNAPSHOT</version>
|
|
<relativePath>../pom.xml</relativePath>
|
|
</parent>
|
|
|
|
<artifactId>cannamanage-service</artifactId>
|
|
<name>CannaManage — Service (Business Logic)</name>
|
|
|
|
<dependencies>
|
|
<!-- Internal domain -->
|
|
<dependency>
|
|
<groupId>de.cannamanage</groupId>
|
|
<artifactId>cannamanage-domain</artifactId>
|
|
</dependency>
|
|
<!-- Spring Data JPA for repository interfaces -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
|
</dependency>
|
|
<!-- Spring TX annotations -->
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-tx</artifactId>
|
|
</dependency>
|
|
<!-- Lombok -->
|
|
<dependency>
|
|
<groupId>org.projectlombok</groupId>
|
|
<artifactId>lombok</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<!-- Test dependencies -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.assertj</groupId>
|
|
<artifactId>assertj-core</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!-- Caffeine caching for token revocation -->
|
|
<dependency>
|
|
<groupId>com.github.ben-manes.caffeine</groupId>
|
|
<artifactId>caffeine</artifactId>
|
|
</dependency>
|
|
<!-- Spring Context for @Scheduled -->
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-context</artifactId>
|
|
</dependency>
|
|
<!-- Spring Web for ResponseStatusException -->
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-web</artifactId>
|
|
</dependency>
|
|
<!-- Spring WebSocket — SimpMessagingTemplate for NotificationService -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
|
</dependency>
|
|
<!-- Spring Mail (invite flow) -->
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-mail</artifactId>
|
|
</dependency>
|
|
<!-- OpenPDF for PDF report generation -->
|
|
<dependency>
|
|
<groupId>com.github.librepdf</groupId>
|
|
<artifactId>openpdf</artifactId>
|
|
<version>2.0.4</version>
|
|
</dependency>
|
|
<!-- Apache Commons CSV for CSV report generation -->
|
|
<dependency>
|
|
<groupId>org.apache.commons</groupId>
|
|
<artifactId>commons-csv</artifactId>
|
|
<version>1.12.0</version>
|
|
</dependency>
|
|
<!-- Stripe Java SDK -->
|
|
<dependency>
|
|
<groupId>com.stripe</groupId>
|
|
<artifactId>stripe-java</artifactId>
|
|
<version>28.2.0</version>
|
|
</dependency>
|
|
<!--
|
|
Jackson — explicit dependency required so ByteBuddy (Mockito's bytecode
|
|
instrumentation engine) can resolve the ObjectMapper type when mocking
|
|
AuditService, which holds a `private static final ObjectMapper
|
|
METADATA_MAPPER` field. Without this explicit declaration, Jackson is
|
|
only on the test classpath transitively via spring-boot-starter-test,
|
|
and ByteBuddy's classloader walking fails with
|
|
`ClassNotFoundException: ObjectMapper` during inline mock generation.
|
|
-->
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-databind</artifactId>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<!--
|
|
Sprint 11: JaCoCo + Surefire are now configured centrally in the parent POM
|
|
with risk-tiered per-package rules (bankimport/finance ≥ 90%, security ≥ 85%,
|
|
business ≥ 75%, infra ≥ 70%, bundle ≥ 80%). The previous module-local
|
|
ComplianceService = 100% rule was unsustainable for a growing class and is
|
|
now subsumed by the package-level rules driven from the parent POM.
|
|
-->
|
|
</project>
|