Returns http responses by matching requests.
Request matching defined by: host
method
path
(its can be any - *
)
Responses defined by: message body
status_code
headers
term mock
is request matching + responses
Mock created via http POST request to /mocker_api/mocks/
(examples below)
At the same time can be created several "similar" mocks (equivalent request matching and equals responses) if no one is exclusive
When creates "overlap" mocks (equivalent request matching but different responses) then server returns http 409 status code
About mock:
A
-> A
A
A
,A
, B
, C
] -> A
B
C
C
C
...A
, B
, C
] -> A
B
C
A
B
C
...Mock deleted via http DELETE request to /mocker_api/mocks/<pk>/
(response has json with key is_expired
)
Mocks CRUD also available via browser (Django REST framework builtin UI)
Examples:
curl -H "Content-Type: application/json" -X POST -d '{"method":"GET","route":"/42","responses":42, "is_exclusive": true}' srv:8080/mocker_api/mocks/ {"url":"http://srv:8080/mocker_api/mocks/2/","name":"*","created":"2019-09-03T11:16:04.161986Z","expired":"2019-09-03T11:18:04.161853Z","ttl":120,"is_exclusive":false,"host":"*","route":"/42","method":"GET","responses":42,"response_type":"single"}
curl -H "Content-Type: application/json" -X POST -d '{"name":"all_match_cycle","host":"*","method":"*","route":"*","ttl":600,"responses":[{"body": "qwerty", "return_code": 201}, 42, {"body": "hello world", "headers":{"Content-Type": "application/json"}}], "response_type": "cycle"}' srv:8080/mocker_api/mocks/ {"url":"http://srv:8080/mocker_api/mocks/3/", "name":"all_match_cycle", ...
curl -i -X POST srv:8080/some_path HTTP/1.1 201 Created Content-Type: text/html; charset=utf-8 qwerty
curl -i -X GET srv:8080/ HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 42
curl -i -X PUT srv:8080/some_other_path HTTP/1.1 200 OK Content-Type: application/json hello world
curl -X GET srv:8080/mocker_api/mocks/
curl -X DELETE srv:8080/mocker_api/mocks/2/ {"is_expired":true}
curl -X DELETE srv:8080/mocker_api/mocks/3/ {"is_expired":false}
also available bulk creation of mocks:
curl -H "Content-Type: application/json" -X POST -d '[{"method":"GET","route":"/42","responses":42, "is_exclusive": true}, {"method":"GET","route":"/42_2","responses":42, "is_exclusive": true}]' srv:8080/mocker_api/mocks/ [{"url":"http://srv:8080/mocker_api/mocks/2/","name":"*","created":"2019-10-17T09:58:46.007125Z","expired":"2019-10-17T10:00:46.007010Z","ttl":120,"is_exclusive":true,"host":"*","route":"/42","method":"GET","responses":42,"response_type":"single"},{"url":"http://srv:8080/mocker_api/mocks/3/","name":"*","created":"2019-10-17T09:58:46.010781Z","expired":"2019-10-17T10:00:46.010677Z","ttl":120,"is_exclusive":true,"host":"*","route":"/42_2","method":"GET","responses":42,"response_type":"single"}]
other examples in tests
Install
for example via docker-compose:
docker-compose -f docker-compose.yml -f docker-compose.stage.yml up -d docker-compose -f docker-compose.yml -f docker-compose.stage.yml run --rm --no-deps --entrypoint "" srv pytest
or any other way
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4