1. Automatic CORS
1. Ability to refer to external files containing request _and_ response bodies
- make it secure by disallowing files outside mock config hierarchy
1. Clear status in log on which service addresses are listened to
- right before `Mock server is ready!` have series of log lines
- each line with clear URL of mock `Serving at http://<bind address>:port the mock for <service comment>`
1. have own server signature like `Mockintosh/<version>`
1. fix pip install
1. Multi-response functionality
1. Automatic image placeholders
1. allow specifying bind address via CLI option
Milestone 4 - Complete
1. Integration of custom "interceptor"
- Object model for request and response
- Ability to provide python function/object to alter response
- Both successful and failed responses intercepted
Milestone 3 - Complete
1. Request headers and query string matching
2. Request JSON body schema validation as part of matching
3. Response status code
4. response headers - global and local
Milestone 2 - Complete
1. Endpoints configuration with only Path matcher
2. Response with templating
4. Log exception if loading server failed
Milestone 1 - Complete
1. Open Source project with documentation, examples, code quality, unit tests with coverage.
- UP9 will do a lot of promotion for it, has to be good quality
1. CI process that tracks docker image size
2. Integration tests that run program/docker image and issue calls against it
3. setup.py, CLI
3. Multi-service engine
4. Config reading from file
- consider JSON+YAML variants
5. No-config start with some default config
7. JSON Schema for configuration, validated for each config
6. Performance aspects kept in mind from the beginning
8. Extensibility aspects kept in mind from the very beginning
9. Logging with `-q` and `-v` respected
---
Roadmap Ideas
Async Mock Actors
- avro/grpc/binary/str problem in Kafka
- what to do with binary headers in Kafka? data-url prefix?
- interceptors to access kafka comms
- allow overriding on-demand producer fields via mgmt API
- support dead letter topic for Google PubSub
- serve AsyncAPI document?
Management API/UI
- save modified config in mgmtUI somehow to disk
- have a UI switch of YAML/JSON for /config and /unhandled
- find solution better than querying traffic log each second
- In unhandled tab, height: calc(100vh - 150px); does not work well when text is long
- upon navigating between mgmt UI tabs, refresh unhandled, stats
- config editor to provide hyperlinks from resource files into corresponding editing
- allow enabling multiple tags + allow response to trigger tag up/down => state machine for complex scenarios
Other
- Nicer logging of requests, with special option to enable it.
- Nicer formatted error pages for known errors, explaining the problem
- Tornado has auto-multicpu startup mode, use it optionally with CLI arg/env var
- test the performance of ourself and optimize it
- support fragment same way we support query string - both in `path` and as standalone `fragment` option
- add support of array/list parameters on query strings like
`/service2q?a=b&a=c` or `/service2q?a[]=b&a[]=c` and form data with multiple values for the same key to the request
matching logic
- mocks for gRPC servers?
- gatsby-style approach to telemetry
- urlparse as helper
- CSS selector helper for HTML
- a service-level field to specify base path of the API for `/v1` and `/v2` things