bbyars/mountebank

View on GitHub
src/views/docs/communityExtensions.ejs

Summary

Maintainability
Test Coverage
<%
title = 'client libraries'
description = 'Native client libraries for your favorite language'
%>

<%- include('../_header') -%>

<h1>Client Libraries</h1>

<p>While mountebank speaks <a href='/docs/api/overview'>REST</a>, he truly loves your native language
and has no desire to make you learn another language.  If you have a native library you'd like others
to be able to use, please send mountebank a note on the <a href='/support'>support page</a> or through
a pull request to this page and he will add it to the list below.</p>

<p>Some of these are still in their early stages.  Feel free to help the authors out ;></p>

<table>
    <tr>
        <th>Language</th>
        <th>Name</th>
        <th>Author</th>
    </tr>
    <tr>
        <td>C#</td>
        <td><a href='https://github.com/mattherman/MbDotNet'>MbDotNet</a></td>
        <td>Matthew Herman</td>
    </tr>
    <tr>
        <td>Clojure</td>
        <td><a href='https://github.com/mdaley/charlatan'>Charlatan</a></td>
        <td>Matthew Daley</td>
    </tr>
    <tr>
        <td>Delphi</td>
        <td><a href='https://github.com/JamieGeddes/mountebank-delphi'>mountebank-delphi</a></td>
        <td>Jamie Geddes</td>
    </tr>
    <tr>
        <td>F#</td>
        <td><a href='https://github.com/mattherman/MbDotNet.FSharp'>MbDotNet.FSharp</a></td>
        <td>Matthew Herman</td>
    </tr>
    <tr>
        <td rowspan='2'>Go</td>
        <td><a href='https://github.com/durmaze/gobank'>GoBank</a></td>
        <td>Erkan</td>
    </tr>
    <tr>
        <td><a href='https://github.com/senseyeio/mbgo'>mbgo</a></td>
        <td>Senseye</td>
    </tr>
    <tr>
        <td>Java</td>
        <td><a href='https://github.com/thejamesthomas/javabank'>javabank</a></td>
        <td>James Thomas</td>
    </tr>
    <tr>
        <td>JavaScript</td>
        <td><a href='https://www.npmjs.com/package/mountebank-helper'>mountebank-helper</a></td>
        <td>Alex</td>
    </tr>
    <tr>
        <td>Perl</td>
        <td><a href='https://metacpan.org/release/Test-Mountebank'>Test::Mountebank</a></td>
        <td>Dagfinn Reiersøl</td>
    </tr>
    <tr>
        <td rowspan='3'>PHP</td>
        <td><a href="https://github.com/meare/juggler">Juggler</a></td>
        <td>Andrejs Mironovs</td>
    </tr>
    <tr>
        <td><a href='https://github.com/demyan112rv/mountebank-api-php'>mountebank-api-php</a></td>
        <td>Demyanovsky Ruslan</td>
    </tr>
    <tr>
        <td><a href='https://packagist.org/packages/abevallez/mountebank-php'>mountebank-php</a></td>
        <td>Abraham Vallez</td>
    </tr>
    <tr>
        <td rowspan='5'>Python</td>
        <td><a href='https://pypi.python.org/pypi/mountepy'>mountepy</a></td>
        <td>Michał Bultrowicz</td>
    </tr>
    <tr>
        <td><a href='https://github.com/kevinjqiu/py-mountebank'>py-mountebank</a></td>
        <td>Kevin Qiu</td>
    </tr>
    <tr>
        <td><a href='https://pypi.python.org/pypi/mountebank-python'>mountebank-python</a></td>
        <td>Alex Holyoke</td>
    </tr>
    <tr>
        <td><a href='https://pypi.org/project/mbtest'>mbtest</a></td>
        <td>Simon Brunning</td>
    </tr>
    <tr>
        <td><a href='https://pypi.org/project/mounty/'>mounty</a></td>
        <td>Vasile Pop</td>
    </tr>
    <tr>
        <td>Ruby</td>
        <td><a href='https://github.com/CoderKungfu/mountebank-gem'>mountebank-gem</a></td>
        <td>Michael Cheng</td>
    </tr>
    <tr>
        <td>Shell</td>
        <td><a href='https://github.com/sebero/mountebank-sh'>mountebank-sh</a></td>
        <td>Sergi Bech Robleda</td>
    </tr>
    <tr>
        <td>TypeScript</td>
        <td><a href='https://www.npmjs.com/package/@anev/ts-mountebank'>ts-mountebank</a></td>
        <td>Angela Evans</td>
    </tr>
    <tr>
        <td>Swift</td>
        <td><a href='https://github.com/MountebankSwift/MountebankSwift/'>MountebankSwift</a></td>
        <td>Teameh & Mat1th</td>
    </tr>
