@loopback/http-caching-proxy
A caching HTTP proxy for integration tests.
NOT SUITABLE FOR PRODUCTION USE!
Overview
Testing applications connecting to backend REST/SOAP services can be difficult:
The backend service may be slow, apply rate limiting, etc. Integration tests
become too slow in such case, which makes test-first development impractical.
This can be addressed by setting up a snapshot-based mock server or using a
caching HTTP client, but both of these solutions come with severe disadvantages:
-
When using a snapshot-based mock server, we must ensure that snapshots are
up-to-date with the actual backend implementation.
-
Caching at HTTP-client side requires non-trivial changes of the application
code.
A filesystem-backed caching HTTP proxy offers a neat solution that combines
caching and snapshots:
- The first request is forwarded to the actual backend and the response is
stored as a snapshot.
- Subsequent requests are served by the proxy using the cached snaphost.
- Snapshot older than a configured time are discarded and the first next request
will fetch the real response from the backend.
Installation
npm install --save-dev @loopback/http-caching-proxy
Basic use
Import the module at the top of your test file.
import {HttpCachingProxy} from '@loopback/http-caching-proxy';
Create a proxy instance during test-suite setup (typically in Mocha's before
hook):
const proxy = new HttpCachingProxy({
cachePath: path.resolve(__dirname, '.proxy-cache'),
port: 0,
ttl: 24 * 60 * 60 * 1000,
});
await proxy.start();
In your tests, configure the client library to use the caching proxy. Below is
an example configuration for request:
request = request.defaults({
proxy: proxy.url,
tunnel: false,
});
Finally, stop the proxy when the test suite is done (typically in Mocha's
after
hook):
await proxy.stop();
API Documentation
See the auto-generated documentation at
loopback.io
Contributions
Tests
Run npm test
from the root folder.
Contributors
See
all contributors.
License
MIT