egg/test/lib/plugins/multipart.test.js
Haoliang Gao 74c8a547cc feat: dump run/${type}_config_meta.json (#1155)
Show who define the property of the config

Closes https://github.com/eggjs/egg/issues/1132
2017-07-05 09:16:10 +08:00

65 lines
1.6 KiB
JavaScript

'use strict';
const request = require('supertest');
const assert = require('assert');
const formstream = require('formstream');
const urllib = require('urllib');
const utils = require('../../utils');
describe('test/lib/plugins/multipart.test.js', () => {
let app;
let csrfToken;
let cookies;
let host;
let server;
before(() => {
app = utils.app('apps/multipart');
return app.ready();
});
before(done => {
server = app.listen();
request(server)
.get('/')
.expect(200, (err, res) => {
csrfToken = res.headers['x-csrf'];
cookies = res.headers['set-cookie'].join(';');
host = `http://127.0.0.1:${server.address().port}`;
done(err);
});
});
after(() => {
server.close();
return app.close();
});
it('should upload with csrf', done => {
const form = formstream();
// form.file('file', filepath, filename);
form.file('file', __filename);
// other form fields
form.field('foo', 'fengmk2').field('love', 'egg');
// https://snyk.io/vuln/npm:qs:20170213
form.field('[', 'toString');
const headers = form.headers();
headers.Cookie = cookies;
urllib.request(`${host}/upload?_csrf=${csrfToken}`, {
method: 'POST',
headers,
stream: form,
}, (err, body, res) => {
assert(!err);
assert(res.statusCode === 200);
const data = JSON.parse(body);
assert(data.filename === 'multipart.test.js');
assert.deepEqual(data.fields, {
foo: 'fengmk2',
love: 'egg',
'[': 'toString',
});
done();
});
});
});