All Classes and Interfaces
Class
Description
A pluggable source of "this endpoint's contract is verified" evidence.
Gradle task that compares endpoints both declared in the configured OpenAPI documentation and
implemented by scanned
@RestController classes against verification evidence collected
from the enabled ContractVerificationSources, and writes an AsciiDoc report of every
endpoint with no such evidence - the "doppelganger APIs".DSL extension for the Doppelganger API Detector Gradle plugin.
Gradle plugin that registers the
detectDoppelgangerApis and
updateDoppelgangerApiDetectorDSL tasks and wires the doppelgangerApiDetector DSL
extension into the project.Determines which endpoints are both declared in the OpenAPI documentation and implemented by a
@RestController method, but have no matching verification evidence from any configured
ContractVerificationSource - i.e.Writes the AsciiDoc doppelganger API report: every endpoint that is declared in the OpenAPI
documentation and implemented by a
@RestController method, but has no verification
evidence from any enabled ContractVerificationSource.The
scanContracts result for a single endpoint: how many response codes its OpenAPI
operation declares, how many contract tests exist for it in total, and - only when
includeResponseCoverage is enabled - how many of those tests cover each declared
response code.ContractVerificationSource for the Atlassian OpenAPI request validator: a test method
whose call chain contains either .filter(new OpenApiValidationFilter(...)) (REST
Assured style) or a direct .validateRequest(...) / .validateResponse(...) call,
paired with a REST-Assured-style request built via given()...when()...get(...) calls in
the same method.Resolves the path portion of an OpenAPI root document's first
servers[].url entry, e.g.Computes, for every endpoint both declared in the OpenAPI documentation and implemented by a
@RestController method, how many contract tests exist for it and - only when requested -
how many of those tests cover each of its declared response codes.Reads and writes
ResponseCoverageRecords as newline-delimited JSON (NDJSON), one record
per line, sorted by ResponseCoverageRecord.fingerprint() so that git diffs of the
persisted file are minimal and stable - the same hand-rolled, dependency-free approach
api-detector-core's ContractHistoryStore uses for the cross-plugin contract
progress history.Produces the next
ResponseCoverageRecord map to persist, from the previously persisted
map and this run's EndpointResponseCoverage rows - the response-coverage counterpart of
api-detector-core's ContractHistoryUpdater.Persisted, per-endpoint-and-response-code history of contract test coverage, keyed by
<endpoint fingerprint>-<response code> (see ResponseCoverageHistoryUpdater).Writes the
== Response Coverage Over Time AsciiDoc table section for the
scanContracts report, from a loaded/advanced ResponseCoverageRecord history map.ContractVerificationSource for Spring RestDocs, recognising three independent call-chain
shapes for the same underlying convention - a request-builder call paired with a
document(...) call somewhere in the same method body:
spring-restdocs-mockmvc: mockMvc.perform(get(...)/post(...)/put(...)/
delete(...)/patch(...)) together with .andDo(document(...)).
spring-restdocs-webtestclient: webTestClient.get()/post()/put()/
delete()/patch().uri(...).exchange()...consumeWith(document(...)) - the HTTP verb comes
from the request-builder method and the path from the uri(...) call.
spring-restdocs-restassured: given(...).filter(document(...))...
when().get(...)/post(...)/put(...)/delete(...)/patch(...) - the verb call directly scoped
on a call named when.
Writes the AsciiDoc
scanContracts report: for every endpoint both declared in the
OpenAPI documentation and implemented by a @RestController method, its declared response
codes and contract test count, plus - when includeResponseCoverage was enabled - a
per-response-code test count breakdown.Gradle task that, for every endpoint both declared in the configured OpenAPI documentation and
implemented by a
@RestController method, reports how many response codes its operation
declares and how many contract tests exist for it - and, when
DoppelgangerApiDetectorExtension.getIncludeResponseCoverage() is enabled, how many of
those tests cover each declared response code.ContractVerificationSource for Spring Cloud Contract: declarative contract DSL files
under src/testContract/resources/contracts/**/*.groovy (and .yml), read
structurally for method '...' and url '...' / urlPath '...' entries.Best-effort detection of the HTTP status code a test method asserts, from the same
List<MethodCallExpr> a ContractVerificationSource
AST scanner already collects
for that method - not exhaustive, since a test can assert a response's status in ways this
cannot recognise (a variable, a helper method, a custom matcher); such tests still count towards
an endpoint's overall contract test count, they simply contribute no evidence to any specific
response code's count.Adds any
doppelgangerApiDetector DSL properties missing from this project's build file,
set to their default values - see com.arc_e_tect.gradle.dslupdater.DslUpdater and
DoppelgangerApiDetectorDslSchema.A single piece of contract verification evidence, together with the HTTP status code it was
detected to assert - the richer counterpart of a plain
Endpoint produced by
ContractVerificationSource.scanWithStatusCodes(java.io.File).