File size: 2,115 Bytes
befd7da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
'use strict';

var assert = require('assert');
var express = require('express');
var bodyParser = require('body-parser');
var request = require('supertest');
var proxy = require('../');

describe('http verbs', function () {
  this.timeout(10000);

  var app;

  beforeEach(function () {
    app = express();
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(proxy('httpbin.org'));
  });

  it('test proxy get', function (done) {
    request(app)
      .get('/get')
      .end(function (err, res) {
        if (err) { return done(err); }
        assert(/httpbin.org/.test(res.body.headers['Host']));
        assert.equal(res.body.url, 'http://httpbin.org/get');
        done(err);
      });
  });

  it('test proxy post', function (done) {
    request(app)
      .post('/post')
      .send({
        mypost: 'hello'
      })
      .end(function (err, res) {
        assert.equal(res.body.data, '{"mypost":"hello"}');
        done(err);
      });
  });

  it('test proxy post by x-www-form-urlencoded', function (done) {
    request(app)
      .post('/post')
      .set('Content-Type', 'application/x-www-form-urlencoded')
      .send('mypost=hello')
      .end(function (err, res) {
        assert.equal(JSON.stringify(res.body.form), '{"mypost":"hello"}');
        done(err);
      });
  });

  it('test proxy put', function (done) {
    request(app)
      .put('/put')
      .send({
        mypost: 'hello'
      })
      .end(function (err, res) {
        assert.equal(res.body.data, '{"mypost":"hello"}');
        done(err);
      });
  });

  it('test proxy patch', function (done) {
    request(app)
      .patch('/patch')
      .send({
        mypost: 'hello'
      })
      .end(function (err, res) {
        assert.equal(res.body.data, '{"mypost":"hello"}');
        done(err);
      });
  });

  it('test proxy delete', function (done) {
    request(app)
      .del('/delete')
      .send({
        mypost: 'hello'
      })
      .end(function (err, res) {
        assert.equal(res.body.data, '{"mypost":"hello"}');
        done(err);
      });
  });
});