Skip to content

Releases: dever-labs/mockly

v0.13.1

Choose a tag to compare

@czprz czprz released this 13 Jul 21:26
97ca3b6

0.13.1 (2026-07-13)

Bug Fixes

  • add missing XML doc comments to MocklyContainer public API (#128) (37d9dfb)
  • update .NET SDK version and clean up init script (#130) (2cd9124)

v0.13.0

Choose a tag to compare

@czprz czprz released this 08 Jul 22:21
14c01c5

0.13.0 (2026-07-08)

Features

  • full API parity for all testcontainers clients (#112) (65dec0d)

Bug Fixes

  • ci: add missing release-please manifest at v0.12.4 (6008d70)
  • ci: pin release-please-action to SHA for sha_pinning_required policy (3486218)
  • ci: use PAT token for release-please PR creation (ebe57c3)
  • devcontainer: add git configuration path to container environment (fcb09b6)
  • install mockly-driver locally before building java testcontainers in CI (#115) (f9f4864)
  • patch security vulnerabilities in go/testcontainers and java/testcontainers (#127) (eba8dcb)
  • subscribe before fast-path check in WaitFor to avoid race (#126) (f944ef6)
  • update .NET SDK version to 10 and bump Go module dependencies (2a2511e)

v0.12.4

Choose a tag to compare

@czprz czprz released this 30 Jun 23:21

Bug Fix

  • mockly-testcontainers (Rust): FaultConfig.status_override reference missed in v0.12.3 rename — now correctly uses status.

v0.12.3

Choose a tag to compare

@czprz czprz released this 30 Jun 23:16

Bug Fixes

  • FaultConfig.status_override renamed to status across all 6 drivers (Go, Node, Python, Rust, .NET, Java). POST /api/fault/http deserializes into HTTPFault which uses statusstatus_override belongs to the per-mock MockFault struct and was silently ignored by the server.

CI

  • Removed deprecated -Dgpg.passphrase CLI argument from Maven deploy commands; maven-gpg-plugin 3.x reads MAVEN_GPG_PASSPHRASE env var automatically, avoiding potential passphrase leakage in process listings.

v0.12.2

Choose a tag to compare

@czprz czprz released this 30 Jun 22:54

Bug Fixes

  • Java Maven Central publish: Bumped central-publishing-maven-plugin from 0.7.0 to 0.11.0. The 0.7.0 version crashes with UnrecognizedPropertyException: warnings because Maven Central's API added a warnings field that the old plugin cannot deserialise.

v0.12.1

Choose a tag to compare

@czprz czprz released this 30 Jun 22:45

Bug Fixes

  • setFault wrong endpoint: All drivers were calling POST /api/fault (which does not exist); corrected to POST /api/fault/http (Go, Node, Python, Rust, .NET C#, Java, node-testcontainers)
  • clearFault wrong status: Python, Rust, and Java expected HTTP 200 from DELETE /api/fault; server returns 204 No Content
  • Java CI mvn verify failing: GPG signing plugin was bound to the verify phase unconditionally, causing every test run to fail without a GPG key — moved into a release Maven profile, activated with -Prelease only during deploy

Documentation

  • Updated all 6 client READMEs to show correct POST /api/fault/http endpoint for setFault
  • Added [Unreleased] → now [v0.12.1] changelog entries documenting the fault fixes
  • Full client API reference docs updated for all 19 new methods added in v0.12.0

v0.12.0

Choose a tag to compare

@czprz czprz released this 30 Jun 22:17

What's Changed

Features

  • Full API parity across all 6 client drivers (Go, Node/TypeScript, Python, Rust, .NET C#, Java)
    • Added getCalls, clearCalls, clearAllCalls, waitForCalls to all drivers
    • Added listMocks, updateMock, patchMock (mock management)
    • Added getState, setState, deleteState (state API)
    • Added getLogs, clearLogs, getLogsCount (logs API)
    • Added full scenario CRUD: listScenarios, createScenario, getScenario, updateScenario, deleteScenario, listActiveScenarios
    • New types: CallEntry, CallSummary, MockResponsePatch, ActiveScenariosResponse

Bug Fixes

  • Fixed deleteMock across Go, Java, Python, Rust (server returns 200, not 204)
  • Fixed Java matchingBracket failing on escaped backslashes in JSON strings
  • Fixed Python waitForCalls 408 timeout handling to avoid silent failures
  • Fixed Python getCalls/clearCalls/waitForCalls missing URL encoding on mock ID
  • Fixed sub-second timeout precision in Java and .NET (now uses milliseconds)

Tests

  • Added comprehensive unit tests for all 19 new API methods across all 6 drivers

DevContainer

  • Fixed .NET 9 SDK availability in all shell contexts (non-interactive, VS Code tasks)
  • Removed broken dotnet:2 devcontainer feature; SDK now reliably on PATH via /etc/profile.d/dotnet.sh
  • Added ms-dotnettools.csdevkit VS Code extension

CI/CD

  • Fixed cargo publish with --allow-dirty (version bump modifies Cargo.toml without committing)
  • Fixed npm sigstore provenance by adding repository URL to node-testcontainers/package.json

v0.11.0

Choose a tag to compare

@czprz czprz released this 30 Jun 21:23

What's new in v0.11.0

✨ New features

HTTP Authentication Mocking

Add a typed auth: block to any HTTP mock to require valid credentials as a matching criterion. Supports five schemes:

Scheme Description
bearer Match Authorization: Bearer <token> — exact, re:… regex, or * (any)
basic Decode Basic credentials and compare username + password
api_key Match a named request header or query parameter value
ntlm Full 3-step NTLM challenge/response handshake (Windows-integrated auth)
digest Require an Authorization: Digest … header

Auth is entirely optional — omitting it leaves existing behaviour unchanged. When auth fails the mock is skipped; add a fallback mock without auth to return your preferred 401 response.

Also ships with a new ntlm preset (mockly preset use ntlm).

Header pattern matching

Header values in request.headers now support re:… regex and * wildcard patterns. Header key lookup is case-insensitive per the HTTP spec.

Testcontainers modules

First-class Testcontainers modules for all six language clients (Go, Python, .NET, Java, Node.js, Rust).

🐛 Bug fixes

  • Security: Prevent reflected XSS in truncated HTTP response fallback path
  • Security: Resolve vulnerabilities in transitive dependencies
  • SNMP: Fix data race in ServeForever goroutine on shutdown

🔧 Dependency updates

  • Bump actions/setup-go 6.4.0 → 6.5.0
  • Bump actions/setup-dotnet, setup-java, setup-python
  • Bump UI dependencies (tailwindcss, @tailwindcss/vite, @tanstack/react-query, eslint, @types/node)
  • Bump various Go modules

v0.10.0

Choose a tag to compare

@czprz czprz released this 22 Jun 00:12

What's Changed

🚀 Features

Path matching

  • Named path parameters{name} syntax captures a single path segment: path: /users/{id}, path: /regions/{region}/emails
  • Mid-segment wildcards* now matches one segment anywhere in a path, not just as a trailing prefix: /regions/*/emails
  • path_regex field — dedicated regex field on HTTP and CoAP mocks as an alternative to the re: inline prefix

Response templating

  • New {{.request.*}} namespace available in all response body and header templates
    • {{.request.params.id}} — named path parameter captured by {id}
    • {{.request.body.field}} — JSON field from the incoming request body
    • {{.request.method}}, {{.request.path}}, {{.request.query.foo}}, {{.request.headers.X-Foo}}

Cross-protocol improvements

  • MQTT{name} topic segment captures (e.g. devices/{device_id}/cmd) available in response payload templates and log entries
  • CoAP — named path params, path_regex field, and response payload templating
  • SIPuri_regex field and response body templating
  • WebSocketon_connect.send and on_message.respond now rendered as Go templates ({{.request.path}}, {{.request.body}})

Logs API

  • GET /api/logs?matched_id=<id> — filter log entries by mock ID
  • GET /api/logs/count — count all log entries
  • GET /api/logs/count?matched_id=<id> — per-mock hit count without fetching full log bodies

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@czprz czprz released this 09 Jun 22:01

What's Changed

🚀 Features

  • HTTP fault injection: Added headers field to inject custom response headers (e.g. Retry-After, WWW-Authenticate) via direct faults and per-mock faults
  • HTTP fault injection: Added abort field — hijacks the TCP connection and sends a RST reset, simulating a crashed server before any response
  • HTTP fault injection: Added truncate_body field — writes headers with an inflated Content-Length then closes mid-transfer, simulating a partial response
  • HTTP fault injection: Support for any HTTP status code in faults (3xx, 4xx, 5xx) — 3xx redirects no longer incorrectly inject an error body
  • Fault API: GET /api/fault/{protocol}/effective — new endpoint returning the merged effective fault (direct injection + active scenario overrides)
  • Fault API: POST /api/fault/{protocol} now echoes back the stored fault in the response body (was {"status":"ok"})
  • Fault API: GET /api/fault/{protocol} and DELETE /api/fault/{protocol} now return 404 for unknown protocol names

🐛 Bug Fixes

  • Fixed: delay-only HTTP faults (delay set, no status/body) were incorrectly overriding the response with a 503
  • Fixed: mutating API endpoints (POST, PUT, DELETE, PATCH) for HTTP, WebSocket, gRPC, GraphQL, TCP, Redis, SMTP, and MQTT would panic with a nil pointer dereference when the protocol was not configured — now return 503
  • Fixed: all DELETE /api/mocks/{protocol}/{id} endpoints returned 200 even when the ID did not exist — now return 404
  • Fixed: PUT /api/scenarios/{id} silently upserted instead of returning 404 for unknown IDs
  • Fixed: DELETE /api/scenarios/{id}/activate (deactivate) always returned 200 even for non-existent scenario IDs — now returns 404
  • Fixed: POST /api/reset did not restore SNMP traps to their initial config values
  • Fixed: CORS allowed methods list was missing PATCH
  • Fixed: FTP root-level file listing bug — files at the root path were never listed

🔧 Dependency Updates

  • Bump github.com/go-chi/chi/v5 from 5.2.5 to 5.3.0
  • Bump @tailwindcss/vite, tailwindcss, vite, react-dom, @tanstack/react-query, typescript-eslint, eslint (UI)
  • Bump serde_json, reqwest (Rust client)
  • Bump actions/checkout, actions/setup-dotnet (CI)

Full Changelog: v0.8.1...v0.9.0