Mocha. Не до конца правильно отрабатывает проверка на существование файла
На node.js создал простейший сервер, который отвечает на запросы get, post и delete. По логике, у меня при post запросе, парсится урл, вытягивается название файла с этого урла и в определённой дирректории, создаётся файл c названием fileName. Если файл, с таким названием, уже есть, должна выбрасываться соотв. ошибка. Вот код:
module.exports = http.createServer((req, res) => {
switch(req.method){
case 'POST':
if(req.url !== '/') {
let fileName = url.parse(req.url, true).pathname.slice(1);
let pathToFile = path.join( 'files', fileName );
let streamWrite = fs.createWriteStream(pathToFile, {flags: 'wx'});
streamWrite.on('error', (err) => {
if(err.code === 'EEXIST'){
res.statusCode= 409;
console.error(`Error code: ${err.code}. This means, that file already exists`);
}
})
res.end()
break;
}
default:
res.statusCode = 500;
res.statusMessage = 'Ups, something went wrong';
break;
}
}
А вот тест, на Mocha, который проверяет кейсы описанные выше:
describe('POST test:', () => {
it('should create file after request', done => {
let options = {url: 'http://localhost:4001/index.ddd', method: 'POST'}
let req = request(options, (err, res, body) => {
let data = ''
let stream = fs.createReadStream(path.join('files', url.parse(options.url).pathname.slice(1)), {encoding: 'utf-8'})
stream.on('data', chunk => data += chunk);
stream.on('end', () =>{
assert.strictEqual(body, data)
console.log(res.statusCode);
console.log(res.statusMessage);
})
})
req.end()
done();
})
Проблема в том, что когда я запускаю тест, и если файл уже есть, и код фейлится, респонс всегда 200, ОК. А я хотел бы, чтобы когда файл был, то был код ошибки 409. Т.е. не работает вот этот момент res.statusCode= 409;