1.0.2 • Published 6 years ago

echo.js v1.0.2

Weekly downloads
2
License
ISC
Repository
github
Last release
6 years ago

echo.js

Echo raw http request, for test usage.

Example of using echo.js to test HTTP client

Assuming we have the following HTTP client:

const superagent = require('superagent');

function getPizzas() {
    return superagent.get('http://localhost:8061/api/v1/pizzas');
}

function postPizza() {
    return superagent
        .post('http://localhost:8061/api/v1/pizzas')
        .send({ name: 'margherita' })
        .set('X-API-Key', 'foobar');
}

module.exports = {
    getPizzas,
    postPizza,
};

We can write something like the following to test how we expect this client's requests to look like:

const assert = require('chai').assert;
const client = require('./client');
const { createServer } = require('echo.js');

const server = createServer();
const port = 8061;

server.listen(port, function() {
    /*
    GET /api/v1/pizzas HTTP/1.1
    Host: localhost:8061
    Accept-Encoding: gzip, deflate
    User-Agent: node-superagent/3.8.2
    Connection: close

    */
    const getPizzasPromise = client.getPizzas().then(res => {
        // add assertions, e.g.
        const lines = res.text.split('\n');

        assert.equal(lines[0], 'GET /api/v1/pizzas HTTP/1.1');
    });

    /*
    POST /api/v1/pizzas HTTP/1.1
    Host: localhost:8061
    Accept-Encoding: gzip, deflate
    User-Agent: node-superagent/3.8.2
    Content-Type: application/json
    X-API-Key: foobar
    Content-Length: 21
    Connection: close

    {"name":"margherita"}
    */
    const postPizzasPromise = client.postPizza().then(res => {
        // add assertions, e.g.
        assert.equal(
            res.text,
            [
                'POST /api/v1/pizzas HTTP/1.1',
                'Host: localhost:8061',
                'Accept-Encoding: gzip, deflate',
                'User-Agent: node-superagent/3.8.2',
                'Content-Type: application/json',
                'X-API-Key: foobar',
                'Content-Length: 21',
                'Connection: close',
                '',
                '{"name":"margherita"}',
            ].join('\n'),
        );
    });

    Promise.all([getPizzasPromise, postPizzasPromise])
        .then(() => {
            console.log('All tests pass');
        })
        .catch(err => {
            console.error(err.message);
        })
        .then(() => {
            server.close();
        });
});

The same example can be found in this repo's test directory.

1.0.2

6 years ago

1.0.1

7 years ago

1.0.0

7 years ago