UNPKG

co-upyun-storage

Version:
207 lines (187 loc) 6.46 kB
var co = require('co'); var expect = require('expect.js'); var fs = require('fs'); var Client = require('../'); describe('storage', function () { var randomId = (new Date()).getTime(); var filepath = __dirname + '/figures/sticker.jpg'; var unexist = __dirname + '/figures/unexist.jpg'; var client = Client.create('test', 'test1234', 'jackson-test-space'); var download = __dirname + '/figures/download.jpg'; var buff; var size; before(function (done) { fs.readFile(filepath, function(err, data) { expect(err).to.not.be.ok(); size = data.length; buff = data; expect(size).to.be.above(0); done(); }); }); it('create', function () { var client = Client.create('test', 'test1234', 'jackson-test-space'); expect(client).to.be.ok(); expect(client.oprator).to.be('test'); expect(client.password).to.be('test1234'); expect(client.bucket).to.be('jackson-test-space'); }); it('setAddress', function () { var client = Client.create('test', 'test1234', 'jackson-test-space'); expect(client.uri).to.be('http://v0.api.upyun.com'); client.setAddress('v1'); expect(client.uri).to.be('http://v1.api.upyun.com'); client.setAddress('http://www.baidu.com'); expect(client.uri).to.be('http://www.baidu.com'); client.setAddress(); expect(client.uri).to.be('http://v0.api.upyun.com'); }); it('putFile should work', function(done){ co(function *() { var result = yield client.putFile(filepath, '/sticker_' + randomId + '.jpg'); var res = result[1]; expect(res.statusCode).to.be(200); })(done); }); it('putBuffer should work', function(done){ co(function *() { var result = yield client.putBuffer(buff, '/sticker_' + randomId + '.jpg'); var res = result[1]; expect(res.statusCode).to.be(200); })(done); }); it('putFile 401', function (done) { var client = Client.create('test', 'error_password', 'jackson-test-space'); co(function *() { yield client.putFile(filepath, '/sticker_' + randomId + '.jpg'); })(function (err) { expect(err).to.be.ok(); expect(err.name).to.be('UpYunError'); expect(err.code).to.be(401); done(); }); }); it('putFile unexist file', function (done) { co(function *() { try { yield client.putFile(unexist, '/sticker_fake_' + randomId + '.jpg'); } catch (err) { expect(err).to.be.ok(); expect(err.code).to.be('ENOENT'); } })(done); }); it('getFile', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.getFile('/sticker_' + randomId + '.jpg'); var data = result[0]; expect(data).to.be.a('object'); expect(data.length).to.be(size); })(done); }); describe('pipe', function () { var randomId = new Date().getTime(); var client = Client.create('test', 'test1234', 'jackson-test-space'); before(function (done) { var pending = function (count, done) { return function () { count--; if (count === 0) { done(); } }; }; done = pending(2, done); client.putFile(filepath, '/sticker_pipe_' + randomId + '.jpg')(function (err, data, res) { expect(err).to.not.be.ok(); expect(res.statusCode).to.be(200); done(); }); fs.unlink(download, function (err) { if (err) { expect(err.code).to.be('ENOENT'); } done(); }); }); it('ok', function (done) { co(function *() { var writable = fs.createWriteStream(download); yield client.pipe('/sticker_pipe_' + randomId + '.jpg', writable); })(function (err) { expect(err).to.not.be.ok(); fs.readFile(download, function (err, file) { expect(err).to.not.be.ok(); expect(file.length).to.be(size); done(); }); }); }); }); it('getFileInfo', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.getFileInfo('/sticker_' + randomId + '.jpg'); var res = result[1]; expect(res.statusCode).to.be(200); var data = result[0]; expect(data.type).to.be('file'); expect(data.size).to.be(size); expect(data.lastModified).to.be.a(Date); })(done); }); it('deleteFile', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.deleteFile('/sticker_' + randomId + '.jpg'); expect(result[1].statusCode).to.be(200); var info = yield client.getFileInfo('/sticker_' + randomId + '.jpg'); expect(info[1].statusCode).to.be(404); var data = info[0]; expect(data.type).to.be('file'); expect(data.size).to.be(0); expect(data.lastModified).to.be.a(Date); })(done); }); it('putFolder', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.putFolder('/folder_' + randomId); expect(result[1].statusCode).to.be(200); })(done); }); it('getFolder /folder', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.getFolder('/folder_' + randomId); expect(result[1].statusCode).to.be(200); var data = result[0]; expect(data).to.be.an(Array); expect(data.length).to.be(0); })(done); }); it('deleteFolder', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.deleteFolder('/folder_' + randomId + '/'); expect(result[1].statusCode).to.be(200); try { yield client.getFolder('/folder_' + randomId + '/'); } catch (err) { expect(err).to.be.ok(); expect(err.name).to.be('UpYunError'); expect(err.code).to.be(404); } })(done); }); it('bucketUsage', function (done) { var client = Client.create('test', 'test1234', 'jackson-test-space'); co(function *() { var result = yield client.bucketUsage(); var data = result[0]; expect(data).to.be.a('number'); expect(data).to.be.above(0); })(done); }); });