mirror of
https://github.com/eggjs/egg.git
synced 2024-12-04 07:14:30 +00:00
Show who define the property of the config Closes https://github.com/eggjs/egg/issues/1132
65 lines
1.6 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|