Commit 06ff0dc6 authored by Vadym Gidulian's avatar Vadym Gidulian

Added `Content-Disposition` header

parent c5517585
{ {
"name": "@gviagroup/release-server-middleware", "name": "@gviagroup/release-server-middleware",
"version": "1.0.0", "version": "1.0.1",
"main": "src/apis/index.js", "main": "src/apis/index.js",
......
...@@ -24,7 +24,9 @@ module.exports = function ({filesDir, tmpFilesDir} = {}) { ...@@ -24,7 +24,9 @@ module.exports = function ({filesDir, tmpFilesDir} = {}) {
const filePath = await releasesModel.getReleaseFilePath({version: req.params.version}); const filePath = await releasesModel.getReleaseFilePath({version: req.params.version});
if (!filePath) return null; if (!filePath) return null;
const info = await releasesModel.getReleaseInfo({version: req.params.version});
req.url = path.relative(releasesModel.FILES_DIR, filePath); req.url = path.relative(releasesModel.FILES_DIR, filePath);
res.set('Content-Disposition', `attachment; filename="${info.fileName}"`);
next(); next();
}); });
const latestHandler = (req, res, next) => { const latestHandler = (req, res, next) => {
......
'use strict'; 'use strict';
const fs = require('fs');
const test = require('ava'); const test = require('ava');
const axios = require('axios'); const axios = require('axios');
const del = require('del');
const FormData = require('form-data'); const FormData = require('form-data');
const mkdirp = require('mkdirp');
const server = require('./_server'); const releasesModel = require('../../src/models/releases')();
const server = require('./_server');
test.serial.before(async () => { test.serial.before(async t => {
del.sync('/files/**', {dot: true, force: true});
mkdirp.sync(releasesModel.TMP_FILES_DIR);
t.deepEqual(fs.readdirSync(releasesModel.FILES_DIR), ['.tmp']);
await server.start(); await server.start();
}); });
...@@ -115,8 +125,12 @@ test.serial('Get release info', async t => { ...@@ -115,8 +125,12 @@ test.serial('Get release info', async t => {
}); });
test.serial('Download release', async t => { test.serial('Download release', async t => {
const {data} = await axios.get('http://api/1.0.0'); const response = await axios.get('http://api/1.0.0');
t.is(data, 'Hello, World!');
t.is(response.headers['content-disposition'], 'attachment; filename="release.txt"');
t.is(response.headers['content-length'], '13');
t.is(response.data, 'Hello, World!');
}); });
test.serial('Get latest release info', async t => { test.serial('Get latest release info', async t => {
...@@ -128,8 +142,12 @@ test.serial('Get latest release info', async t => { ...@@ -128,8 +142,12 @@ test.serial('Get latest release info', async t => {
}); });
test.serial('Download latest release', async t => { test.serial('Download latest release', async t => {
const {data} = await axios.get('http://api/latest'); const response = await axios.get('http://api/latest');
t.is(data, 'Hello, World!');
t.is(response.headers['content-disposition'], 'attachment; filename="release.txt"');
t.is(response.headers['content-length'], '13');
t.is(response.data, 'Hello, World!');
}); });
test.serial('Get release info of invalid SemVer version', async t => { test.serial('Get release info of invalid SemVer version', async t => {
...@@ -242,6 +260,12 @@ test.serial.after.always(async () => { ...@@ -242,6 +260,12 @@ test.serial.after.always(async () => {
await server.stop(); await server.stop();
}); });
test.serial.after(async t => {
del.sync('/files/**', {dot: true, force: true});
t.deepEqual(fs.readdirSync(releasesModel.FILES_DIR), []);
});
function getFormData({fileName}) { function getFormData({fileName}) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment