🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

chai-http

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chai-http

Extend Chai Assertion library with tests for http apis

5.1.2
latest
Source
npm
Version published
Weekly downloads
270K
-20.58%
Maintainers
1
Weekly downloads
 
Created

What is chai-http?

chai-http is a plugin for the Chai assertion library that provides an interface for testing HTTP APIs. It allows you to make HTTP requests and assertions about the responses, making it useful for testing RESTful APIs and other web services.

What are chai-http's main functionalities?

Making HTTP Requests

This feature allows you to make HTTP requests to your server. In this example, a GET request is made to the '/api/resource' endpoint, and assertions are made about the response status and body.

const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../app'); // Your server file
const should = chai.should();

chai.use(chaiHttp);

describe('GET /api/resource', () => {
  it('it should GET all the resources', (done) => {
    chai.request(server)
        .get('/api/resource')
        .end((err, res) => {
            res.should.have.status(200);
            res.body.should.be.a('array');
            done();
        });
  });
});

Testing POST Requests

This feature allows you to test POST requests. In this example, a POST request is made to the '/api/resource' endpoint with a sample resource object, and assertions are made about the response status and body.

const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../app'); // Your server file
const should = chai.should();

chai.use(chaiHttp);

describe('POST /api/resource', () => {
  it('it should POST a new resource', (done) => {
    let resource = {
      name: 'Sample Resource',
      description: 'This is a sample resource'
    }
    chai.request(server)
        .post('/api/resource')
        .send(resource)
        .end((err, res) => {
            res.should.have.status(201);
            res.body.should.be.a('object');
            res.body.should.have.property('name').eql('Sample Resource');
            done();
        });
  });
});

Testing PUT Requests

This feature allows you to test PUT requests. In this example, a PUT request is made to the '/api/resource/:id' endpoint to update an existing resource, and assertions are made about the response status and body.

const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../app'); // Your server file
const should = chai.should();

chai.use(chaiHttp);

describe('PUT /api/resource/:id', () => {
  it('it should UPDATE a resource given the id', (done) => {
    let resource = new Resource({name: 'Old Resource', description: 'Old description'});
    resource.save((err, resource) => {
      chai.request(server)
          .put('/api/resource/' + resource.id)
          .send({name: 'Updated Resource', description: 'Updated description'})
          .end((err, res) => {
              res.should.have.status(200);
              res.body.should.be.a('object');
              res.body.should.have.property('name').eql('Updated Resource');
              done();
          });
    });
  });
});

Testing DELETE Requests

This feature allows you to test DELETE requests. In this example, a DELETE request is made to the '/api/resource/:id' endpoint to delete an existing resource, and assertions are made about the response status and body.

const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../app'); // Your server file
const should = chai.should();

chai.use(chaiHttp);

describe('DELETE /api/resource/:id', () => {
  it('it should DELETE a resource given the id', (done) => {
    let resource = new Resource({name: 'Resource to be deleted', description: 'This resource will be deleted'});
    resource.save((err, resource) => {
      chai.request(server)
          .delete('/api/resource/' + resource.id)
          .end((err, res) => {
              res.should.have.status(200);
              res.body.should.be.a('object');
              res.body.should.have.property('message').eql('Resource successfully deleted');
              done();
          });
    });
  });
});

Other packages similar to chai-http

Keywords

chai

FAQs

Package last updated on 02 May 2025

Did you know?

Socket

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