Socket
Socket
Sign inDemoInstall

node-fetch-response-matchers

Package Overview
Dependencies
2
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    node-fetch-response-matchers

Chai asserts for node-fetch response promise, make your tests with http more declarative


Version published
Weekly downloads
322
decreased by-17.22%
Maintainers
1
Install size
65.6 kB
Created
Weekly downloads
 

Readme

Source

node-fetch-response-matchers

Build Status

Chai plugin with matchers for node-fetch promise response. It helps the tests to be more declarative.

TL;DR

  • This lib gives you a declarative way to assert fetch response, Also it hides the promises and their callbacks noise:
   it('some-test', function(){
     return expect(fetch('http://localhost/')).to.be.successful()
                            .and.to.haveBodyText('foo');

   });
  • If you are not using this lib it becomes very verbose:
   it('some-test', function(done){
      fetch('http://localhost/')
         .then(res => {
            expect(res.status).to.equal(200);
            return res.text();
         }).then(text => {
            expect(text).to.equal('foo');
            done();
         })
   });

Install (for dev only - used by tests)

$ npm install --save-dev node-fetch-response-matchers

Usage example


const nodeFetchMatchers = require('node-fetch-response-matchers');
const fetch = require('node-fetch');
const chai = require('chai');

chai.use(nodeFetchMatchers);

describe('test suite', function(){
    it('http success test', function(){
        return expect(fetch('http://localhost/')).to.be.successful();
    });
    it('and', function(){
          return expect(fetch('http://localhost/')).to.be.successful()
                                                    .and.haveBodyText('foo');
    });
});

Chai native plugin

You can all use chai "not"

   it('not', function(){
      return expect(fetch('http://localhost/')).to.not.be.successful();
   });

Status matchers

   it('http success test', function(){
      return expect(fetch('http://localhost/')).to.be.successful();
   });
   it('http status assert', function(){
        return expect(fetch('http://localhost/')).to.haveStatus(500);
   });
Full status matchers list
API functionparamsdescription
successful()()Assert that the status is 200 OK
created()()Assert that the status is 201
badRequest()()Assert that the status is 400
unauthorized()()Assert that the status is 401
rejected()()Assert that the status is 403
notFound()()Assert that the status is 404
serverError()()Assert that the status is 500
serviceUnAvailable()()Assert that the status is 503
haveStatus()(status)Assert that the status is provided number argument

Body matchers

   it('have body object', () => {
     return expect(fetch('http://localhost/').to.haveBodyObject({foo: 'bar'});
   });
Full body matchers list
API functionparamsdescription
haveBodyObject()(obj)Assert equal provided object
haveBodyText()(text)Assert equal provided string text
haveBodyBuffer()(Buffer)Assert equal provided Node Buffer
haveBodyRegexpMatch()(regexp)Assert match body on regular expression
haveBodyThat()(predicate(text))Assert match body on provided function predicate on the text

Header matchers

   it('have header', () => {
     return expect(fetch('http://localhost/').to.haveHeader('connection', 'close');
   });
Headers matchers list
API functionparamsdescription
haveHeader()(name, value)Assert that response contains header by provided name and value
headerExists()(name)Assert that response contains header by provided name
haveHeaderThat()(name, predicate(value))Assert that header with given name have true on the value for a given predicate
haveHeaders()(headersMap)Assert that given key-value headers are exists in headers response
   it('have cookie', () => {
     return expect(fetch('http://localhost/').to.haveCookie('foo', 'bar');
   });
API functionparamsdescription
haveCookieByName()(name)Assert that cookie by name is written to the response
haveCookie()(name, value)Assert that cookie by name and value is written to the response
haveCookieThat()(name, predicate(cookie))Assert that cookie by name and match given predicate on cookie properties

Cache control response matchers

   it('must-revalidate', () => {
     return expect(fetch('http://localhost/').to.have.cacheControlMustRevalidate();
   });
   it('max-age', () => {
        return expect(fetch('http://localhost/').to.have.cacheControlmMaxAge(120);
   });
cache control full matchers list
API functionparams
cacheControlMustRevalidate()()
cacheControlNoCache()()
cacheControlNoStore()()
cacheControlNoTransform()()
cacheControlPublic()()
cacheControlPrivate()()
cacheControlProxyMaxRevalidate()
cacheControlmMaxAge()(age-in-sec)
cacheControlSMaxAge()(age-in-sec)

Keywords

FAQs

Last updated on 09 Oct 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc