Skip to content

Latest commit

 

History

History
217 lines (170 loc) · 10.2 KB

changelog.md

File metadata and controls

217 lines (170 loc) · 10.2 KB

Changelog

All notable and significant changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

Changed

Fixed

[5.10.0] - 2020-03-24

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

[5.9.0] - 2020-02-01

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

[5.8.1] - 2019-12-23

Added

  • changelog
  • added configuration for all CORS headers
  • added support for forward proxy authentication (via configuration)
  • added support for overriding forward responses by class or closure
  • requests sent to MockServerClient can be updated / enhanced i.e. to support proxies
  • dynamic creation of a unique (i.e. local) Certificate Authority X509 Certificate and Private Key instead of using the fixed Certificate Authority X509 Certificate and Private Key in the git repo.
  • configuration to require mTLS (also called client authentication or two-way TLS) for all TLS connections / HTTPS requests to MockServer
  • configuration of trust store and client X.509 used during forwarded and proxied requests to endpoints requiring mTLS
  • extended TLS documentation significantly

Changed

  • reduced default number of fail handles used by nio event loop
  • improved performance and scalability of logging ring buffer
  • improved performance of json serialisation
  • deprecated isRunning and replaced with hasStopped and hasStarted to make behaviour more explicit and faster
  • improved, simplified and unified handling of Content-Type for bodies
  • remove closure callback clients and connections for expectation that no longer exist
  • ensure WebSockets for closure callback auto re-connect for unreliable networks
  • simplified XML and JSON of bodies in the log and UI
  • improved logging for CORS
  • added support for TLS with closure / WebSocket callbacks
  • simplified handling of TLS and HTTP CONNECT (which is always TLS)
  • improved JSON format for expectation to support objects instead of escaped strings

Fixed

  • fixed reading logLevel from system property or environment variable
  • ensure all errors are printed to console
  • removed TLSv1.3 to avoid any issues with JVM version that do not support TLSv1.3
  • handle proxying requests without Content-Length header
  • added support for JSON array for raw JSON in requests or responses body

Security

  • updated jetty (used in code examples) to version without vulnerabilities

[5.8.0] - 2019-12-01

Added

  • added support for configuration via environment variables
  • added support for overriding responses which an forward overridden request
  • added persistence of expectations to file (as json)

Changed

  • ensured all Netty threads are marked as daemon to ensure MockServer does not prevent / delay JVM shutdown
  • improved docker-compose example
  • improved helm document & example to show how to provide configuration file or expectation initialiser
  • improved performance and throttled load for UI

Fixed

  • WARN and ERROR is logged even if logLevel not yet initialised
  • ensured exceptions thrown in Main method are always logged
  • separated control plane and data plane matching to avoid reverse regex matches and other similar strange behaviour
  • fixed handling of multiple parameters in Content-Type header
  • autodetect WS or WSS for UI update WebSocket depending on HTTP or HTTPS
  • stopped usage being printed multiple time under certain error scenarios

Removed

  • removed re-entrant WebSocket prevention by creating WebSocket client per expectation to improve resilience

[5.7.2] - 2019-11-16

Added

  • added setting to control maximum size of event log

Changed

  • performance enhancements
  • improved matcher failure log messages to output detail at DEBUG level
  • made log level configuration more resilient
  • allowed exceptions to be thrown from all types of callback methods

Fixed

  • fixed duplicate logging or request when optimistic proxying
  • added missing exception on bind error
  • ensured client event bus is not static so it not shared across multiple client instances except were server port is identical

[5.7.1] - 2019-11-09

Added

  • added disruptor ring buffer in front of log to improve performance
  • added configuration to ensure MockServer certificate is not updated once created

Changed

  • improved performance with request matcher fast failure
  • refactored CPU or memory hot spots
  • switched logging to simpler more resilient approach without external dependencies

Fixed

  • fixed log levels to support disabling the log completely without impacting verifications
  • ensured clear, reset and verify guarantee all pending log events are completed
  • ensured all thread pools (i.e. added disruptor, etc) are stopped with stopping MockServer or Servlets
  • respond with not found response (instead of hanging) when failure during template rendering

[5.7.0] - 2019-11-01

Added

  • added support for retrieving requests and associated responses from log
  • added support for access-control-request-headers with CORS

Changed

  • updated to Java 8
  • made Jackson more relaxed when parsing JSON already validated by JSON Schema
  • improved resilience of request and response parsing, such as when Content-Type is blank string
  • improved proxy loop prevention to only break loops within a single instance of MockServer
  • increased length of TLS keys to RSA 2048
  • increased default request log size and maximum number of expectation

Fixed

  • added global thread-safety to javascript templates for local variables defined without keyword var

[5.6.1] - 2019-07-21

Changed

  • delayed creation of Nashorn JS engine

Fixed

  • fixed multi-threaded handling of javascript templates
  • fixed duplicate logging errors

[5.6.0] - 2019-06-21

Added

  • added delay to actions that did not already have it
  • added configuration for certificate authority private key and x509
  • added support for large HTTP headers

Changed

  • simplified the certificate generation
  • configured logback file appender programmatically

Fixed

  • ensure port binding exception are thrown and MockServer stops if port already allocated
  • fixed log configuration to ensure no class loading exception thrown
  • fixed control plane matching of expectations with notted entries