</table>

<h1>Persistence Stores</h1>

<p>By default, mountebank stores everything in memory, which becomes a performance bottleneck
at scale. The <a href='//docs/commandLine#start'><code>--datadir</code></a> option creates
a local file-based data store, but the community has created (or is creating) more performant
and robust options using first-class databases using the <code>--impostersRepository</code>
command line option.</p>

<table>
    <tr>
        <th>Database</th>
        <th>Name</th>
        <th>Author</th>
    </tr>
    <tr>
        <td>Redis</td>
        <td><a href='https://github.com/eljusto/mountebank-redis-repository'>mountebank-redis-repository</a></td>
        <td>Boris Zhidkov</td>
    </tr>
    <tr>
        <td>Mongo</td>
        <td><a href='https://github.com/ibnc/mountebankMongo'>mountebankMongo</a></td>
        <td>Isabelle Carter (who created the plugin capability)</td>
    </tr>
</table>

<h1>Build Plugins</h1>

<p>Since <code>mb</code> is another process to manage during your build, having a
plugin for your build tool is handy. If you have a plugin, please add it to this page
or let me know about it.</p>

<table>
    <tr>
        <th>Build tool</th>
        <th>Name</th>
        <th>Author</th>
    </tr>
    <tr>
        <td>Grunt</td>
        <td><a href='https://github.com/bbyars/mountebank-grunt'>grunt-mountebank</a></td>
        <td>Brandon Byars</td>
    </tr>
    <tr>
        <td>Gradle</td>
        <td><a href='https://github.com/ndrwdn/mountebank-gradle'>mountebank-gradle</a></td>
        <td>Andrew Dean</td>
    </tr>
    <tr>
        <td>Maven</td>
        <td><a href='https://github.com/thejamesthomas/mountebank-maven-plugin'>mountebank-maven-plugin</a></td>
        <td>James Thomas</td>
    </tr>
</table>

<h2>Build Plugin Implementation Notes</h2>

<p>As of v1.4.3, <code>mb</code> writes the pidfile (mb.pid by default, although it can be overridden on the
    command line) only after it has fully initialized, including binding to the socket and initializing any
    imposters passed in a config file.  You can use this fact to wait for the pidfile creation before returning
    from a build task to guarantee initialization before the next task runs.</p>

<p>Also note that the command to actually run mountebank can vary depending on both the platform and the installation
    package.  To support all options, you will need to dynamically determine the executable command to run.</p>

<p>See the <a href='https://github.com/bbyars/grunt-mountebank/blob/master/tasks/mb.js'>grunt-mountebank code</a>
    that mountebank uses for its build for an example.</p>

<h1>User Interfaces</h1>

<p>The following help drive mountebank through a user interface.</p>

<table>
  <tr>
    <th>Name</th>
    <th>Author</th>
  </tr>
  <tr>
    <td><a href='http://donhenton.github.io/mountebank-UI/public_html/index.html#/'>Mountebank-UI</a></td>
    <td>Don Henton</td>
  </tr>
  <tr>
    <td><a href='https://github.com/Opus-Software/disguise'>Disguise</a></td>
    <td>Opus Software</td>
  </tr>
</table>

<h1>Additional tools</h1>

<p>The following are higher level tools that augment mountebank with additional functionality.</p>

<table>
    <tr>
        <th>Name</th>
        <th>Description</th>
        <th>Author</th>
    </tr>
    <tr>
        <td><a href='https://github.com/DevTestSolutions/TestDoubles'>TestDoubles</a></td>
        <td>Adds cluster support, named REST APIs, persisted request/response pairs, enhanced command
            line interface (CLI), with packaging mechanisms including Node.js, Docker, Vagrant, PM2 etc</td>
        <td>CA Technologies</td>
    </tr>
    <tr>
        <td><a href='https://github.com/Tzinov15/swagger-bank'>swagger-bank</a></td>
        <td>A library to bridge Swagger API specifications and the Mountebank Test-Double tool</td>
        <td>Alex</td>
    </tr>
</table>

<%- include('../_footer') -%>