@mbtest/mountebank 2.9.2-beta.9050
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +94 -0
- package/bin/mb +136 -0
- package/package.json +71 -0
- package/releases.json +52 -0
- package/src/cli/api.js +112 -0
- package/src/cli/cli.js +420 -0
- package/src/controllers/configController.js +64 -0
- package/src/controllers/feedController.js +115 -0
- package/src/controllers/homeController.js +58 -0
- package/src/controllers/imposterController.js +328 -0
- package/src/controllers/impostersController.js +215 -0
- package/src/controllers/logsController.js +52 -0
- package/src/models/behaviors.js +553 -0
- package/src/models/behaviorsValidator.js +186 -0
- package/src/models/compatibility.js +133 -0
- package/src/models/dryRunValidator.js +261 -0
- package/src/models/filesystemBackedImpostersRepository.js +908 -0
- package/src/models/http/baseHttpServer.js +207 -0
- package/src/models/http/headersMap.js +87 -0
- package/src/models/http/httpProxy.js +230 -0
- package/src/models/http/httpRequest.js +82 -0
- package/src/models/http/httpServer.js +18 -0
- package/src/models/http/index.js +18 -0
- package/src/models/https/cert/mb-cert.pem +20 -0
- package/src/models/https/cert/mb-csr.pem +16 -0
- package/src/models/https/cert/mb-key.pem +27 -0
- package/src/models/https/httpsServer.js +42 -0
- package/src/models/https/index.js +18 -0
- package/src/models/imposter.js +243 -0
- package/src/models/imposterPrinter.js +120 -0
- package/src/models/impostersRepository.js +49 -0
- package/src/models/inMemoryImpostersRepository.js +418 -0
- package/src/models/jsonpath.js +44 -0
- package/src/models/mbConnection.js +107 -0
- package/src/models/predicates.js +438 -0
- package/src/models/protocols.js +242 -0
- package/src/models/responseResolver.js +398 -0
- package/src/models/smtp/index.js +16 -0
- package/src/models/smtp/smtpRequest.js +60 -0
- package/src/models/smtp/smtpServer.js +109 -0
- package/src/models/tcp/index.js +18 -0
- package/src/models/tcp/tcpProxy.js +110 -0
- package/src/models/tcp/tcpRequest.js +23 -0
- package/src/models/tcp/tcpServer.js +156 -0
- package/src/models/tcp/tcpValidator.js +19 -0
- package/src/models/xpath.js +95 -0
- package/src/mountebank.js +245 -0
- package/src/public/images/arrow_down.png +0 -0
- package/src/public/images/arrow_up.png +0 -0
- package/src/public/images/book.jpg +0 -0
- package/src/public/images/dataflow.png +0 -0
- package/src/public/images/favicon.ico +0 -0
- package/src/public/images/forkme_right_orange_ff7600.png +0 -0
- package/src/public/images/mountebank.png +0 -0
- package/src/public/images/overview.gif +0 -0
- package/src/public/images/quote.png +0 -0
- package/src/public/images/tw-logo.png +0 -0
- package/src/public/scripts/jquery/jquery-3.6.1.min.js +2 -0
- package/src/public/scripts/urlHashHandler.js +31 -0
- package/src/public/stylesheets/application.css +424 -0
- package/src/public/stylesheets/ie.css +14 -0
- package/src/public/stylesheets/imposters.css +121 -0
- package/src/public/stylesheets/jqueryui/1.10.4/themes/smoothness/jquery-ui.css +1178 -0
- package/src/util/combinators.js +68 -0
- package/src/util/date.js +51 -0
- package/src/util/errors.js +55 -0
- package/src/util/helpers.js +131 -0
- package/src/util/inherit.js +28 -0
- package/src/util/ip.js +54 -0
- package/src/util/logger.js +83 -0
- package/src/util/middleware.js +256 -0
- package/src/util/scopedLogger.js +47 -0
- package/src/views/_footer.ejs +20 -0
- package/src/views/_header.ejs +113 -0
- package/src/views/_imposter.ejs +8 -0
- package/src/views/config.ejs +71 -0
- package/src/views/docs/api/behaviors/copy.ejs +427 -0
- package/src/views/docs/api/behaviors/decorate.ejs +182 -0
- package/src/views/docs/api/behaviors/lookup.ejs +220 -0
- package/src/views/docs/api/behaviors/shellTransform.ejs +153 -0
- package/src/views/docs/api/behaviors/wait.ejs +121 -0
- package/src/views/docs/api/behaviors.ejs +141 -0
- package/src/views/docs/api/contracts/addStub-description.ejs +10 -0
- package/src/views/docs/api/contracts/addStub.ejs +10 -0
- package/src/views/docs/api/contracts/config-description.ejs +32 -0
- package/src/views/docs/api/contracts/config.ejs +23 -0
- package/src/views/docs/api/contracts/home-description.ejs +18 -0
- package/src/views/docs/api/contracts/home.ejs +13 -0
- package/src/views/docs/api/contracts/imposter-description.ejs +439 -0
- package/src/views/docs/api/contracts/imposter.ejs +182 -0
- package/src/views/docs/api/contracts/imposters-description.ejs +13 -0
- package/src/views/docs/api/contracts/imposters.ejs +13 -0
- package/src/views/docs/api/contracts/logs-description.ejs +3 -0
- package/src/views/docs/api/contracts/logs.ejs +14 -0
- package/src/views/docs/api/contracts/stub-description.ejs +4 -0
- package/src/views/docs/api/contracts/stub.ejs +7 -0
- package/src/views/docs/api/contracts/stubs-description.ejs +4 -0
- package/src/views/docs/api/contracts/stubs.ejs +11 -0
- package/src/views/docs/api/contracts.ejs +133 -0
- package/src/views/docs/api/errors.ejs +64 -0
- package/src/views/docs/api/fault/connectionReset.ejs +31 -0
- package/src/views/docs/api/fault/randomDataThenClose.ejs +31 -0
- package/src/views/docs/api/faults.ejs +57 -0
- package/src/views/docs/api/injection.ejs +426 -0
- package/src/views/docs/api/json.ejs +205 -0
- package/src/views/docs/api/jsonpath.ejs +210 -0
- package/src/views/docs/api/mocks.ejs +130 -0
- package/src/views/docs/api/overview.ejs +968 -0
- package/src/views/docs/api/predicates/and.ejs +62 -0
- package/src/views/docs/api/predicates/contains.ejs +64 -0
- package/src/views/docs/api/predicates/deepEquals.ejs +114 -0
- package/src/views/docs/api/predicates/endsWith.ejs +66 -0
- package/src/views/docs/api/predicates/equals.ejs +125 -0
- package/src/views/docs/api/predicates/exists.ejs +118 -0
- package/src/views/docs/api/predicates/inject.ejs +67 -0
- package/src/views/docs/api/predicates/matches.ejs +66 -0
- package/src/views/docs/api/predicates/not.ejs +52 -0
- package/src/views/docs/api/predicates/or.ejs +79 -0
- package/src/views/docs/api/predicates/startsWith.ejs +62 -0
- package/src/views/docs/api/predicates.ejs +382 -0
- package/src/views/docs/api/proxies.ejs +191 -0
- package/src/views/docs/api/proxy/addDecorateBehavior.ejs +115 -0
- package/src/views/docs/api/proxy/addWaitBehavior.ejs +96 -0
- package/src/views/docs/api/proxy/injectHeaders.ejs +91 -0
- package/src/views/docs/api/proxy/predicateGenerators.ejs +600 -0
- package/src/views/docs/api/proxy/proxyModes.ejs +495 -0
- package/src/views/docs/api/stubs.ejs +391 -0
- package/src/views/docs/api/xpath.ejs +281 -0
- package/src/views/docs/cli/configFiles.ejs +133 -0
- package/src/views/docs/cli/customFormatters.ejs +53 -0
- package/src/views/docs/cli/help.ejs +6 -0
- package/src/views/docs/cli/replay.ejs +42 -0
- package/src/views/docs/cli/restart.ejs +10 -0
- package/src/views/docs/cli/save.ejs +68 -0
- package/src/views/docs/cli/start.ejs +234 -0
- package/src/views/docs/cli/stop.ejs +32 -0
- package/src/views/docs/commandLine.ejs +93 -0
- package/src/views/docs/communityExtensions.ejs +233 -0
- package/src/views/docs/gettingStarted.ejs +146 -0
- package/src/views/docs/mentalModel.ejs +51 -0
- package/src/views/docs/protocols/custom.ejs +231 -0
- package/src/views/docs/protocols/http.ejs +238 -0
- package/src/views/docs/protocols/https.ejs +246 -0
- package/src/views/docs/protocols/smtp.ejs +142 -0
- package/src/views/docs/protocols/tcp.ejs +431 -0
- package/src/views/docs/security.ejs +38 -0
- package/src/views/faqs.ejs +65 -0
- package/src/views/feed.ejs +33 -0
- package/src/views/imposter.ejs +22 -0
- package/src/views/imposters.ejs +33 -0
- package/src/views/index.ejs +89 -0
- package/src/views/license.ejs +30 -0
- package/src/views/logs.ejs +77 -0
- package/src/views/releases/v1.1.0.ejs +55 -0
- package/src/views/releases/v1.1.36.ejs +84 -0
- package/src/views/releases/v1.1.72.ejs +92 -0
- package/src/views/releases/v1.10.0.ejs +108 -0
- package/src/views/releases/v1.11.0.ejs +109 -0
- package/src/views/releases/v1.12.0.ejs +96 -0
- package/src/views/releases/v1.13.0.ejs +118 -0
- package/src/views/releases/v1.14.0.ejs +107 -0
- package/src/views/releases/v1.14.1.ejs +94 -0
- package/src/views/releases/v1.15.0.ejs +113 -0
- package/src/views/releases/v1.16.0.ejs +104 -0
- package/src/views/releases/v1.2.0.ejs +78 -0
- package/src/views/releases/v1.2.103.ejs +86 -0
- package/src/views/releases/v1.2.122.ejs +86 -0
- package/src/views/releases/v1.2.30.ejs +84 -0
- package/src/views/releases/v1.2.45.ejs +84 -0
- package/src/views/releases/v1.2.56.ejs +79 -0
- package/src/views/releases/v1.3.0.ejs +86 -0
- package/src/views/releases/v1.3.1.ejs +100 -0
- package/src/views/releases/v1.4.0.ejs +96 -0
- package/src/views/releases/v1.4.1.ejs +103 -0
- package/src/views/releases/v1.4.2.ejs +100 -0
- package/src/views/releases/v1.4.3.ejs +113 -0
- package/src/views/releases/v1.5.0.ejs +104 -0
- package/src/views/releases/v1.5.1.ejs +91 -0
- package/src/views/releases/v1.6.0.ejs +109 -0
- package/src/views/releases/v1.7.0.ejs +113 -0
- package/src/views/releases/v1.7.1.ejs +90 -0
- package/src/views/releases/v1.7.2.ejs +96 -0
- package/src/views/releases/v1.8.0.ejs +121 -0
- package/src/views/releases/v1.9.0.ejs +111 -0
- package/src/views/releases/v2.0.0.ejs +159 -0
- package/src/views/releases/v2.1.0.ejs +121 -0
- package/src/views/releases/v2.1.1.ejs +106 -0
- package/src/views/releases/v2.1.2.ejs +84 -0
- package/src/views/releases/v2.2.0.ejs +115 -0
- package/src/views/releases/v2.2.1.ejs +102 -0
- package/src/views/releases/v2.3.0.ejs +121 -0
- package/src/views/releases/v2.3.1.ejs +100 -0
- package/src/views/releases/v2.3.2.ejs +102 -0
- package/src/views/releases/v2.3.3.ejs +97 -0
- package/src/views/releases/v2.4.0.ejs +114 -0
- package/src/views/releases/v2.5.0.ejs +51 -0
- package/src/views/releases/v2.6.0.ejs +35 -0
- package/src/views/releases/v2.7.0.ejs +32 -0
- package/src/views/releases/v2.8.0.ejs +36 -0
- package/src/views/releases/v2.8.1.ejs +7 -0
- package/src/views/releases/v2.8.2.ejs +26 -0
- package/src/views/releases/v2.9.0.ejs +32 -0
- package/src/views/releases/v2.9.1.ejs +10 -0
- package/src/views/releases.ejs +26 -0
- package/src/views/sitemap.ejs +36 -0
- package/src/views/support.ejs +14 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<h1>v<%= releaseVersion %></h1>
|
|
2
|
+
|
|
3
|
+
<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
|
|
4
|
+
<a href='http://www.mbtest.dev/feed'>ATOM feed</a>.</p>
|
|
5
|
+
|
|
6
|
+
<p class='warning-icon'>mountebank v1.7 no longer supports node v0.10 or v0.12. This
|
|
7
|
+
corresponds to the node community's <a href='https://github.com/nodejs/LTS#lts-schedule'>LTS schedule</a>.</p>
|
|
8
|
+
|
|
9
|
+
<h2>Bug Fixes</h2>
|
|
10
|
+
<ul class='bullet-list'>
|
|
11
|
+
<li>Fixed a <a href='https://github.com/mountebank-testing/mountebank/issues/173'>bug</a> allowing state changes to the
|
|
12
|
+
"is" response after creation. This was first noticed when using the <code>decorate</code> behavior - the
|
|
13
|
+
second and subsequent calls incorrectly returned whatever the first call used</li>
|
|
14
|
+
<li>Correctly show the number of requests on the <a href='http://<%= host %>/imposters'>imposters</a> page</li>
|
|
15
|
+
<li>Prevent using functions for the <code>wait</code> behavior unless the <code>--allowInjection</code>
|
|
16
|
+
flag is passed in.</li>
|
|
17
|
+
<li>Fixed some documentation, especially around the behaviors</li>
|
|
18
|
+
</ul>
|
|
19
|
+
|
|
20
|
+
<p>Many thanks to the following kind folks for help with this release:</p>
|
|
21
|
+
|
|
22
|
+
<ul class='bullet-list'>
|
|
23
|
+
<li>nottyo</li>
|
|
24
|
+
</ul>
|
|
25
|
+
|
|
26
|
+
<h2>Install</h2>
|
|
27
|
+
|
|
28
|
+
<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>
|
|
29
|
+
|
|
30
|
+
<p>or:</p>
|
|
31
|
+
|
|
32
|
+
<table>
|
|
33
|
+
<tr>
|
|
34
|
+
<th>Option</th>
|
|
35
|
+
<th>node.js required?</th>
|
|
36
|
+
<th>sudo required?</th>
|
|
37
|
+
<th>links</th>
|
|
38
|
+
<th>Description</th>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<td>Self-contained archives</td>
|
|
42
|
+
<td>No</td>
|
|
43
|
+
<td>No</td>
|
|
44
|
+
<td style="min-width: 5em;">
|
|
45
|
+
<ul>
|
|
46
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
|
|
47
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
|
|
48
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
|
|
49
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
|
|
50
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
|
|
51
|
+
</ul>
|
|
52
|
+
</td>
|
|
53
|
+
<td>Simply unpack and run <code>mb</code> from inside</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<td>OS-specific packages</td>
|
|
57
|
+
<td>No</td>
|
|
58
|
+
<td>Yes</td>
|
|
59
|
+
<td>
|
|
60
|
+
<ul>
|
|
61
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
|
|
62
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
|
|
63
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
|
|
64
|
+
</ul>
|
|
65
|
+
</td>
|
|
66
|
+
<td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
|
|
67
|
+
</tr>
|
|
68
|
+
<tr>
|
|
69
|
+
<td>source tarball</td>
|
|
70
|
+
<td>Yes</td>
|
|
71
|
+
<td>No</td>
|
|
72
|
+
<td>
|
|
73
|
+
<ul>
|
|
74
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
|
|
75
|
+
</ul>
|
|
76
|
+
</td>
|
|
77
|
+
<td>source tarball if you roll that way.</td>
|
|
78
|
+
</tr>
|
|
79
|
+
</table>
|
|
80
|
+
|
|
81
|
+
<h2 id='windows-path-limitations'>Windows path limitations</h2>
|
|
82
|
+
|
|
83
|
+
<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
|
|
84
|
+
a particular constraint of Windows Explorer. For legacy reasons, some Windows applications, including most notably Windows Explorer,
|
|
85
|
+
have a maximum number of characters allowed in a path of 260 characters. As mountebank writes these words, the longest path he
|
|
86
|
+
includes in the zip files is around 175 characters. The zip file name, which is likely to represent itself as <i>two</i>
|
|
87
|
+
nested directories if you use the defaults to unzip it, will be around 25 characters. That gives you very little wiggle room.
|
|
88
|
+
If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>
|
|
89
|
+
|
|
90
|
+
<p>The following solutions will all work:</p>
|
|
91
|
+
|
|
92
|
+
<ul class='bullet-list'>
|
|
93
|
+
<li>Unzip to the root of your C: drive (or a similar small path)</li>
|
|
94
|
+
<li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
|
|
95
|
+
<li>Use <code>npm</code> to install mountebank instead of the zip file</li>
|
|
96
|
+
</ul>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<h1>v<%= releaseVersion %></h1>
|
|
2
|
+
|
|
3
|
+
<p>v1.8 is the most important release of mountebank in a very long time. Thanks
|
|
4
|
+
to the many people who helped make it happen.</p>
|
|
5
|
+
|
|
6
|
+
<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
|
|
7
|
+
<a href='http://www.mbtest.dev/feed'>ATOM feed</a>.</p>
|
|
8
|
+
|
|
9
|
+
<h2>New Features</h2>
|
|
10
|
+
<ul class='bullet-list'>
|
|
11
|
+
<li>Added a new <a href='http://<%= host %>/docs/api/behaviors'><code>shellTransform</code></a>
|
|
12
|
+
behavior that allows you to change the response through a shell application. This makes
|
|
13
|
+
mountebank infinitely extensible in any language of your choice</li>
|
|
14
|
+
<li>Added a new <a href='http://<%= host %>/docs/api/behaviors'><code>copy</code></a>
|
|
15
|
+
behavior that allows you to copy a value from the request to the response, using either
|
|
16
|
+
regular expressions, xpath, or jsonpath</li>
|
|
17
|
+
<li>Added a new <a href='http://<%= host %>/docs/security'>security page</a> documenting
|
|
18
|
+
security tips when using the <code>--allowInjection</code> command line flag, including
|
|
19
|
+
using a new <a href='http://<%= host %>/docs/commandLine'><code>--localOnly</code></a> flag
|
|
20
|
+
and a new <a href='http://<%= host %>/docs/commandLine'><code>--ipWhitelist</code></a> flag</li>
|
|
21
|
+
</ul>
|
|
22
|
+
|
|
23
|
+
<h2>Bug Fixes</h2>
|
|
24
|
+
<ul class='bullet-list'>
|
|
25
|
+
<li>Config files now allow <a href='https://github.com/mountebank-testing/mountebank/issues/183'>nested
|
|
26
|
+
<code>stringify</code> functions</a></li>
|
|
27
|
+
<li>Now possible to install mountebank behind a <a href='https://github.com/mountebank-testing/mountebank/issues/141'>
|
|
28
|
+
repository manager</a></li>
|
|
29
|
+
<li>Fixed <a href='https://github.com/mountebank-testing/mountebank/issues/176'>command line defaults</a>
|
|
30
|
+
when using a command</li>
|
|
31
|
+
<li>Fixed documentation explaining behavior of <a href='https://github.com/mountebank-testing/mountebank/issues/181'>
|
|
32
|
+
<code>mb stop</code> and <code>mb restart</code></a></li>
|
|
33
|
+
<li>Fixed problem running the build due to missing dependencies</li>
|
|
34
|
+
</ul>
|
|
35
|
+
|
|
36
|
+
<p>Many thanks to the following kind folks for help with this release, either through bug reports,
|
|
37
|
+
suggestions, or direct code contributions:</p>
|
|
38
|
+
|
|
39
|
+
<ul class='bullet-list'>
|
|
40
|
+
<li>Stephen Tkac and team, for the suggestion and initial implementation of the <code>copy</code> behavior</li>
|
|
41
|
+
<li><a href='http://paulhammant.com/'>Paul Hammant</a>, for initially pointing out some of the security
|
|
42
|
+
concerns with injection and suggesting the <code>--localOnly</code> flag</li>
|
|
43
|
+
<li>Israel Azcuna, for finding the bug around nested <code>stringify</code> functions</li>
|
|
44
|
+
<li><a href='https://github.com/markhu'>markhu</a>, for exposing the missing docs around
|
|
45
|
+
<code>mb stop</code> and <code>mb restart</code></li>
|
|
46
|
+
<li>francois-montmasson-efg, for both finding
|
|
47
|
+
the bug around installing mountebank behind a repository manager and for suggesting the solution</li>
|
|
48
|
+
<li>Nikolaus Piccolotto, for finding missing dependencies in package.json</li>
|
|
49
|
+
</ul>
|
|
50
|
+
|
|
51
|
+
<h2>Install</h2>
|
|
52
|
+
|
|
53
|
+
<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>
|
|
54
|
+
|
|
55
|
+
<p>or:</p>
|
|
56
|
+
|
|
57
|
+
<table>
|
|
58
|
+
<tr>
|
|
59
|
+
<th>Option</th>
|
|
60
|
+
<th>node.js required?</th>
|
|
61
|
+
<th>sudo required?</th>
|
|
62
|
+
<th>links</th>
|
|
63
|
+
<th>Description</th>
|
|
64
|
+
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td>Self-contained archives</td>
|
|
67
|
+
<td>No</td>
|
|
68
|
+
<td>No</td>
|
|
69
|
+
<td style="min-width: 5em;">
|
|
70
|
+
<ul>
|
|
71
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
|
|
72
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
|
|
73
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
|
|
74
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
|
|
75
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
|
|
76
|
+
</ul>
|
|
77
|
+
</td>
|
|
78
|
+
<td>Simply unpack and run <code>mb</code> from inside</td>
|
|
79
|
+
</tr>
|
|
80
|
+
<tr>
|
|
81
|
+
<td>OS-specific packages</td>
|
|
82
|
+
<td>No</td>
|
|
83
|
+
<td>Yes</td>
|
|
84
|
+
<td>
|
|
85
|
+
<ul>
|
|
86
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
|
|
87
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
|
|
88
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
|
|
89
|
+
</ul>
|
|
90
|
+
</td>
|
|
91
|
+
<td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
|
|
92
|
+
</tr>
|
|
93
|
+
<tr>
|
|
94
|
+
<td>source tarball</td>
|
|
95
|
+
<td>Yes</td>
|
|
96
|
+
<td>No</td>
|
|
97
|
+
<td>
|
|
98
|
+
<ul>
|
|
99
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
|
|
100
|
+
</ul>
|
|
101
|
+
</td>
|
|
102
|
+
<td>source tarball if you roll that way.</td>
|
|
103
|
+
</tr>
|
|
104
|
+
</table>
|
|
105
|
+
|
|
106
|
+
<h2 id='windows-path-limitations'>Windows path limitations</h2>
|
|
107
|
+
|
|
108
|
+
<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
|
|
109
|
+
a particular constraint of Windows Explorer. For legacy reasons, some Windows applications, including most notably Windows Explorer,
|
|
110
|
+
have a maximum number of characters allowed in a path of 260 characters. As mountebank writes these words, the longest path he
|
|
111
|
+
includes in the zip files is around 175 characters. The zip file name, which is likely to represent itself as <i>two</i>
|
|
112
|
+
nested directories if you use the defaults to unzip it, will be around 25 characters. That gives you very little wiggle room.
|
|
113
|
+
If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>
|
|
114
|
+
|
|
115
|
+
<p>The following solutions will all work:</p>
|
|
116
|
+
|
|
117
|
+
<ul class='bullet-list'>
|
|
118
|
+
<li>Unzip to the root of your C: drive (or a similar small path)</li>
|
|
119
|
+
<li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
|
|
120
|
+
<li>Use <code>npm</code> to install mountebank instead of the zip file</li>
|
|
121
|
+
</ul>
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<h1>v<%= releaseVersion %></h1>
|
|
2
|
+
|
|
3
|
+
<p>v1.9 adds some really nice features and fixes important bugs. Thanks for all the help
|
|
4
|
+
getting it across the line.</p>
|
|
5
|
+
|
|
6
|
+
<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
|
|
7
|
+
<a href='http://www.mbtest.dev/feed'>ATOM feed</a>.</p>
|
|
8
|
+
|
|
9
|
+
<h2>New Features</h2>
|
|
10
|
+
<ul class='bullet-list'>
|
|
11
|
+
<li>Added a new <a href='http://<%= host %>/docs/api/behaviors'><code>lookup</code></a>
|
|
12
|
+
behavior that allows you to add data in the response that comes from an external data source.
|
|
13
|
+
Initially, a CSV file is the only data source supported.</li>
|
|
14
|
+
<li>Added an ability to add a decorator to the newly created response saved through
|
|
15
|
+
a <a href='http://<%= host %>/docs/api/proxies'><code>proxy</code></a> response type with
|
|
16
|
+
the <code>addDecorate</code> field.</li>
|
|
17
|
+
<li>Support for stateful predicate injections based on response injections changing state.
|
|
18
|
+
An <code>imposterState</code> parameter has been added to each injection function.</li>
|
|
19
|
+
<li>A few new FAQs based on common queries around npm shrinkwrap, CORS pre-flight requests,
|
|
20
|
+
and preventing proxies from compressing data.</li>
|
|
21
|
+
</ul>
|
|
22
|
+
|
|
23
|
+
<h2>Bug Fixes</h2>
|
|
24
|
+
<ul class='bullet-list'>
|
|
25
|
+
<li>The default self-signed certificate for https imposters is no longer expired</li>
|
|
26
|
+
<li>Fixed content-length issues with binary data coming from proxied results</li>
|
|
27
|
+
<li>Fixed a bug preventing you from seeing the _links field in your imposter body when
|
|
28
|
+
getting the imposter state through the API</li>
|
|
29
|
+
</ul>
|
|
30
|
+
|
|
31
|
+
<p>Many thanks to the following kind folks for help with this release, either through bug reports,
|
|
32
|
+
suggestions, or direct code contributions:</p>
|
|
33
|
+
|
|
34
|
+
<ul class='bullet-list'>
|
|
35
|
+
<li>Stephen Tkac and team, for the suggestion and initial implementation of the <code>lookup</code> behavior</li>
|
|
36
|
+
<li>Kevin Pouget for adding support to decorate saved responses from proxies</li>
|
|
37
|
+
<li>Gabriel Kohen for adding support for stateful injections to use in predicates</li>
|
|
38
|
+
<li>Adam Kalman for helping </li>
|
|
39
|
+
</ul>
|
|
40
|
+
|
|
41
|
+
<h2>Install</h2>
|
|
42
|
+
|
|
43
|
+
<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>
|
|
44
|
+
|
|
45
|
+
<p>or:</p>
|
|
46
|
+
|
|
47
|
+
<table>
|
|
48
|
+
<tr>
|
|
49
|
+
<th>Option</th>
|
|
50
|
+
<th>node.js required?</th>
|
|
51
|
+
<th>sudo required?</th>
|
|
52
|
+
<th>links</th>
|
|
53
|
+
<th>Description</th>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<td>Self-contained archives</td>
|
|
57
|
+
<td>No</td>
|
|
58
|
+
<td>No</td>
|
|
59
|
+
<td style="min-width: 5em;">
|
|
60
|
+
<ul>
|
|
61
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
|
|
62
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
|
|
63
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
|
|
64
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
|
|
65
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
|
|
66
|
+
</ul>
|
|
67
|
+
</td>
|
|
68
|
+
<td>Simply unpack and run <code>mb</code> from inside</td>
|
|
69
|
+
</tr>
|
|
70
|
+
<tr>
|
|
71
|
+
<td>OS-specific packages</td>
|
|
72
|
+
<td>No</td>
|
|
73
|
+
<td>Yes</td>
|
|
74
|
+
<td>
|
|
75
|
+
<ul>
|
|
76
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
|
|
77
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
|
|
78
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
|
|
79
|
+
</ul>
|
|
80
|
+
</td>
|
|
81
|
+
<td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
|
|
82
|
+
</tr>
|
|
83
|
+
<tr>
|
|
84
|
+
<td>source tarball</td>
|
|
85
|
+
<td>Yes</td>
|
|
86
|
+
<td>No</td>
|
|
87
|
+
<td>
|
|
88
|
+
<ul>
|
|
89
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
|
|
90
|
+
</ul>
|
|
91
|
+
</td>
|
|
92
|
+
<td>source tarball if you roll that way.</td>
|
|
93
|
+
</tr>
|
|
94
|
+
</table>
|
|
95
|
+
|
|
96
|
+
<h2 id='windows-path-limitations'>Windows path limitations</h2>
|
|
97
|
+
|
|
98
|
+
<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
|
|
99
|
+
a particular constraint of Windows Explorer. For legacy reasons, some Windows applications, including most notably Windows Explorer,
|
|
100
|
+
have a maximum number of characters allowed in a path of 260 characters. As mountebank writes these words, the longest path he
|
|
101
|
+
includes in the zip files is around 175 characters. The zip file name, which is likely to represent itself as <i>two</i>
|
|
102
|
+
nested directories if you use the defaults to unzip it, will be around 25 characters. That gives you very little wiggle room.
|
|
103
|
+
If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>
|
|
104
|
+
|
|
105
|
+
<p>The following solutions will all work:</p>
|
|
106
|
+
|
|
107
|
+
<ul class='bullet-list'>
|
|
108
|
+
<li>Unzip to the root of your C: drive (or a similar small path)</li>
|
|
109
|
+
<li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
|
|
110
|
+
<li>Use <code>npm</code> to install mountebank instead of the zip file</li>
|
|
111
|
+
</ul>
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
<h1>v<%= releaseVersion %></h1>
|
|
2
|
+
|
|
3
|
+
<p><em>I'm sorry. Did you say <strong>v2</strong>?</em></p>
|
|
4
|
+
|
|
5
|
+
<h2>Yes. v2! (It's been five years, after all)</h2>
|
|
6
|
+
|
|
7
|
+
<p><em>Oh dear. How much time is it going to take me to "upgrade" my code?</em></p>
|
|
8
|
+
|
|
9
|
+
<h2>None. v2 is 100% backwards compatible with v1</h2>
|
|
10
|
+
|
|
11
|
+
<p><em>Wait, what? Then why did you bump the major version?</em></p>
|
|
12
|
+
|
|
13
|
+
<h2>Because v2 is Yuge!</h2>
|
|
14
|
+
|
|
15
|
+
<p>This release opens all kinds of exciting doors.</p>
|
|
16
|
+
|
|
17
|
+
<p>See below for details, but there are three major reasons to upgrade.</p>
|
|
18
|
+
|
|
19
|
+
<ul class='bullet-list'>
|
|
20
|
+
<li>You can now create custom protocol implementations in any language of your choice.</li>
|
|
21
|
+
<li>The injection interface changed <em style='font-size: smaller'>(don't worry, you can
|
|
22
|
+
still use the old interface if you like. I'm not rude, after all).</em></li>
|
|
23
|
+
<li>I fixed an embarrassing security flaw in all v1 versions using
|
|
24
|
+
<code>--localOnly</code> and <code>--ipWhitelist</code> CLI flags.</li>
|
|
25
|
+
</ul>
|
|
26
|
+
|
|
27
|
+
<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
|
|
28
|
+
<a href='http://www.mbtest.dev/feed'>ATOM feed</a>.</p>
|
|
29
|
+
|
|
30
|
+
<h2>New Features</h2>
|
|
31
|
+
<ul class='bullet-list'>
|
|
32
|
+
<li>The biggest change is how protocol implementations work. In all v1 versions, they worked, but
|
|
33
|
+
adding a new one was difficult because of some unfortunate early design decisions. Those decisions
|
|
34
|
+
have been painstakingly reversed. You can now add a
|
|
35
|
+
<a href='//<%= host %>/docs/protocols/custom'>custom protocol</a> in any language with a very
|
|
36
|
+
simply API to talk back to the mountebank server. The protocol implementation will show in the logs
|
|
37
|
+
no differently than a built-in protocol implementation like <code>http</code>, but will be out
|
|
38
|
+
of process to mountebank itself. You tell mountebnak about your custom implementation with the
|
|
39
|
+
new <a href='//<%= host %>/docs/commandLine'><code>--protofile</code></a> command line flag.
|
|
40
|
+
|
|
41
|
+
This is Yuge!
|
|
42
|
+
</li>
|
|
43
|
+
<li>Over time, the <a href='//<%= host %>/docs/api/injection'>injection functions</a> took on new parameters.
|
|
44
|
+
This was unfortunate because it became
|
|
45
|
+
difficult to remember the order of the parameters and because there were actually two different types
|
|
46
|
+
of <code>state</code> parameters passed into the response injection function (I never documented one. The
|
|
47
|
+
documented one did not share state with predicates; the undocumented one did). While you can continue
|
|
48
|
+
to use the old interface, the new interface is much cleaner, accepting a single JSON parameter that
|
|
49
|
+
contains all relevant information. That interface now cleanly shares state between predicate and response
|
|
50
|
+
injection and allows for much easier evolution of injection functions (including adding async capability
|
|
51
|
+
to predicate injection and <a href='//<%= host %>/docs/api/behaviors#behavior-decorate'>decorate behaviors</a>).</li>
|
|
52
|
+
|
|
53
|
+
</ul>
|
|
54
|
+
|
|
55
|
+
<h2>Bug Fixes</h2>
|
|
56
|
+
<ul class='bullet-list'>
|
|
57
|
+
<li>Injection is useful but <a href='//<%= host %>/docs/security'>dangerous</a>, and you should ALWAYS take steps
|
|
58
|
+
to secure yourself from attackers using an injection-enabled mountebank. The easiest way to do that is with
|
|
59
|
+
the <a href='//<%= host %>/docs/commandLine'><code>--localOnly</code></a> CLI flag, which limits all connections
|
|
60
|
+
to the loopback interface (e.g., localhost). You should ALWAYS do that when running mountebank directly on your
|
|
61
|
+
developer machine, and use the <code>--ipWhitelist</code> flag in other scenarios.
|
|
62
|
+
|
|
63
|
+
Unfortunately, neither of these flags worked in v1. I'm sorry. That's an embarrassing security vulnerability.
|
|
64
|
+
They are both verified by a series of automated tests now, and verified to work with both the mountebank server itself
|
|
65
|
+
and all imposter sockets.
|
|
66
|
+
</li>
|
|
67
|
+
<li>The result from <code>GET /imposters/:port?replayable=true</code> now returns the value of
|
|
68
|
+
<code>recordRequests</code>.</li>
|
|
69
|
+
<li>Setting the <code>--mock</code> CLI flag no longer changes the imposter-level value of <code>recordRequests</code></li>
|
|
70
|
+
<li>The <code>--host</code> command line flag wasn't being reflected in the logs or mountebank URLs, and it
|
|
71
|
+
wasn't applying to imposters.</li>
|
|
72
|
+
<li>The <a href='//<%= host %>/docs/protocols/tcp'>tcp protocol page</a> took way too long to load due to page weight
|
|
73
|
+
(there is an embedded test on the page that required the page weight). That has been fixed.</li>
|
|
74
|
+
<li>The TCP proxy now respects the <a href='//<%= host %>/docs/protocols/tcp'><code>endOfRequestResolver</code></a></li>
|
|
75
|
+
<li>HTTP/S servers no longer time out if a <code>wait</code> behavior was set to more than about 2 minutes</li>
|
|
76
|
+
<li>JSON bodies with <code>nulls</code> now work with <code>copy</code> behaviors</li>
|
|
77
|
+
<li>SMTP now works with an empty <code>text</code> field</li>
|
|
78
|
+
</ul>
|
|
79
|
+
|
|
80
|
+
<h2>Contributors</h2>
|
|
81
|
+
<p>Many thanks to the following kind folks for help with this release, either through bug reports,
|
|
82
|
+
suggestions, or direct code contributions:</p>
|
|
83
|
+
|
|
84
|
+
<ul class='bullet-list'>
|
|
85
|
+
<li>Aleksandar "Bearclaw" Serifimoski</li>
|
|
86
|
+
<li>Santiago Vasquez</li>
|
|
87
|
+
</ul>
|
|
88
|
+
|
|
89
|
+
<h2>Install</h2>
|
|
90
|
+
|
|
91
|
+
<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>
|
|
92
|
+
|
|
93
|
+
<p>or:</p>
|
|
94
|
+
|
|
95
|
+
<table>
|
|
96
|
+
<tr>
|
|
97
|
+
<th>Option</th>
|
|
98
|
+
<th>node.js required?</th>
|
|
99
|
+
<th>sudo required?</th>
|
|
100
|
+
<th>links</th>
|
|
101
|
+
<th>Description</th>
|
|
102
|
+
</tr>
|
|
103
|
+
<tr>
|
|
104
|
+
<td>Self-contained archives</td>
|
|
105
|
+
<td>No</td>
|
|
106
|
+
<td>No</td>
|
|
107
|
+
<td style="min-width: 5em;">
|
|
108
|
+
<ul>
|
|
109
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
|
|
110
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
|
|
111
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
|
|
112
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
|
|
113
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
|
|
114
|
+
</ul>
|
|
115
|
+
</td>
|
|
116
|
+
<td>Simply unpack and run <code>mb</code> from inside</td>
|
|
117
|
+
</tr>
|
|
118
|
+
<tr>
|
|
119
|
+
<td>OS-specific packages</td>
|
|
120
|
+
<td>No</td>
|
|
121
|
+
<td>Yes</td>
|
|
122
|
+
<td>
|
|
123
|
+
<ul>
|
|
124
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
|
|
125
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
|
|
126
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
|
|
127
|
+
</ul>
|
|
128
|
+
</td>
|
|
129
|
+
<td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
|
|
130
|
+
</tr>
|
|
131
|
+
<tr>
|
|
132
|
+
<td>source tarball</td>
|
|
133
|
+
<td>Yes</td>
|
|
134
|
+
<td>No</td>
|
|
135
|
+
<td>
|
|
136
|
+
<ul>
|
|
137
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
|
|
138
|
+
</ul>
|
|
139
|
+
</td>
|
|
140
|
+
<td>source tarball if you roll that way.</td>
|
|
141
|
+
</tr>
|
|
142
|
+
</table>
|
|
143
|
+
|
|
144
|
+
<h2 id='windows-path-limitations'>Windows path limitations</h2>
|
|
145
|
+
|
|
146
|
+
<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
|
|
147
|
+
a particular constraint of Windows Explorer. For legacy reasons, some Windows applications, including most notably Windows Explorer,
|
|
148
|
+
have a maximum number of characters allowed in a path of 260 characters. As mountebank writes these words, the longest path he
|
|
149
|
+
includes in the zip files is around 175 characters. The zip file name, which is likely to represent itself as <i>two</i>
|
|
150
|
+
nested directories if you use the defaults to unzip it, will be around 25 characters. That gives you very little wiggle room.
|
|
151
|
+
If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>
|
|
152
|
+
|
|
153
|
+
<p>The following solutions will all work:</p>
|
|
154
|
+
|
|
155
|
+
<ul class='bullet-list'>
|
|
156
|
+
<li>Unzip to the root of your C: drive (or a similar small path)</li>
|
|
157
|
+
<li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
|
|
158
|
+
<li>Use <code>npm</code> to install mountebank instead of the zip file</li>
|
|
159
|
+
</ul>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<h1>v<%= releaseVersion %></h1>
|
|
2
|
+
|
|
3
|
+
<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
|
|
4
|
+
<a href='http://www.mbtest.dev/feed'>ATOM feed</a>.</p>
|
|
5
|
+
|
|
6
|
+
<h2>New Features</h2>
|
|
7
|
+
<ul class='bullet-list'>
|
|
8
|
+
<li>Support mutating stubs without restarting the imposter. See the
|
|
9
|
+
<a href='//<%= host %>/docs/api/overview'>API overview page</a> for details on the new
|
|
10
|
+
API calls.</li>
|
|
11
|
+
<li>Support using <a href='//<%= host %>/docs/api/proxies#proxy-predicate-generators'>injection to generate predicates</a>
|
|
12
|
+
during proxying.</li>
|
|
13
|
+
<li>Support adding a passphrase when proxying to HTTPS servers.
|
|
14
|
+
See the <a href='//<%= host %>/docs/api/contracts?type=imposter'><code>passphrase</code></a> field
|
|
15
|
+
in the updated contract</li>
|
|
16
|
+
<li>Support selecting the TLS protocol to use for legacy integrations when proxying to HTTPS servers.
|
|
17
|
+
See the <a href='//<%= host %>/docs/api/contracts?type=imposter'><code>secureProtocol</code></a> field
|
|
18
|
+
in the updated contract</li>
|
|
19
|
+
</ul>
|
|
20
|
+
|
|
21
|
+
<h2>Bug Fixes</h2>
|
|
22
|
+
<ul class='bullet-list'>
|
|
23
|
+
<li>Inner quotes were not correctly escaped on <code>shellTransform</code> behaviors. Passing the request
|
|
24
|
+
and response JSON on the command line proved to be difficult in a cross-platform way. The interface now
|
|
25
|
+
passes environment variables instead. The old interface is maintained for backwards compatibility, but only
|
|
26
|
+
the environment variables guarantee correct quoting. See the
|
|
27
|
+
<a href='//<%= host %>/docs/api/behaviors#behavior-shellTransform'>updated docs</a>.</li>
|
|
28
|
+
<li>Fix improper mangling on binary HTTP request bodies.</li>
|
|
29
|
+
<li>No longer rewrites empty query params without a value during proxying (previously,
|
|
30
|
+
https://server.example.com/service?WSDL was rewritten to https://server.example.com/service?WSDL=)</li>
|
|
31
|
+
<li>Removed a dependency with a restrictive EUPL license (changed mailparser to mailparser2 for a more
|
|
32
|
+
permissive license)</li>
|
|
33
|
+
<li>Fix parsing application/x-www-form-urlencoded request body when its content-type header name is in lowercase</li>
|
|
34
|
+
<li>Preventing "except" parameter from modifying "matches" predicate pattern</li>
|
|
35
|
+
</ul>
|
|
36
|
+
|
|
37
|
+
<h2>Contributors</h2>
|
|
38
|
+
<p>Many thanks to the following kind folks for help with this release, either through bug reports,
|
|
39
|
+
suggestions, or direct code contributions:</p>
|
|
40
|
+
|
|
41
|
+
<ul class='bullet-list'>
|
|
42
|
+
<li>Connor Worley</li>
|
|
43
|
+
<li>Pavel Yaschenko</li>
|
|
44
|
+
<li>Colin Schoen</li>
|
|
45
|
+
<li>O</li>
|
|
46
|
+
<li>Authapon Kongkaew</li>
|
|
47
|
+
<li>Colin Newell</li>
|
|
48
|
+
<li>Scott Bloch-Wehba-Seaward</li>
|
|
49
|
+
</ul>
|
|
50
|
+
|
|
51
|
+
<h2>Install</h2>
|
|
52
|
+
|
|
53
|
+
<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>
|
|
54
|
+
|
|
55
|
+
<p>or:</p>
|
|
56
|
+
|
|
57
|
+
<table>
|
|
58
|
+
<tr>
|
|
59
|
+
<th>Option</th>
|
|
60
|
+
<th>node.js required?</th>
|
|
61
|
+
<th>sudo required?</th>
|
|
62
|
+
<th>links</th>
|
|
63
|
+
<th>Description</th>
|
|
64
|
+
</tr>
|
|
65
|
+
<tr>
|
|
66
|
+
<td>Self-contained archives</td>
|
|
67
|
+
<td>No</td>
|
|
68
|
+
<td>No</td>
|
|
69
|
+
<td style="min-width: 5em;">
|
|
70
|
+
<ul>
|
|
71
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
|
|
72
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
|
|
73
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
|
|
74
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
|
|
75
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
|
|
76
|
+
</ul>
|
|
77
|
+
</td>
|
|
78
|
+
<td>Simply unpack and run <code>mb</code> from inside</td>
|
|
79
|
+
</tr>
|
|
80
|
+
<tr>
|
|
81
|
+
<td>OS-specific packages</td>
|
|
82
|
+
<td>No</td>
|
|
83
|
+
<td>Yes</td>
|
|
84
|
+
<td>
|
|
85
|
+
<ul>
|
|
86
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
|
|
87
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
|
|
88
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
|
|
89
|
+
</ul>
|
|
90
|
+
</td>
|
|
91
|
+
<td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
|
|
92
|
+
</tr>
|
|
93
|
+
<tr>
|
|
94
|
+
<td>source tarball</td>
|
|
95
|
+
<td>Yes</td>
|
|
96
|
+
<td>No</td>
|
|
97
|
+
<td>
|
|
98
|
+
<ul>
|
|
99
|
+
<li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
|
|
100
|
+
</ul>
|
|
101
|
+
</td>
|
|
102
|
+
<td>source tarball if you roll that way.</td>
|
|
103
|
+
</tr>
|
|
104
|
+
</table>
|
|
105
|
+
|
|
106
|
+
<h2 id='windows-path-limitations'>Windows path limitations</h2>
|
|
107
|
+
|
|
108
|
+
<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
|
|
109
|
+
a particular constraint of Windows Explorer. For legacy reasons, some Windows applications, including most notably Windows Explorer,
|
|
110
|
+
have a maximum number of characters allowed in a path of 260 characters. As mountebank writes these words, the longest path he
|
|
111
|
+
includes in the zip files is around 175 characters. The zip file name, which is likely to represent itself as <i>two</i>
|
|
112
|
+
nested directories if you use the defaults to unzip it, will be around 25 characters. That gives you very little wiggle room.
|
|
113
|
+
If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>
|
|
114
|
+
|
|
115
|
+
<p>The following solutions will all work:</p>
|
|
116
|
+
|
|
117
|
+
<ul class='bullet-list'>
|
|
118
|
+
<li>Unzip to the root of your C: drive (or a similar small path)</li>
|
|
119
|
+
<li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
|
|
120
|
+
<li>Use <code>npm</code> to install mountebank instead of the zip file</li>
|
|
121
|
+
</ul>
|