Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BedrockStreaming/dynamock-http-server

Repository files navigation

Dynamock HTTP server

Installation

For now, simply use cargo run to build and start the server

Define your mocks

Add a new mock

With a query string

curl --request PUT \
 --url http://localhost:3000/mocks/add \
 --header 'Content-Type: application/json' \
 --data '{
 "request": {
 "method": "GET",
 "path": "/request1",
 "headers": {
 "some-header": "any-value"
 },
 "query": {
 "some-key": "any-value"
 }
 },
 "response": {
 "body": {"some": "content"},
 "status_code": 201
 }
}'

Query the mock

curl --request GET \
 --url 'http://localhost:3001/request1?some-key=any-value' \
 --header 'some-header: any-value'

With an HTTP body

curl --request PUT \
 --url http://localhost:3000/mocks/add \
 --header 'Content-Type: application/json' \
 --data '{
 "request": {
 "method": "POST",
 "path": "/request2",
 "body": {
 "json": {"some": "data"}
 }
 },
 "response": {
 "body": {"some": "content"},
 "status_code": 201
 }
}'

Query the mock

curl --request POST \
 --url http://localhost:3001/request2 \
 --header 'Content-Type: application/json' \
 --data '{
 "some": "data"
}'

With response that vary over calls

curl --request PUT \
 --url http://localhost:3000/mocks/add \
 --header 'Content-Type: application/json' \
 --data '{
 "request": {
 "method": "GET",
 "path": "/request3"
 },
 "usage_count": 1,
 "response": {
 "body": {"some": "content"},
 "status_code": 200
 }
}'
curl --request PUT \
 --url http://localhost:3000/mocks/add \
 --header 'Content-Type: application/json' \
 --data '{
 "request": {
 "method": "GET",
 "path": "/request3"
 },
 "usage_count": 1,
 "response": {
 "body": {"some": "content2"},
 "status_code": 200
 }
}'

Query the mock

curl --request GET \
 --url http://localhost:3001/request3 \
 --header 'Content-Type: application/json' \
 --data '{
 "some": "data"
}'
curl --request GET \
 --url http://localhost:3001/request3 \
 --header 'Content-Type: application/json' \
 --data '{
 "some": "data"
}'

List currently registered mock

curl --request GET \
 --url http://localhost:3000/mocks/list

List currently received calls

curl --request GET \
 --url http://localhost:3000/calls/list

Reset the mocks

curl --request DELETE \
 --url http://localhost:3000/mocks/reset

Use the mocks

The entrypoint use another port 3001 to respond on any request according to registered mocks. An unknown request respond with a 404 status code.

curl --request GET \
 --url http://localhost:3001/request1

Preloading

This app support preloading the mocks

  • mocks should be stored in files using the jsonlines format
  • each line have the same schema as the /add route
  • pass filepath as input arguments
echo '{"request":{"method":"GET","path":"/status"},"response":{"body":"OK","status_code":200}}' > /tmp/test-input-file.jsonl
cargo run -- /tmp/test-input-file.jsonl

Contributing

See CONTRIBUTING.md

Testing

cargo test -p rusty-dynamock-http-server --test cucumber -- --color=never

About

A basic tool to dynamically mock any HTTP server. Powered by Rust

Resources

Contributing

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /