https://github.com/open-rpc/test-coverage
Test your OpenRPC Document against an API.
https://github.com/open-rpc/test-coverage
openrpc-document test-coverage
Last synced: about 1 month ago
JSON representation
Test your OpenRPC Document against an API.
- Host: GitHub
- URL: https://github.com/open-rpc/test-coverage
- Owner: open-rpc
- License: apache-2.0
- Created: 2019-04-17T19:28:50.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-02-06T19:27:21.000Z (3 months ago)
- Last Synced: 2025-04-09T16:12:07.773Z (about 1 month ago)
- Topics: openrpc-document, test-coverage
- Language: TypeScript
- Homepage:
- Size: 1.28 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenRPC Test Coverage
![]()
![]()
![]()
![]()
![]()
This tool is meant to help you test your OpenRPC Document against an API.
Need help or have a question? Join us on [Discord](https://discord.gg/gREUKuF)!
## The Problem
Even after writing your OpenRPC Document, you want to test that the OpenRPC Document does represent an actual API.## Solution
- generate fake data for the OpenRPC Documents method parameters schemas
- use example pairings when available
- use the servers[] defined in the OpenRPC Document to make the JSON-RPC API call
- report back the coverage results
- show errors and the result to help fix inconsistencies## Extending with a `Rule`
Rules are a way to extend the test coverage tool to check for specific things when calling your JSON-RPC API. For example, you may want to check that some fields are always present in the result. You can write a rule to check for that.A rule is a class that extends the `Rule` class and implements the `getCalls` function. The `getCalls` function should return an array of calls to make to the JSON-RPC API. The `Rule` class will then make the calls and check the results. It checks the results with the `validateCall` function, it expects that you mutate the `call.valid` property to `true` if the call is valid, and `false` if the call is invalid.
Lastly there are lifecycle events that you can hook into to do things like setup and teardown. The `onBegin` function is called before any calls are made, and the `onEnd` function is called after all calls are made. There are also `beforeRequest`, `afterRequest`, and `afterResponse` lifecycle functions that are called before the request is made, after the request is made, and after the response is received respectively. See the [`Rule`](src/rules/rule.ts) interface for more information.
## Custom Reporters
You can write custom reporters to output the results of the test coverage tool in a different format. A reporter is a class that extends the `Reporter` class and implements the lifecycle functions. The `Reporter` class will call the lifecycle functions at the appropriate time. The `onBegin` function is called before any calls are made, and the `onEnd` function is called after all calls are made. There are also `onTestBegin` and `onTestEnd` lifecycle functions that are called before and after each test respectively. See the [`Reporter`](src/reporters/reporter.ts) interface for more information.### Installation:
```
npm install -g @open-rpc/test-coverage
```
### Usage:
```
open-rpc-test-coverage -s https://raw.githubusercontent.com/open-rpc/examples/master/service-descriptions/simple-math-openrpc.json --transport=http --reporters=console --skip=addition
```#### Screenshot
##### console reporter
