All Versions
25
Latest Version
Avg Release Cycle
74 days
Latest Release
103 days ago

Changelog History
Page 1

  • v5.14.0 Changes

    August 22, 2022

    โž• Added

    • โž• added support for json serialisation and de-serialisation java date time
    • ๐Ÿ‘Œ support for server urls in OpenAPI specification, by adding server url path as path prefix to operations
    • ๐Ÿ‘Œ improved documentation of clear functionality and type parameter and added examples
    • ๐ŸŒฒ local ip and port exposed to callbacks and log, useful when bound on multiple ports
    • ability to match on content-encoding header
    • โž• added support for custom HTTP methods (via assumeAllRequestsAreHttp)

    ๐Ÿ”„ Changed

    • ๐Ÿš€ used helm release name in K8s resources to avoid conflicts for multiple deployments in same namespace (without extra values being set)
    • ๐Ÿ”ง tlsMutualAuthenticationCertificateChain is used if configured, even if tlsMutualAuthenticationRequired is false, so clients can choose correct certificate for optional client auth

    ๐Ÿ›  Fixed

    • error matching header or parameters using array schema
    • โšก๏ธ updated Ingress apiVersion in helm chart to non deprecated value
    • โœ‚ removed the jdk14 slf4j bindings from the shaded and no-dependencies jars
    • ๐Ÿ›  fixed NullPointerException and added more context information for match failures
    • ๐Ÿ›  fixed NullPointerException during matcher logging
    • ๐Ÿ›  fixed override logic for query and path parameters
    • ๐Ÿ›  fixed verification of path parameters with multiple path parameter expectations
    • ๐Ÿ›  fixed matching for array parameters using OpenAPI or a schema based parameter matcher
    • resolved errors matching path by regex against expectations with path parameters
    • ๐Ÿ”Š resolved error with some deleted logs still appearing in the dashboard
    • ๐Ÿคก Content-Length is not added if a mock response set Transfer-Encoding
  • v5.13.2 Changes

    April 05, 2022

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed artefact name in no-dependencies pom which caused issue with gradle builds
    • โž• added support for yml in addition to yaml for yaml files
  • v5.13.1 Changes

    April 02, 2022

    โž• Added

    • simplified JSON format accepted for headers and other multi-value maps by allowing single values to be used as value list
    • โž• added warning message when content-length in expectation response is shorter than the body length
    • ๐Ÿ‘Œ improved log output for multimap failures, especially when using schema matcher (i.e. with OpenAPI) for parameters, headers, etc
    • โž• added support for endpoints examples in addition to existing schemas examples in an OpenAPI specifications

    ๐Ÿ”„ Changed

    • ๐Ÿ‘Œ improved error messages from main method
    • 0๏ธโƒฃ always serialise default fields for StringBody and JsonBody when retrieving recorded expectations for consistency even when the charset changes
    • ๐Ÿ‘ allow (and ignore) additional timestamp field for expectation JSON to support record request and responses to be submitted as JSON expectations
    • โฌ†๏ธ upgraded JVM version in docker (and helm) to 17
    • โฌ‡๏ธ reduced memory footprint from log and simplified calculation of maximum log size
    • ๐Ÿคก use JVM trust store in addition to MockServer CA for MockServerClient to allow control plane requests to go via proxies or load balancers that terminate TLS

    ๐Ÿ›  Fixed

    • ๐Ÿ‘ allow callback which is nested inside initializer class for maven plugin initializer
    • ๐Ÿ›  fixed HttpClassCallback static builder signature
    • ๐Ÿ‘Œ improved parsing of media type parameters to handle parameter values with equal symbol
    • ๐Ÿ›  fixed serialising certificate chain to dashboard UI
    • ๐Ÿ‘‰ used absolute URI form for requests to an HTTP proxy as per rfc2068 section 5.1.2
    • โœ‚ removed content-length and other hop by hop response headers for forward actions
    • ๐Ÿ›  fixed handling of headers and parameters specified without any values
    • ๐Ÿ›  fixed logLevel in MockServer instance Configuration, so it now sets the SystemProperty read by the logging configuration
    • ๐Ÿ›  fixed parallel execution of MockServerExtension to prevent port bind errors
    • ๐Ÿ›  fixed error parsing body parameters containing '/'
    • โœ‚ removed external references to schema specification to remove required network connectivity
    • ๐Ÿ›  fixed docker latest tag by worked around bug in sonatype not updating the LATEST metadata for snapshots
    • ๐Ÿ›  fixed partial deletion of expectations from watched file initialiser
    • resolved small memory leak during proxy authentication
    • โšก๏ธ updated verify by expectation id so it uses expectation match log events instead of the request matcher from the expectation
  • v5.13.0 Changes

    March 17, 2022

    โž• Added

    • โž• added support for configuring log level via properties file
    • ๐Ÿ‘ allow proactively initialisation of TLS so dynamic TLS CA key pair is created at start up
    • โž• added control plane authorisation using mTLS
    • โž• added control plane authorisation using JWT
    • โž• added support for control plane JWTs supplier to client
    • โž• added support for control plane JWT authorisation to specify required audience, matching claims and required claims
    • โž• added control plane authorisation using both JWT and mTLS
    • โž• added property to control maximum number of requests to return in verification failure, defaults to 10
    • โž• added field to verifications to control maximum number of requests to return in verification failure, defaults to configuration property - item above
    • โž• added remote address field to http requests that can be used by class or method callbacks
    • ๐Ÿ”ฆ exposed remote address (i.e. client address) to method and class callbacks, logs and dashboard
    • ๐Ÿ”ฆ exposed client certificate chain to method and class callbacks, logs and dashboard
    • โž• added simpler mustache style response templates (in addition to existing javascript and velocity support)
    • โž• added response template variables and functions for date, uuid, random, xPath and jsonPath for mustache
    • โž• added response template variables for date, uuid and random for velocity
    • โž• added response template variables for date, uuid and random for javascript
    • โž• added path parameters, remote address and client certificate chain to response template model
    • โž• added support for EMCAScript 6 in JavaScript response templates for Java versions between 9 and 15
    • โž• added support for numerous velocity tools for example for JSON and XML parsing to velocity response templates

    ๐Ÿ”„ Changed

    • 0๏ธโƒฃ included Bouncy Castle now used by default to resolve issues with modules in Java 16+ and backwards compatibility for Java 8
    • ๐Ÿ‘Œ improved configuration for dynamically creating CA so the directory is defaulted if not set and log output is clearer
    • ๐Ÿ‘Œ improved UI handling of match failures with a because section and more complex log events
    • ๐Ÿ‘Œ improved log configuration during startup when loading of properties file
    • ๐Ÿ‘ simplified support for multiline regex by allow . to match newlines
    • ๐Ÿ‘Œ improved regex matching by support Unicode (instead of US-ASCII) and native case-insensitive matching
    • ๐Ÿ‘Œ improved performance of negative matches by reducing the number of regex matches when not matching
    • disabled privilege escalation in helm chart
    • โž• added setting of command line flags (i.e. serverPort) via system properties and properties file in addition to environment variables
    • ๐Ÿ‘Œ improved log output for command line flags, environment variables and system properties
    • โœ‚ removed deprecated configuration properties for forward proxying
    • ๐Ÿ”„ changed docker distroless base image to distroless image for nonroot user
    • ๐Ÿ”„ changed docker distroless base image for snapshot to distroless image for debugging
    • ๐Ÿ”„ changed client to launch dashboard in HTTP (not HTTPS) to avoid issues with self-signed certificates
    • simplified the body field for response template model
    • ๐Ÿ‘Œ improved XML matching by ignoring element order
    • ๐Ÿ‘Œ improved security by change CORS defaults to more secure values that prevent cross-site requests by default

    ๐Ÿ›  Fixed

    • worked around JDK error 'flip()Ljava/nio/ByteBuffer; does not exist in class java.nio.ByteBuffer'
    • ๐Ÿ‘ป null pointer exception when serialising string bodies with non string content types (i.e. image/png)
    • disabled native TLS for netty to improve TLS resilience
    • ๐Ÿ›  fixed handling of circular references in OpenAPI specifications to be as gracefully as possible
  • v5.12.0 Changes

    February 12, 2022

    โž• Added

    • ๐Ÿคก index.yaml to www.mock-server.com so it can be used as a helm chart repository
    • ๐Ÿš€ command line flags can now be set as environment variables simplifying some container deployment scenarios
    • ๐Ÿ‘ glob support for initialisation files to allow multiple files to be specified
    • โšก๏ธ request and response modifiers to dynamically update path, query parameters, headers, and cookies
    • custom factory for key and certificates to provide more flexibility
    • ๐Ÿ‘Œ support for Open API expectations in json initialisation file
    • ๐Ÿ‘Œ improved @MockServerTest to support inheritance
    • ๐Ÿ“œ more flexibility over semicolon parsing for query parameters
    • ๐Ÿคก shaded jar for mockserver-netty and mockserver-client-java to reduce impact of dependency version mismatches with projects including these dependencies

    ๐Ÿ”„ Changed

    • ensured that TCP connections are closed immediately when shutting down to improved time before operating system frees the port
    • โฌ‡๏ธ reduce noise from Netty INFO logs that were not correct or misleading
    • retrieveRecordedRequests now returns HttpRequest[]
    • made it easier to set priority and id both in Java and Node clients in multiple places
    • ๐Ÿ”„ changed default charset for JSON and XML to UTF-8 from ISO 8859-1
    • error handling for Open API so only single operation is skipped on failure not the entire file
    • โฌ‡๏ธ reduced over resolution of OpenAPI that triggered bugs in Swagger Parser V3 library
    • โ†ช replaces JDK FileWatcher with custom solution for watch file changes to work around multiple JDK bugs
    • ๐Ÿ‘Œ improved helm chart by supporting more configuration options
    • โœ‚ remove explicit calls to System.gc()

    ๐Ÿ›  Fixed

    • resolved multiple issues with clearing by expectation id
    • resolved multiple issues with verifying by expectation id
    • ๐Ÿ’ป resolved multiple NullPointerExceptions in backend for UI
    • ensure exact query parameter string is proxied allowing for empty values, leading ! or or other special scenarios
    • ๐Ÿ‘Œ improved expectation updates from FileWatcher so only expecation from matching source are updated resolving multiple bugs
    • ensured socket protocol of HTTPS is honoured resulting in forwarded requests using TLS
    • ๐Ÿ›  fixed logging of exceptions such as port already bound at startup
    • ๐Ÿ›  fixed retrieval of active exceptions where expectations were no longer active but not yet removed from expectations list
    • no longer treat ndjson as json
    • ๐Ÿ’ป accessing UI via a reverse proxy or load balancer
  • v5.11.2 Changes

    October 08, 2020

    โž• Added

    • clearing by expectation id
    • ๐Ÿ‘Œ verifying by expectation id

    ๐Ÿ”„ Changed

    • ๐Ÿ‘Œ improved reliability and performance around stopping especially when stop is called multiple times for the same instance
    • ๐Ÿ‘Œ improved grouping of logs and stopped TRACE level logs from being grouped which caused inconsistency in the UI

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed recursive loop on stopAsync for ClientAndServer
    • header matching for subsets to ensure notted header keys don't exist
  • v5.11.1 Changes

    July 22, 2020

    โž• Added

    • ๐Ÿ–จ port is now printed at start of each log line
    • ๐ŸŒฒ shutdown log message specifying port
    • โšก๏ธ UI updated prior to stopping MockServer to ensure all pending log messages are sent over UI web socket
    • โž• added listener for expectation modifications that can be used with ExpectationInitializer for custom expectation persistence

    ๐Ÿ”„ Changed

    • ๐ŸŽ performance improvements of expectation sorting and comparisons
    • โฌ‡๏ธ reduced creation of objects at WARN log level
    • ensured all threads are daemon threads (except port binding thread)
    • ๐ŸŽ simplified and improve performance of matching for headers, query string parameters, path parameters, cookies and body parameters
    • ๐Ÿ’ป only mark log events as deleted for log level of TRACE, DEBUG, or INFO so log can be view in UI
    • ๐Ÿ‘Œ improved performance of handling large OpenAPI specifications
    • ๐Ÿ‘Œ improved error message format for errors when loading OpenAPI specifications
    • ๐Ÿ”„ changed name of optionalString static factory method to optional to improve consistency with not

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed field name error when serializing ParameterBody
    • ๐ŸŒฒ error when log level DEBUG cleared log events were returned from the API
  • v5.11.0 Changes

    July 08, 2020

    โž• Added

    • โž• added basic support to proxy binary requests that are not HTTP
    • ๐ŸŒฒ dynamic maximum log events and maximum expectations based on available memory
    • โž• added ability to switch between BouncyCastle and vanillar JDK for key and certificate generation
    • โž• added support for TLS over SOCKS4 or SOCKS5
    • request matching and expectations using OpenAPI or Swagger specification
    • create expectation using OpenAPI or Swagger specification with automatic example responses
    • verifications of requests or request sequences using OpenAPI or Swagger specification
    • ๐Ÿ”Š clear log, clear expectations, retrieve logs and retrieve requests using OpenAPI or Swagger specification
    • json schema matchers for method, path, headers, query string parameters and cookies
    • path variables matched by nottable string, regex or json schema (as per query string parameters)
    • ๐Ÿ‘Œ support for optional query parameters, header and cookies
    • ๐Ÿ‘Œ support for nullable keyword in JSON Schemas (part of Open API specification not JSON Schema specification)
    • matching xml bodies against JSON Schema matchers
    • matching parameter bodies against JSON Schema matchers
    • ๐Ÿ‘Œ support to match path parameters, query parameters and header either by sub set or by matching key
    • ๐Ÿ’ป grouping of log events in UI to simplify analysis of expectation matches / non matches for a request
    • โž• added extra log messages to indicate progress for large json expectation initializers
    • โž• added log messages for invalid control plane request to make control plane errors clearer in the UI
    • โž• added support for easily mapping jar and config into the docker container
    • โž• added support for easily mapping jar and config into the helm chart

    ๐Ÿ”„ Changed

    • โฌ‡๏ธ reduced time range of CA certificates to increase likelihood they will be accepted by strict systems (i.e. VMWare vCenter Server)
    • ๐Ÿ‘Œ improved error message when exception loading or reading certificates or keys (i.e. file not found)
    • โšก๏ธ certificate and private key are saved to directoryToSaveDynamicSSLCertificate when preventCertificateDynamicUpdate is enabled
    • โšก๏ธ returns created expectations from /mockserver/expectation so that it is possible to view the id for new (or updated) expectations
    • โž• added ability to inherit @MockServerSettings for Junit5 tests
    • ๐Ÿ”’ switched to distroless container base for security and size
    • โž• added explicit gc suggestion after reset and clear
    • โฌ†๏ธ upgraded docker container to Java 11 to ensure JVM honours container memory constraints (i.e. inside kubernetes)
    • ๐Ÿ‘Œ improved parsing of invalid content-type header parameters by handling error gracefully and outputting a clear error message
    • ๐Ÿ‘Œ improved performance through multiple minor tweaks around handling of expectations
    • โž• added version to log output to improve resolution of github issues with logs attached
    • ๐Ÿ‘Œ improved logic around proxies to make HTTP CONNECT, SOCKS4 and SOCKS5 more reliable and faster
    • โฌ‡๏ธ reduced object creation (and therefore GCs) for log especially during request matching
    • ๐Ÿ”Š print logs timestamp with milliseconds
    • โฌ‡๏ธ reduced expiry of certification to one year to avoid errors from modern systems that don't like long lived certificates (such as Chrome or VMWare)
    • 0๏ธโƒฃ defaulted charset for XML and JSON to UTF8 as per rfc3470 and rfc8259
    • ๐Ÿ”– version matching logic for client now only matches on major and minor version and not bug fix version
    • ๐Ÿ‘Œ improved handling of body matching for control plane to clearly separate control plane and data plan matching
    • ๐Ÿ’ป simplified and improved stability for UI by moving all data processing into back-end and other simplifications

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed but with environment variable configuration for long, integer and integer list values
    • โœ‚ removed call to ReflectionToStringBuilder.setDefaultStyle to avoid impacting toString globally for JVM
    • ๐Ÿ›  fixed destination port and ip in Socks5CommandResponse which prevented SOCKS5 proxied connections
    • ๐Ÿ›  fixed Subject Alternative Names with wildcards or other valid DNS name formats not supported by certain versions of the JDK (<= 1.8)
    • ๐Ÿ›  fixed json body responses by returning blank or null fields, objects and arrays
    • ๐Ÿ›  fixed generics for withCallbackClass to allow ExpectationResponseCallback to be specified as a Class (not only a string)
  • v5.10.0 Changes

    March 24, 2020

    โž• Added

    • ๐ŸŒ closure / object callbacks uses local method invocation (instead of Web Socket) when both the client in same JVM (i.e. ClientAndServer, JUnit Rule, etc)
    • ๐Ÿ‘Œ support to specify a fixed TLS X509 Certificate and Private Key for inbound TLS connections (HTTPS or SOCKS)
    • ability to prioritise expectations such that the matching happens according to the specified priority (highest first) then creation order
    • โšก๏ธ ability to create or update (if id matches) expectations from the client using upsert method
    • ability to return chunked responses where each chunk is a specific size by using response connection options
    • ๐Ÿ‘Œ support for XmlUnit placeholders https://github.com/xmlunit/user-guide/wiki/Placeholders
    • โž• added ability to control (via configuration) whether matches fail fast or show all mismatching fields
    • ๐Ÿ”ง configuration to disable automatically attempted proxying of request that don't match an expectation and look like they should be proxied

    ๐Ÿ”„ Changed

    • ๐Ÿ‘Œ improved X509 certificates by adding Subject Key Identifier and Authority Key Identifier
    • stopped delay being applied twice on response actions (#721)
    • ๐Ÿ‘Œ improve support for clients making initial SOCKS or HTTP CONNECT requests over TLS
    • ๐Ÿšš replaced JSONAssert with JsonUnit to improve JSON matching and remove problematic transitive dependencies
    • โž• added more detail of cause of match failure

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed null point for expectation initialiser with file watcher in working directory specified with relative path
    • ๐Ÿ›  fixed error resulting in enum not found exception for log events
    • ๐Ÿ›  fixed error with parsing of json arrays for expectation responses with json body as json object not escaped string
    • ๐Ÿ›  fixed meaning of disableSystemOut property so that only system out is disabled not all logging
    • ๐Ÿ›  fixed key store type in key store factory to avoid issue with the JVM changing the defaults
  • v5.9.0 Changes

    February 01, 2020

    โž• Added

    • โž• added stopAsync method to ClientAndServer to allow stop without waiting
    • ๐Ÿšš log events for UPDATED_EXPECTATION and REMOVED_EXPECTATION
    • โšก๏ธ ability to update existing expectation by id
    • hot re-loading of expectation initialiser file
    • โž• addition configuration for web socket client event loop size
    • โž• addition configuration for action handler thread pool size
    • ๐Ÿ”ฆ exposed request raw bytes to object callbacks (allows forwarded requests body parsing that is inconsistent with Content-Type header)
    • โž• added support to delay socket closure using connection options
    • โž• added support to control trusted certificate authorities (trust store) for proxied & forwarded requests
    • โž• added support for two-way TLS (mTLS), also called client authentication
    • ๐Ÿ‘ now sends TLS X509 certificate from proxy (i.e. support forward client authentication / mTLS)
    • โž• added ability to dynamically create local unique Certificate Authority (CA) X.509 and Private Key to improve securiy of clients trusting the CA

    ๐Ÿ”„ Changed

    • ๐ŸŽ performance improvements for header and cookie handling
    • ๐Ÿ‘Œ improved JSON validation errors by adding link to OpenAPI Specification
    • โœ‚ removed duplicate packages between modules to prepare for java modules
    • ๐Ÿ”ง caught Jackson configuration exception to improve resilience with other Jackson versions in classpath
    • ๐Ÿ— moved Junit4 to separate module to reduce size of jar-with-dependencies, simplify code and increase build speed
    • enabled case insensitive matching for regex matches
    • ๐Ÿ‘Œ improved documentation (i.e. on website)
    • switched from Bouncy Castle to JDK for certificate and private key generation

    ๐Ÿ›  Fixed

    • ๐Ÿ›  fixed error where ClientAndServer does fully wait for client to stop
    • ๐Ÿ›  fixed ability to specific a log level of OFF
    • ๐Ÿ›  fixed bug with keystore type configuration not being used in all places
    • โž• added file locking and jvm locking for expectation persistence file to avoid file corruption
    • ๐Ÿ›  fixed verification incorrectly matching verifier non-empty bodies against empty request bodies
    • stopped response callbacks for proxied requests blocking threads
    • ๐Ÿ›  fixed bug that caused JSON bodies in specified expectations as raw JSON to ignore empty arrays and empty strings

    ๐Ÿ”’ Security

    • โšก๏ธ updated tomcat (used in integration tests) to version without vulnerabilities