strapi/test/response/attachment.js
2015-10-01 00:30:16 +02:00

55 lines
1.7 KiB
JavaScript
Executable File

'use strict';
const request = require('supertest');
const strapi = require('../..');
const context = require('../helpers/context');
describe('ctx.attachment([filename])', function () {
describe('when given a filename', function () {
it('should set the filename param', function () {
const ctx = context();
ctx.attachment('path/to/tobi.png');
const str = 'attachment; filename="tobi.png"';
ctx.response.header['content-disposition'].should.equal(str);
});
});
describe('when omitting filename', function () {
it('should not set filename param', function () {
const ctx = context();
ctx.attachment();
ctx.response.header['content-disposition'].should.equal('attachment');
});
});
describe('when given a no-ascii filename', function () {
it('should set the encodeURI filename param', function () {
const ctx = context();
ctx.attachment('path/to/include-no-ascii-char-中文名-ok.png');
const str = 'attachment; filename=\"include-no-ascii-char-???-ok.png\"; filename*=UTF-8\'\'include-no-ascii-char-%E4%B8%AD%E6%96%87%E5%90%8D-ok.png';
ctx.response.header['content-disposition'].should.equal(str);
});
it('should work with http client', function (done) {
const app = strapi.server();
app.use(function * () {
this.attachment('path/to/include-no-ascii-char-中文名-ok.json');
this.body = {
foo: 'bar'
};
});
request(app.listen())
.get('/')
.expect('content-disposition', 'attachment; filename="include-no-ascii-char-???-ok.json"; filename*=UTF-8\'\'include-no-ascii-char-%E4%B8%AD%E6%96%87%E5%90%8D-ok.json')
.expect({
foo: 'bar'
})
.expect(200, done);
});
});
});