proxkey
Version:
Proxy/Mock server for testing build on top of HAPI.js
174 lines (166 loc) • 4.09 kB
Markdown
# PROXKEY
## RELEASE NOTES
- Adding replace object with key & value so now we can change the value on the response automatically by the request.
## Mock/Proxy server its your call.
Proxkey will Mock or Proxy your REST or SOAP request.
When to use: let's say you need to test an integration to your system.
- Easy to specify speicific response for specific request.
- Rest Example:
- Request: "bob": [ { "key": "phone_num", "value": "9876543210" } ]
- Response (JSON): "bob" :{ "type": "applicaton/json", "data": "{data: 'bob'}", "code": 200 }
- Response (XML): "bob" :{ "type": "applicaton/xml", "data": "<root><data>bob</data></root>", "code": 200}
- SOAP Example:
- Request: "bob": [{ "key": "root->data->name", "value": "bob" }]
- Response (JSON): "bob" :{ "type": "applicaton/json", "data": "{data: 'bob'}", "code": 200 }
- Response (XML): "bob" :{ "type": "applicaton/xml", "data": "<root><data>bob</data></root>", "code": 200}
## Options:
1. You can mock a successful response
2. You can mock a failure response
3. You can proxy the request to any url you want and get back the response.
## Why? or When to use?
Lets say you have to Mock a response for testing purposes, or you want to hit production but want zero's changes in your code.
## How
### In order to start the proxy (You can always check the example).
<pre><code>
var Proxkey = require("proxkey");
var RoutesConfiguration = {
"configuration": {
"host": "localhost",
"port": "9091",
"log": true
},
"routes" : [
{
"request_url": "/a/b",
"method": "POST",
"params": {
"failure": [
{
"key": "phone_num",
"value": "9876543210"
}
],
"something": [
{
"key": "phone_num",
"value": "8888888888"
}
],
"production": [
{
"key": "phone_num",
"value": "5105105555"
}
]
},
"response": {
"something" :{
"type": "applicaton/xml",
"data": "/partners/test/test_some_doc.xml",
"code": 200
},
"failure" : {
"type": "applicaton/xml",
"data": "/partners/test/test_doc.xml",
"code": 200
},
"success" : {
"type": "application/json",
"data": "/partners/test/test_doc.json",
"code": 200
},
"production": {
"host": "httpbin.org",
"path": "/post",
"port": 80
}
}
},{
"request_url": "/xml/a",
"method": "POST",
"params": {
"failure": [
{
"key": "xmlFirstChild->xmlSecondChild",
"value": "9876543210"
}
],
"something": [
{
"key": "xmlFirstChild->xmlSecondChild",
"value": "8888888888"
}
]
},
"response": {
"something" :{
"type": "applicaton/json",
"data": "{\"data\": \"something\"}",
"code": 201
},
"failure" : {
"type": "applicaton/json",
"data": "{\"data\": \"failure\"}",
"code": 401
},
"success" : {
"type": "application/json",
"data": "{\"data\": \"success\"}",
"code": 200
}
}
},{
"request_url": "/a/c",
"method": "POST",
"params": {
"failure": [
{
"key": "phone_num",
"value": "9876543210"
},{
"key": "phone_num",
"value": "123123123"
}
]
},
"response": {
"success" : {
"type": "application/json",
"data": "/partners/test/test_doc.json",
"code": 200
},
"failure" : {
"type": "applicaton/xml",
"data": "/partners/test/test_doc.xml",
"code": 404
}
}
},{
"request_url": "/say/hi",
"method": "POST",
"params": {
"failure": [
{
"key": "name",
"value": "ben"
}
]
},
"response": {
"success": {
"type": "application/json",
"data": "{ hi: 'ben'}",
"code": 200
},
"failure": {
"type": "application/json",
"data": "{ hi: 'Doron' }",
"code": 409
}
}
}
]
};
Proxkey.start(RoutesConfiguration);
</pre></code>
## Good Luck!