forked from robohydra/robohydra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
308 lines (227 loc) · 11.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
Version 0.x.x (20xx-xx-xx)
--------------------------
* Some change.
Version 0.6.4 (2016-02-23)
--------------------------
* Disable snyk to avoid installation problems (only on Windows?).
Version 0.6.3 (2016-02-20)
--------------------------
* Avoid bad plugin config when using pluginConfigDefaults.
* Make the logger plugin compatible with streaming.
Version 0.6.2 (2015-11-12)
--------------------------
* Add a new `pluginConfigDefaults` key to configuration files, to
provide configuration defaults for all plugins.
* Pass query parameters correctly when proxying requests by using
the `proxyRequest` function directly (as opposed to using a
`RoboHydraHeadProxy` head.
* Don't die if the incoming request body is unparseable.
* Tighten the versioned dependency on qs to avoid breaking
compatibility with older versions of Node.
Version 0.6.1 (2015-07-09)
--------------------------
* Allow inspection and deletion of hydras spawned by the summoner.
Finally consider it fit for production, not an experiment.
* Replayer plugin: big improvements, mostly in the UI.
* New RoboHydraHeadReplayer head: it allows you to easily replay
traffic files recorded with the replayer plugin.
* Other small improvements, like fixes in the CORS plugin and a
new option "delaydisabled" for the delayer plugin.
Version 0.6.0 (2015-04-14)
--------------------------
* WebSocket support! There are two WebSocket heads available:
RoboHydraWebSocketHead, a basic head similar to RoboHydraHead, and
RoboHydraWebSocketHeadProxy, similar to RoboHydraHeadProxy but
allowing filtering and blocking of data sent in either
direction. See the documentation for details.
* Accept a list of extra plugin load directories (as opposed to
only one).
* CORS plugin: always set the Access-Control-Allow-Credentials
header to true to allow credentials to be passed.
* Finally decided in favour of the name "testResults" instead of
"scenarioResults" (and mark the latter as deprecated). Drop many
names that have been deprecated for a long time.
Version 0.5.2 (2015-01-16)
---------------------------
* Fix some compatibility problem with Windows and Mac OS X (in the
last release there were two files call the same except for case).
Version 0.5.1 (2014-12-21)
--------------------------
* Make the 'reset' available for RoboHydraHead.
* Potential compatibility problem: now scenarios are checked so
that they always contain the "heads" property, and don't contain
any unknown properties. If you are hit by this your scenarios were
broken anyway, and better to be stricter now than later.
* Deprecated function name roboHydraHeadType for the more
consistent robohydraHeadType.
* Deprecated configuration name corsUrlPath for the more
consistent corsurlpath in the cors plugin.
* Deprecated method "chain" in Response objects. See the new
method "follow" below.
* New property "headers" for RoboHydraHeadStatic allows the user
to set arbitrary headers for the head response(s). Add support to
add headers from the Admin UI.
* RoboHydra is now easier to embed in your own programs. See the
"createRoboHydraServer" function.
* New command-line option --quiet to suppress non-error messages
to the console.
* New method "follow" in Response objects. Similar to "chain", but
called on the receiving object.
* Other bugfixes and smaller improvements.
Version 0.5 (2014-08-28)
------------------------
* Potential compatibility problem: dynamic heads registered as
"high priority" now come *after* the admin plugin. That mostly
means that (a) you can't replace the Admin UI with your own plugin
(you'll have to use a different URL) and that (b) you won't get
all the admin plugin requests in robohydra.log.
* Deprecated mixed-case configuration variables names for plugins
(ie. variables like trafficFilePath become now trafficfilepath).
* Deprecated inconsistent roboHydraHeadType names: some parameters
to roboHydraHeadType were inconsistent and have been replaced with
more consistent names. In particular, "defaultProps" becomes
"defaultPropertyObject" and "parentPropBuilder" becomes
"parentPropertyBuilder".
* New head matching possibilities: now all heads accept properties
"method" and "hostname" and will only match requests that have the
same method(s) and/or that have the same hostname. See the
documentation and the "advanced-matching" example for details.
* New delayer plugin: there's a new plugin that will delay all
requests to a given URL (by default, all of them) by a given
number of milliseconds (by default, 2000).
* New CORS plugin: there's a new plugin that accepts all CORS
requests.
* New proxy-cache plugin: there's a new proxy plugin that caches
responses to GET requests.
* Compatibility bugfix: Windows absolute paths work now as plugin
load paths.
* Configuration files: now they can specify plugin load paths and
the port the RoboHydra server will listen on.
* Multiple RoboHydraHeadStatic response improvement: there's a new
property "repeatMode" that can be set to "round-robin" (default)
and "repeat-last", which just repeats the last response forever
upon reaching it.
* Bugfixes, improvements and code clean-ups.
Version 0.4 (2013-11-10)
------------------------
* Broken compatibility: the API of the "registerPluginObject"
function has changed, check the new documentation. The function
"requirePlugin" no longer exists.
* Potential compatibility problem: the setHostHeader property of
the proxy head is now true by default. It's unlikely that this
change will bite anyone, but if you needed the proxy head to NOT
set the Host HTTP header you have to change your
RoboHydraHeadProxy definitions.
* Potential compatibility problem: now dynamic heads have
precedence over any dynamic heads created before. This behaviour
makes much more sense (heads you create will override whatever the
current behaviour is), and it's very unlikely that this change
will be a problem for anyone, but if you're creating dynamic heads
programmatically for some reason, check that this doesn't break
your plugins.
* Deprecated name "tests": now you should use "scenarios". It's
just a name change, functionality stays the same. The functions
"startTest" and "stoptest" are deprecated, and "startScenario" and
"stopScenario" should be used instead (see next point for
details).
* External scenarios: scenarios can now be specified in separate
files, in addition to inline inside the plugin's index.js
file. Each scenario is a file inside the scenarios/ subdirectory
of the plugin directory.
* Scenario reliability: now scenarios should be more reliable, as
heads contained in the scenario are reset to their original state
(assuming they have any state at all; RoboHydraHeadStatic is
currently the only head type with state, and only in the case of
using multiple responses).
* New "fixtures" module: plugins now have access to a second
module, "fixtures". This module contains a single function,
"load", that allows you to easily load files sitting in the
fixtures/ subdirectory of the plugin directory.
* Dynamic head priority: the registerDynamicHead method of the
RoboHydra object now supports an optional parameter to specify the
priority of the head (for now, only "normal" or "high"). Dynamic
heads with "high" priority will be added to the
"*priority-dynamic*" pseudo-plugin, which is placed before
"*dynamic*". This is useful for plugins like "logger", which
thanks to this change can add "overall" heads that will have
precedence over regular dynamic heads added afterwards (see also
the dynamic head precedence change above).
* Multiple user support: RoboHydra servers can now be shared among
several users. Each user will have her own state independent of
the other users' state. This allows you to setup a single, shared
RoboHydra server for a whole team, as opposed to every member of
the team having to install RoboHydra in her own computer. See the
"summoners" documentation for more information.
* REST API: there is a new API to interact with the RoboHydra
server. It's REST based, and for now it only supports JSON as a
format. It allows you to check the loaded plugins, information
about a given plugin, head or scenario, and change the state of a
given head or scenario.
* Admin UI: simplified the head and scenario list UI; static heads
can now be created with a specific status code; show the hydra
name (related to the multiple user support) and the date in which
the server was started.
* Logger plugin: it now logs the original request sent by the
client, as opposed to the possibly-modified request (eg. the
request could be modified in place before calling the next
function).
* Creating new head classes: there is now a function
("roboHydraHeadType") to create head classes that inherit from
other, existing head classes. See the documentation and examples
for more details.
* Command-line UI: now configuration files are optional, and
plugins can be specified on the command-line directly (options
-n and -P).
* Add more and better examples to the examples/ folder.
* Many code clean-ups and improvements.
Version 0.3 (2012-09-02)
------------------------
* Potentially breaking change: assertion failures won't throw
exceptions from now on. Instead, they will simply return
false. This means that code after a failed assertion *does get
executed* in RoboHydra 0.3. Most of the time this is exactly what
you want. Moreover, it's much easier to simulate the old behaviour
in RoboHydra 0.3, in the very few cases you might need it, than
simulate the new behaviour with RoboHydra 0.2.
* Streaming support: calls to the "write" method will be written
immediately, even when chaining requests (when setup
properly). This allows sending data in chunks, or sending data and
never close the connection. Check the new "chain" and "on" methods
in the Response class documentation for details.
* Make heads more strict: heads will complain now about any
properties they don't understand.
* HTTPS: RoboHydra can now receive HTTPS requests, and
RoboHydraProxyHead can connect to HTTPS websites.
* Compact configuration: plugins with no special configuration can
be specified in configuration files as a simple string (the plugin
name), as opposed to a Javascript object with the keys "name" and
"config".
* New RoboHydraHeadFilter head: this new head allows you to filter
the result of any matching request and return a different
response. It understands compression and will transparently
uncompress and compress back any compressed responses. See the
documentation for more details.
* New RoboHydraHeadWatchdog head: it allows you to watch the
traffic for a certain pattern, and act when that pattern is
found. For example, you might want to log responses containing a
given text separately. It will transparently uncompress to make it
easier to inspect response bodies.
* Admin UI: now filesystem and proxy heads can be created
dynamically from the web UI; URL paths for dynamically-created
static content heads will now match GET parameters; the path
debugger will now highlight *all* matching heads, not just the
first one; the admin plugin is not shown on the list of heads
anymore (see the source for details if you really want to show
them).
* RoboHydraFilesystemHead: add support for index files. See
documentation for details.
* RoboHydraFilesystemHead and RoboHydraProxyHead: "mountPath" is
now treated as a plain string, meaning any special regexp
characters must not be escaped from the mount path.
* New request class: you can use it to create new, fake requests
(eg. when chaining).
* Query (GET) parameters: the "getParams" property is deprecated
now, in favour of "queryParams".
* Exceptions: if a head throws an exception, it will be caught and
the request will return a 500 internal server error with the
stacktrace as the response body.