四好公路
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

102 lines
2.7 KiB

/**
* Created by PengLing on 2017/12/26.
*/
'use strict';
const expect = require('chai').expect;
const path = require('path');
const fs = require('fs');
const Attachment = require('../lib/attachment');
const opts = require('./config')();
describe('attachment', function () {
this.timeout(10000);
let attachment, key;
let p = path.posix.join(__dirname, 'files', 'test-文档1.txt'); // let p = 'test-文档1.txt';
before(async () => {
attachment = new Attachment(opts);
makeFile(p);
});
after(async () => {
await deleteFile(p);
});
it('upload file to local server successfully', function (done) {
(async function () {
try {
let rslt = await attachment.upload(p);
key = rslt.key;
expect(rslt).to.be.an('object').that.has.all.keys('key');
expect(rslt.key).to.be.a('string');
done();
} catch (err) {
done(err);
}
})()
})
it('upload file successfully', function (done) {
(async function () {
try {
let rslt = await attachment.upload(p);
key = rslt.key;
expect(rslt).to.be.an('object').that.has.all.keys('key');
expect(rslt.key).to.be.a('string');
done();
} catch (err) {
done(err);
}
})();
});
it('download file successfully', function (done) {
(async function () {
try {
let publicDownloadUrl = await attachment.download(key);
expect(publicDownloadUrl).to.be.a('string');
done();
} catch (err) {
done(err);
}
})();
});
it('remove file successfully', function (done) {
(async function () {
try {
let statusCode = await attachment.remove(key);
expect(statusCode).to.be.a('number');
done();
} catch (err) {
done(err);
}
})();
});
function makeFile(p) {
return new Promise((resolve, reject) => {
fs.writeFile(p, "hello world!", function (err) {
if (err) {
reject(err);
}
resolve("The file was saved!");
});
});
}
function deleteFile(p) {
return new Promise((resolve, reject) => {
fs.unlink(p, (err) => {
if (err) {
reject(`p: ${p}, error: delete file ${err}`);
} else {
resolve('success');
}
});
});
}
});