Monday, 2 November 2026

Traffic Parrot 5.65.0 released, what's new?

Traffic Parrot 5.65.0 is out. Here are the five things worth knowing about it, and the full release notes carry the rest.

trafficparrot validate compares your mappings with real traffic

A mock drifts from the service it stands in for, and nothing tells you until a test passes against the mock and fails against the real thing. Give trafficparrot validate a HAR file, or a directory of them, with -Dtrafficparrot.validate.traffic=<path>: a browser's network export, a proxy or gateway capture, or Traffic Parrot's own HAR export after proxying to the real service. For each captured exchange it finds the mapping that would have served the request, works out what that mapping would have answered and compares it with what the real service answered: status, content type and body, by structure by default or by value if you ask. The report names the mappings that drift, the captured requests no mapping matches and the mappings no capture reached, and prints no header values, query strings or bodies. The findings warn by default; one more option makes drift fail the build. See Checking mappings against captured traffic.

Traffic Parrot can be the SFTP server

A file gateway flow used to need an SFTP server of its own beside Traffic Parrot. Switch on the embedded one with trafficparrot.file.sftp.server.enabled=true and it is the server your system under test uploads request files to and downloads replies from. Its users come from sftp-server-users.json, each with a password or an OpenSSH authorized_keys file and each confined to a home directory of its own, and one Local File System connection on the server root lets a single replay session serve every user. It speaks SFTP only: no shell, no SCP, no port forwarding. Needs a licence that includes file messaging. See Traffic Parrot as the SFTP server.

Mountebank imposters import as HTTP mappings

Moving from Mountebank no longer means rewriting your stubs. Upload the file mb save writes, or one imposter's JSON, on the HTTP Import page or through the import API: each stub of an http or https imposter becomes mappings in the imposter's order, predicates become request matchers with Mountebank's case-insensitive comparison kept where a matcher has the switch, a stub with several responses becomes a scenario that cycles through them, wait becomes a fixed delay, a proxy response a proxy mapping and defaultResponse a catch-all. A stub using something with no mapping equivalent, such as inject, is skipped with a warning naming it, and the rest of the file imports. See Traffic Parrot for Mountebank users.

Binary files pass through file recording and replay unchanged

A PGP, zip or EBCDIC file is forwarded while recording, saved with the mapping and written on replay byte for byte, on Local File System, SFTP and FTP connections. Recording a request file that is not text makes a mapping that matches it by name and by its exact bytes, so two binary files of one name are each answered by their own mapping. The Files and native IBM MQ mapping editors offer the same binaryEqualTo matcher, a reply can be any file under __files with a bodyType of BYTES, and the editor shows a binary reply as base64 and saves it back byte for byte. See Binary files.

A stub can require a token from the mock OAuth2/OIDC provider

The mock OAuth2/OIDC provider issues tokens; now a stub can insist on one. The matchesValidBearerToken request matcher matches only a request whose Authorization header carries an unexpired RS256 JWT signed by a key the named mock publishes in its JWKS, read from the mock's mappings in the same scenario on every request. A request without such a token falls through to the next mapping, so a catch-all on the same URL at a lower priority answers the 401, and a system under test that forgets the token, sends an expired one or presents a token from another provider is refused as the real API would refuse it. In the HTTP mapping editor the guard is the Require OAuth2 bearer token from mock field under the request matching script. See Requiring a token from the mock on a stub.

Also in this release

  • The Files replay page takes a script of consume and reply pairs, so one replay session covers several connections.
  • An HTTP extension that could not be loaded is listed above the mappings, with the reason, rather than only logged.
  • CICS bridge conversations can be recorded as mappings that replay byte for byte until a decoded field is edited.
  • The virtual service HTTPS listener can be limited to chosen TLS versions and cipher suites.
  • A mapping added through the WireMock admin API is held in memory unless marked persistent, as in WireMock, and the mappings list marks it Not saved with a button that writes it to a file.
  • trafficparrot validate checks every HTTP, JMS, IBM MQ and file message mapping file against its schema.
  • The SDK's JMS classes move to the messaging package; the old names keep working and are deprecated.

The release notes list every feature, change and fix in 5.65.0. To try it, start a trial.

No comments:

Post a Comment