You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

@single9/api-tester

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@single9/api-tester

Api Tester

0.1.10
latest
Source
npmnpm
Version published
Weekly downloads
1
-85.71%
Maintainers
1
Weekly downloads
 
Created
Source

Api Tester

A RESTful API tester

Installation

npm i @single9/api-tester

Usage

const ApiTester = require('@single9/api-tester');

Create APIs

const api = new ApiTester([
  {
    name: '<Api Name>',       // only allow certain words and digits
    path: '<Api Path>',       // e.g. /api/posts
    method: '<HTTP Method>',  // e.g. post
  },
], {
  rootUrl: '<API root URL>'   // e.g. https://jsonplaceholder.typicode.com
                              // Default: http://localhost:3000
  showResult: true,           // set false to disable results console log
  headers: {
    // The headers you want to send. e.g. 'authorization': 'Bearer SAdoweasd...',
  },
  auth: { // authorization
    username: 'username',
    password: 'password',
  }
})

Use Your Api

Usage

ApiTester.<your_api_name>(params)
  • params
    • queryString
    • pathParams
    • body
    • uploads
    • tester

params.queryString

Used for query string. e.g. /users?limit=100

api.test({
  queryString: {
    key: value
  }
})
api.test({
  queryString: [
    {
      name: string,
      value: string | number,
    }
  ]
})

params.pathParams

Used for path parameters. e.g. /user/:id

api.test({
  pathParams: {
    key: value
  }
})
api.test({
  pathParams: [
    {
      name: string,
      value: string | number,
    }
  ]
})

params.body

Used for request body.

api.test({
  body: {
    key: value
  }
})

params.uploads

Used for upload files.

api.test({
  uploads: [
    {
      fieldName: '<form feild name>',
      path: '<file path>'
      filename?: '<file name>',
    }
  ]
})

params.tester

Do some test after responded.

api.test({
  tester: function (res) {
    assert(res === string);
  }
})

Example

const api = new ApiTester([
  {
    name: 'getPosts',
    path: '/api/posts',
    method: 'get',
  },
], {
  showResult: true            // set false to disable results console log
});

api.getPosts()
  .then(result => console.log(result))
  .catch(err => console.error(err))

Upload File

ApiTester.Apis.<ApiName>({
  uploads: [
    fieldName: '<Form Field Name>',
    path: '<File Path>',
    filename: '<File Name>',
  ]
})
const path = require('path');
const api = new ApiTester([
  {
    name: 'uploadFile',
    path: '/api/upload',
    method: 'post',
  },
], {
  showResult: true            // set false to disable results console log
});

const filePath = path.join(__dirname, 'image.jpg'),

api.uploadFile({
    uploads: [
      fieldName: 'file',
      path: filePath,
      filename: path.basename(filePath),
    ]
  })
  .then(result => console.log(result))
  .catch(err => console.error(err))

Example

const assert = require('assert').strict;
const ApiTester = require('@single9/api-tester');

// Create your API schema
const schema = [
  {
    name: 'newPost',  // this is your api function name
    path: '/posts',
    method: 'post',
  },
  {
    name: 'getTodo',
    path: '/todos/:todoId',  // path parameter
    method: 'get',
  },
];

const api = new ApiTester(schema, {
  rootUrl: 'https://jsonplaceholder.typicode.com',
  showResult: true
});

async function start() {
  try {
    await api.newPost({
      // Post Body
      body: {
        title: 'foo!!!!!!',
        body: 'bar!!',
        userId: 1
      },
      // Tester
      tester: function(resp) {
        assert.equal(typeof(resp.id), 'number');
      }
    });

    await api.getTodo({
      pathParams: [{
        name: 'todoId', // replace `:todoId` in path
        value: 2
      }],
      tester: function(resp) {
        assert.equal(typeof(resp.title), 'string');
      }
    });
    
  } catch (err) {
    console.error(err);
  }
}

start();

Keywords

restful

FAQs

Package last updated on 21 Oct 2021

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