From cb5ef878c3278725929b7000677bbfbe962e594a Mon Sep 17 00:00:00 2001 From: jingdan Date: Fri, 23 Mar 2018 16:55:16 +0800 Subject: [PATCH] feat: rm unused test data --- test/node/.tmp/content-type-by-file | Bin 204800 -> 0 bytes test/node/.tmp/content-type-by-file.jpg | Bin 204800 -> 0 bytes .../darwin-v8.10.0-ali-sdk-oss-%3get+meta.js | 1533 ----------------- .../darwin-v8.4.0-ali-sdk-oss-%3get+meta.js | 1495 ---------------- .../darwin-v9.8.0-ali-sdk-oss-%3get+meta.js | 1490 ---------------- 5 files changed, 4518 deletions(-) delete mode 100644 test/node/.tmp/content-type-by-file delete mode 100644 test/node/.tmp/content-type-by-file.jpg delete mode 100644 test/node/.tmp/darwin-v8.10.0-ali-sdk-oss-%3get+meta.js delete mode 100644 test/node/.tmp/darwin-v8.4.0-ali-sdk-oss-%3get+meta.js delete mode 100644 test/node/.tmp/darwin-v9.8.0-ali-sdk-oss-%3get+meta.js diff --git a/test/node/.tmp/content-type-by-file b/test/node/.tmp/content-type-by-file deleted file mode 100644 index ef67522bb1d4300f48befa308385c21428f0f79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204800 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

f5d@+&(wLfR_oC)C>R!OcTuY!5z&G}a{ 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 diff --git a/test/node/.tmp/content-type-by-file.jpg b/test/node/.tmp/content-type-by-file.jpg deleted file mode 100644 index ec7bcb2aae3cfd935bee26742dcd18a67466f805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204800 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�It!sGQoJ=MVm9ZG1va`MK!}}gy{4kId3nj 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 diff --git a/test/node/.tmp/darwin-v8.10.0-ali-sdk-oss-%3get+meta.js b/test/node/.tmp/darwin-v8.10.0-ali-sdk-oss-%3get+meta.js deleted file mode 100644 index d43f9f1ba..000000000 --- a/test/node/.tmp/darwin-v8.10.0-ali-sdk-oss-%3get+meta.js +++ /dev/null @@ -1,1533 +0,0 @@ - -const fs = require('fs'); -const path = require('path'); -const assert = require('assert'); -const cfs = require('co-fs'); -const { Readable } = require('stream'); -const utils = require('./utils'); -const oss = require('../..'); -const sts = require('../..').STS; -const config = require('../config').oss; -const stsConfig = require('../config').sts; -const urllib = require('urllib'); -const copy = require('copy-to'); -const mm = require('mm'); -const streamEqual = require('stream-equal'); - -const tmpdir = path.join(__dirname, '.tmp'); -if (!fs.existsSync(tmpdir)) { - fs.mkdirSync(tmpdir); -} - -describe('test/object.test.js', () => { - const { prefix } = utils; - - before(function* () { - this.store = oss(config); - this.bucket = `ali-oss-test-object-bucket-${prefix.replace(/[/.]/g, '-')}`; - this.bucket = this.bucket.substring(0, this.bucket.length - 1); - this.region = config.region; - // console.log('current buckets: %j', - // (yield this.store.listBuckets()).buckets.map(function (item) { - // return item.name + ':' + item.region; - // }) - // ); - yield this.store.putBucket(this.bucket, this.region); - this.store.useBucket(this.bucket, this.region); - }); - - after(function* () { - yield utils.cleanBucket(this.store, this.bucket, this.region); - }); - - describe('putStream()', () => { - afterEach(mm.restore); - - it('should add object with streaming way', function* () { - const name = `${prefix}ali-sdk/oss/putStream-localfile.js`; - const object = yield this.store.putStream(name, fs.createReadStream(__filename)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - assert(object.url); - - // check content - const r = yield this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.content.toString(), fs.readFileSync(__filename, 'utf8')); - }); - - it('should use chunked encoding', function* () { - const name = `${prefix}ali-sdk/oss/chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const result = yield this.store.putStream(name, fs.createReadStream(__filename)); - - assert.equal(result.res.status, 200); - assert.equal(header['Transfer-Encoding'], 'chunked'); - }); - - it('should NOT use chunked encoding', function* () { - const name = `${prefix}ali-sdk/oss/no-chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const options = { - contentLength: fs.statSync(__filename).size, - }; - const result = yield this.store.putStream(name, fs.createReadStream(__filename), options); - - assert(!header['Transfer-Encoding']); - assert.equal(result.res.status, 200); - }); - - it('should add image with streaming way', function* () { - const name = `${prefix}ali-sdk/oss/nodejs-1024x768.png`; - const imagepath = path.join(__dirname, 'nodejs-1024x768.png'); - const object = yield this.store.putStream(name, fs.createReadStream(imagepath), { - mime: 'image/png', - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = yield this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'image/png'); - const buf = fs.readFileSync(imagepath); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - - it('should add very big file: 4mb with streaming way', function* () { - const name = `${prefix}ali-sdk/oss/bigfile-4mb.bin`; - const bigfile = path.join(__dirname, '.tmp', 'bigfile-4mb.bin'); - fs.writeFileSync(bigfile, Buffer.alloc(4 * 1024 * 1024).fill('a\n')); - const object = yield this.store.putStream(name, fs.createReadStream(bigfile)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = yield this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'application/octet-stream'); - assert.equal(r.res.size, 4 * 1024 * 1024); - const buf = fs.readFileSync(bigfile); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - }); - - describe('getObjectUrl()', () => { - it('should return object url', function () { - let name = 'test.js'; - let url = this.store.getObjectUrl(name); - assert.equal(url, this.store.options.endpoint.format() + name); - - name = '/foo/bar/a%2Faa/test&+-123~!.js'; - url = this.store.getObjectUrl(name, 'https://foo.com'); - assert.equal(url, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - const url2 = this.store.getObjectUrl(name, 'https://foo.com/'); - assert.equal(url2, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - }); - }); - - describe('put()', () => { - it('should add object with local file path', function* () { - const name = `${prefix}ali-sdk/oss/put-localfile.js`; - const object = yield this.store.put(name, __filename); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - }); - - it('should add object with content buffer', function* () { - const name = `${prefix}ali-sdk/oss/put-buffer`; - const object = yield this.store.put(`/${name}`, new Buffer('foo content')); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert(object.name, name); - }); - - it('should add object with readstream', function* () { - const name = `${prefix}ali-sdk/oss/put-readstream`; - const object = yield this.store.put(name, fs.createReadStream(__filename), { - headers: { - 'Content-Length': (yield cfs.stat(__filename)).size, - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(typeof object.res.headers.etag, 'string'); - assert(object.name, name); - }); - - it('should add object with meta', function* () { - const name = `${prefix}ali-sdk/oss/put-meta.js`; - const object = yield this.store.put(name, __filename, { - meta: { - uid: 1, - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - const info = yield this.store.head(name); - assert.deepEqual(info.meta, { - uid: '1', - slus: 'test.html', - }); - assert.equal(info.status, 200); - }); - - it('should set Content-Disposition with ascii name', function* () { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = yield this.store.put(name, __filename, { - headers: { - 'Content-Disposition': 'ascii-name.js', - }, - }); - assert(object.name, name); - const info = yield this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'ascii-name.js'); - }); - - it('should set Content-Disposition with no-ascii name', function* () { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = yield this.store.put(name, __filename, { - headers: { - 'Content-Disposition': encodeURIComponent('non-ascii-名字.js'), - }, - }); - assert(object.name, name); - const info = yield this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'non-ascii-%E5%90%8D%E5%AD%97.js'); - }); - - it('should set Expires', function* () { - const name = `${prefix}ali-sdk/oss/put-Expires.js`; - const object = yield this.store.put(name, __filename, { - headers: { - Expires: 1000000, - }, - }); - assert(object.name, name); - const info = yield this.store.head(name); - assert.equal(info.res.headers.expires, '1000000'); - }); - - it('should set custom Content-Type', function* () { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = yield this.store.put(name, __filename, { - headers: { - 'Content-Type': 'text/plain; charset=gbk', - }, - }); - assert(object.name, name); - const info = yield this.store.head(name); - assert.equal(info.res.headers['content-type'], 'text/plain; charset=gbk'); - }); - - it('should set custom content-type lower case', function* () { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = yield this.store.put(name, __filename, { - headers: { - 'content-type': 'application/javascript; charset=utf8', - }, - }); - assert(object.name, name); - const info = yield this.store.head(name); - assert.equal(info.res.headers['content-type'], 'application/javascript; charset=utf8'); - }); - }); - - describe('mimetype', () => { - const createFile = function* (name, size) { - size = size || 200 * 1024; - yield new Promise(((resolve, reject) => { - const rs = fs.createReadStream('/dev/random', { - start: 0, - end: size - 1, - }); - const ws = fs.createWriteStream(name); - rs.pipe(ws); - ws.on('finish', (err, res) => { - if (err) { - reject(err); - } else { - resolve(res); - } - }); - })); - - return name; - }; - - it('should set mimetype by file ext', function* () { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - yield createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - yield this.store.put(name, filepath); - - let result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - - yield this.store.multipartUpload(name, filepath); - result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - }); - - it('should set mimetype by object key', function* () { - const filepath = path.join(tmpdir, 'content-type-by-file'); - yield createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - yield this.store.put(name, filepath); - - let result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - yield this.store.multipartUpload(name, filepath); - result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - }); - - it('should set user-specified mimetype', function* () { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - yield createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - yield this.store.put(name, filepath, { mime: 'text/plain' }); - - let result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - yield this.store.multipartUpload(name, filepath, { - mime: 'text/plain', - }); - result = yield this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - }); - }); - - describe('head()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/head-meta.js`; - const object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should head not exists object throw NoSuchKeyError', function* () { - yield utils.throws(function* () { - yield this.store.head(`${this.name}not-exists`); - }.bind(this), (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - }); - }); - - it('should head exists object with If-Modified-Since < object modified time', function* () { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const info = yield this.store.head(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Modified-Since = object modified time', function* () { - const info = yield this.store.head(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Modified-Since > object modified time', function* () { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = yield this.store.head(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Unmodified-Since < object modified time', function* () { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - yield utils.throws(function* () { - yield this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }.bind(this), (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-Unmodified-Since = object modified time', function* () { - const info = yield this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Unmodified-Since > object modified time', function* () { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = yield this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Match equal etag', function* () { - const info = yield this.store.head(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should head exists object with If-Match not equal etag', function* () { - yield utils.throws(function* () { - yield this.store.head(this.name, { - headers: { - 'If-Match': '"foo-etag"', - }, - }); - }.bind(this), (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-None-Match equal etag', function* () { - const info = yield this.store.head(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(info.meta, null); - assert.equal(info.status, 304); - }); - - it('should head exists object with If-None-Match not equal etag', function* () { - const info = yield this.store.head(this.name, { - headers: { - 'If-None-Match': '"foo-etag"', - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - }); - - describe('get()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/get-meta.js`; - let object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta.js`; - object = yield this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should store object to local file', function* () { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = yield this.store.get(this.name, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should escape uri path ok', function* () { - const savepath = path.join(tmpdir, this.needEscapeName.replace(/\//g, '-')); - const result = yield this.store.get(this.needEscapeName, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should throw error when save path parent dir not exists', function* () { - const savepath = path.join(tmpdir, 'not-exists', this.name.replace(/\//g, '-')); - yield utils.throws(function* () { - yield this.store.get(this.name, savepath); - }.bind(this), /ENOENT/); - }); - - it('should store object to writeStream', function* () { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = yield this.store.get(this.name, fs.createWriteStream(savepath)); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should store not exists object to file', function* () { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - yield utils.throws(function* () { - yield this.store.get(`${this.name}not-exists`, savepath); - }.bind(this), (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert(!fs.existsSync(savepath)); - }); - }); - - it('should throw error when writeStream emit error', function* () { - const savepath = path.join(tmpdir, 'not-exists-dir', this.name.replace(/\//g, '-')); - yield utils.throws(function* () { - yield this.store.get(this.name, fs.createWriteStream(savepath)); - }.bind(this), /ENOENT/); - }); - - it('should get object content buffer', function* () { - let result = yield this.store.get(this.name); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - - result = yield this.store.get(this.name, null); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should get object content buffer with image process', function* () { - const name = `${prefix}ali-sdk/oss/nodejs-test-get-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - yield this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = yield this.store.get(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - // assert.deepEqual(result.content == fs.readFileSync(processedImagePath), - // 'get content should be same as test/nodejs-processed-w200.png'); - - // it should use the value of process - // when 'subres.x-oss-process' coexists with 'process'. - result = yield this.store.get( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - }); - - it('should throw NoSuchKeyError when object not exists', function* () { - const { store } = this; - yield utils.throws(function* () { - yield store.get('not-exists-key'); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - assert.equal(err.message, 'The specified key does not exist.'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 200 when If-Modified-Since < object modified time', function* () { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = yield this.store.get(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-Modified-Since = object modified time', function* () { - const result = yield this.store.get(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since > object modified time', function* () { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = yield this.store.get(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should throw PreconditionFailedError when If-Unmodified-Since < object modified time', function* () { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - yield utils.throws(function* () { - yield this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }.bind(this), (err) => { - assert.equal(err.status, 412); - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(typeof err.requestId, 'string'); - assert.equal(typeof err.hostId, 'string'); - }); - }); - - it('should 200 when If-Unmodified-Since = object modified time', function* () { - const result = yield this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should 200 when If-Unmodified-Since > object modified time', function* () { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = yield this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - }); - - describe('If-Match header', () => { - it('should 200 when If-Match equal object etag', function* () { - const result = yield this.store.get(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Match not equal object etag', function* () { - yield utils.throws(function* () { - yield this.store.get(this.name, { - headers: { - 'If-Match': 'foo', - }, - }); - }.bind(this), (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - }); - - describe('If-None-Match header', () => { - it('should 200 when If-None-Match not equal object etag', function* () { - const result = yield this.store.get(this.name, { - headers: { - 'If-None-Match': 'foo', - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-None-Match equal object etag', function* () { - const result = yield this.store.get(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.content.length, 0); - }); - }); - - describe('Range header', () => { - it('should work with Range header and get top 10 bytes content', function* () { - const content = new Buffer('aaaaaaaaaabbbbbbbbbb'); - yield this.store.put('range-header-test', content); - const result = yield this.store.get('range-header-test', { - headers: { - Range: 'bytes=0-9', - }, - }); - assert.equal(result.res.headers['content-length'], '10'); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.toString(), 'aaaaaaaaaa'); - }); - }); - }); - - describe('signatureUrl()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/signatureUrl.js`; - let object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta-signatureUrl.js`; - object = yield this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should signature url get object ok', function* () { - const result = yield this.store.get(this.name); - const url = this.store.signatureUrl(this.name); - const urlRes = yield urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with image processed and get object ok', function* () { - const name = `${prefix}ali-sdk/oss/nodejs-test-signature-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - yield this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - const signUrl = this.store.signatureUrl(name, { expires: 3600, process: 'image/resize,w_200' }); - const processedKeyword = 'x-oss-process=image%2Fresize%2Cw_200'; - assert.equal(signUrl.match(processedKeyword), processedKeyword); - const urlRes = yield urllib.request(signUrl); - assert.equal(urlRes.status, 200); - // assert(urlRes.data.toString() == fs.readFileSync(processedImagePath, 'utf8'), - // 'response content should be same as test/nodejs-processed-w200.png'); - }); - - it('should signature url for PUT', function* () { - const url = this.store.signatureUrl(this.name, { method: 'PUT' }); - const res = yield urllib.request(url, { method: 'PUT' }); - assert.equal(res.status, 200); - }); - - it('should signature url get need escape object ok', function* () { - const result = yield this.store.get(this.needEscapeName); - const url = this.store.signatureUrl(this.needEscapeName); - const urlRes = yield urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with custom host ok', function () { - const conf = {}; - copy(config).to(conf); - conf.endpoint = 'www.aliyun.com'; - conf.cname = true; - const store = oss(conf); - - const url = store.signatureUrl(this.name); - // http://www.aliyun.com/darwin-v4.4.2/ali-sdk/oss/get-meta.js?OSSAccessKeyId= - assert.equal(url.indexOf('http://www.aliyun.com/'), 0); - }); - }); - - // FIXME: why not work? - describe.skip('signatureUrl() with sts', () => { - before(function* () { - const stsClient = sts(stsConfig); - let result = yield stsClient.assumeRole(stsConfig.roleArn); - assert.equal(result.res.status, 200); - console.log(result); - - this.ossClient = oss({ - region: config.region, - accessKeyId: result.credentials.AccessKeyId, - accessKeySecret: result.credentials.AccessKeySecret, - stsToken: result.credentials.SecurityToken, - bucket: stsConfig.bucket, - }); - - this.name = 'sts/signature'; - this.content = 'Get signature url with STS token.'; - result = yield this.ossClient.put(this.name, new Buffer(this.content)); - assert.equal(result.res.status, 200); - }); - - it('should signature url with sts', function* () { - const url = this.ossClient.signatureUrl(this.name); - const urlRes = yield urllib.request(url); - assert.equal(urlRes.data.toString(), this.content); - }); - - it('should overwrite response content-type & content-disposition', function* () { - const url = this.ossClient.signatureUrl(this.name, { - expires: 3600, - response: { - 'content-type': 'text/custom', - 'content-disposition': 'attachment', - }, - }); - const urlRes = yield urllib.request(url); - assert.equal(urlRes.data.toString(), this.content); - assert.equal(urlRes.headers['content-type'], 'text/custom'); - assert.equal(urlRes.headers['content-disposition'], 'attachment'); - }); - }); - - describe('getStream()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/get-stream.js`; - const object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - this.headers = object.res.headers; - }); - - it('should get exists object stream', function* () { - const result = yield this.store.getStream(this.name); - assert.equal(result.res.status, 200); - assert(result.stream instanceof Readable); - const tmpfile = path.join(tmpdir, 'get-stream.js'); - const tmpstream = fs.createWriteStream(tmpfile); - - function finish() { - return function (callback) { - tmpstream.on('finish', callback); - }; - } - - result.stream.pipe(tmpstream); - yield finish(); - assert.equal(fs.readFileSync(tmpfile, 'utf8'), fs.readFileSync(__filename, 'utf8')); - }); - - it('should get image stream with image process', function* () { - const name = `${prefix}ali-sdk/oss/nodejs-test-getstream-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - const processedImagePath = path.join(__dirname, 'nodejs-processed-w200.png'); - yield this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = yield this.store.getStream(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - let isEqual = yield streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - result = yield this.store.getStream( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - isEqual = yield streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - }); - - it('should throw error when object not exists', function* () { - try { - yield this.store.getStream(`${this.name}not-exists`); - throw new Error('should not run this'); - } catch (err) { - assert.equal(err.name, 'NoSuchKeyError'); - } - }); - }); - - describe('delete()', () => { - it('should delete exsits object', function* () { - const name = `${prefix}ali-sdk/oss/delete.js`; - yield this.store.put(name, __filename); - - const info = yield this.store.delete(name); - assert.equal(info.res.status, 204); - - yield utils.throws(function* () { - yield this.store.head(name); - }.bind(this), 'NoSuchKeyError'); - }); - - it('should delete not exists object', function* () { - const info = yield this.store.delete('not-exists-name'); - assert.equal(info.res.status, 204); - }); - }); - - describe('deleteMulti()', () => { - beforeEach(function* () { - this.names = []; - let name = `${prefix}ali-sdk/oss/deleteMulti0.js`; - this.names.push(name); - yield this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti1.js`; - this.names.push(name); - yield this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti2.js`; - this.names.push(name); - yield this.store.put(name, __filename); - }); - - it('should delete 3 exists objs', function* () { - const result = yield this.store.deleteMulti(this.names); - assert.deepEqual(result.deleted, this.names); - assert.equal(result.res.status, 200); - }); - - it('should delete 2 exists and 2 not exists objs', function* () { - const result = yield this.store.deleteMulti(this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.deepEqual(result.deleted, this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.equal(result.res.status, 200); - }); - - it('should delete 1 exists objs', function* () { - const result = yield this.store.deleteMulti(this.names.slice(0, 1)); - assert.deepEqual(result.deleted, this.names.slice(0, 1)); - assert.equal(result.res.status, 200); - }); - - it('should delete in quiet mode', function* () { - const result = yield this.store.deleteMulti(this.names, { - quiet: true, - }); - assert.equal(result.deleted, null); - assert.equal(result.res.status, 200); - }); - }); - - describe('copy()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/copy-meta.js`; - const object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should copy object from same bucket', function* () { - const name = `${prefix}ali-sdk/oss/copy-new.js`; - const result = yield this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = yield this.store.head(name); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name', function* () { - const sourceName = `${prefix}ali-sdk/oss/copy-meta_测试.js`; - let result = yield this.store.put(sourceName, __filename, { - meta: { - uid: 2, - pid: '1234', - slus: 'test1.html', - }, - }); - - const name = `${prefix}ali-sdk/oss/copy-new_测试.js`; - result = yield this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = yield this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert.equal(info.meta.pid, '1234'); - assert.equal(info.meta.slus, 'test1.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name and bucket', function* () { - let sourceName = `${prefix}ali-sdk/oss/copy-meta_测试2.js`; - let result = yield this.store.put(sourceName, __filename, { - meta: { - uid: 3, - pid: '12345', - slus: 'test2.html', - }, - }); - - let info = yield this.store.head(sourceName); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - - sourceName = `/${this.bucket}/${sourceName}`; - const name = `${prefix}ali-sdk/oss/copy-new_测试2.js`; - result = yield this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - info = yield this.store.head(name); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - }); - - it('should copy object and set other meta', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-2.js`; - const result = yield this.store.copy(name, this.name, { - meta: { - uid: '2', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = yield this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - assert.equal(info.status, 200); - }); - - it('should use copy to change exists object headers', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-3.js`; - let result = yield this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - let info = yield this.store.head(name); - assert(!info.res.headers['cache-control']); - - // add Cache-Control header to a exists object - result = yield this.store.copy(name, name, { - headers: { - 'Cache-Control': 'max-age=0, s-maxage=86400', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - info = yield this.store.head(name); - assert.equal(info.res.headers['cache-control'], 'max-age=0, s-maxage=86400'); - }); - - it('should throw NoSuchKeyError when source object not exists', function* () { - yield utils.throws(function* () { - yield this.store.copy('new-object', 'not-exists-object'); - }.bind(this), (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.message, 'The specified key does not exist.'); - assert.equal(err.status, 404); - }); - }); - - describe('If-Match header', () => { - it('should throw PreconditionFailedError when If-Match not equal source object etag', function* () { - yield utils.throws(function* () { - yield this.store.copy('new-name', this.name, { - headers: { - 'If-Match': 'foo-bar', - }, - }); - }.bind(this), (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Match)'); - assert.equal(err.status, 412); - }); - }); - - it('should copy object when If-Match equal source object etag', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Match.js`; - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-None-Match header', () => { - it('should return 304 when If-None-Match equal source object etag', function* () { - const result = yield this.store.copy('new-name', this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.data, null); - }); - - it('should copy object when If-None-Match not equal source object etag', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-None-Match.js`; - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-None-Match': 'foo-bar', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 304 when If-Modified-Since > source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since >= source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 200 when If-Modified-Since < source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(result.res.status, 200); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should 200 when If-Unmodified-Since > source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 200 when If-Unmodified-Since >= source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - const result = yield this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Unmodified-Since < source object modified time', function* () { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - yield utils.throws(function* () { - yield this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }.bind(this), (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(err.status, 412); - }); - }); - }); - }); - - describe('putMeta()', () => { - before(function* () { - this.name = `${prefix}ali-sdk/oss/putMeta.js`; - const object = yield this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should update exists object meta', function* () { - yield this.store.putMeta(this.name, { - uid: '2', - }); - const info = yield this.store.head(this.name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - }); - - it('should throw NoSuchKeyError when update not exists object meta', function* () { - yield utils.throws(function* () { - yield this.store.putMeta(`${this.name}not-exists`, { - uid: '2', - }); - }.bind(this), (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - }); - }); - }); - - describe('list()', () => { - // oss.jpg - // fun/test.jpg - // fun/movie/001.avi - // fun/movie/007.avi - before(function* () { - const listPrefix = `${prefix}ali-sdk/list/`; - yield this.store.put(`${listPrefix}oss.jpg`, new Buffer('oss.jpg')); - yield this.store.put(`${listPrefix}fun/test.jpg`, new Buffer('fun/test.jpg')); - yield this.store.put(`${listPrefix}fun/movie/001.avi`, new Buffer('fun/movie/001.avi')); - yield this.store.put(`${listPrefix}fun/movie/007.avi`, new Buffer('fun/movie/007.avi')); - yield this.store.put(`${listPrefix}other/movie/007.avi`, new Buffer('other/movie/007.avi')); - yield this.store.put(`${listPrefix}other/movie/008.avi`, new Buffer('other/movie/008.avi')); - this.listPrefix = listPrefix; - }); - - function checkObjectProperties(obj) { - assert.equal(typeof obj.name, 'string'); - assert.equal(typeof obj.lastModified, 'string'); - assert.equal(typeof obj.etag, 'string'); - assert(obj.type === 'Normal' || obj.type === 'Multipart'); - assert.equal(typeof obj.size, 'number'); - assert.equal(obj.storageClass, 'Standard'); - assert.equal(typeof obj.owner, 'object'); - assert.equal(typeof obj.owner.id, 'string'); - assert.equal(typeof obj.owner.displayName, 'string'); - } - - it('should list only 1 object', function* () { - const result = yield this.store.list({ - 'max-keys': 1, - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list top 3 objects', function* () { - const result = yield this.store.list({ - 'max-keys': 3, - }); - assert.equal(result.objects.length, 3); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - - // next 2 - const result2 = yield this.store.list({ - 'max-keys': 2, - marker: result.nextMarker, - }); - assert.equal(result2.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(typeof result2.nextMarker, 'string'); - assert(result2.isTruncated); - assert.equal(result2.prefixes, null); - }); - - it('should list with prefix', function* () { - let result = yield this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - - result = yield this.store.list({ - prefix: `${this.listPrefix}fun/movie`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list current dir files only', function* () { - let result = yield this.store.list({ - prefix: this.listPrefix, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/`, `${this.listPrefix}other/`]); - - result = yield this.store.list({ - prefix: `${this.listPrefix}fun/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/movie/`]); - - result = yield this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - }); - - describe('object key encoding', () => { - it('should encode variant object keys', function* () { - const prefixz = 'ali-oss-test-key-'; - const keys = { - simple: 'simple_key', - chinese: '杭州・中国', - space: '是 空格 yeah +-/\\&*#(1) ', - invisible: '\x01\x0a\x0c\x07\x50\x63', - xml: 'ad +', - }; - - const names = []; - /* eslint no-restricted-syntax: [0] */ - /* eslint guard-for-in: [0] */ - for (const k in keys) { - const key = prefixz + keys[k]; - let result = yield this.store.put(key, new Buffer('')); - assert.equal(result.res.status, 200); - - result = yield this.store.list({ - prefixz, - }); - const objects = result.objects.map(obj => obj.name); - assert(objects.indexOf(key) >= 0); - - result = yield this.store.head(key); - assert.equal(result.res.status, 200); - - names.push(keys[k]); - } - - const result = yield this.store.deleteMulti(names); - assert.equal(result.res.status, 200); - assert.deepEqual(result.deleted, names); - }); - }); - - describe('putACL(), getACL()', () => { - it('should put and get object ACL', function* () { - const name = `${prefix}object/acl`; - let result = yield this.store.put(name, new Buffer('hello world')); - assert.equal(result.res.status, 200); - - result = yield this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'default'); - - result = yield this.store.putACL(name, 'public-read'); - assert.equal(result.res.status, 200); - - result = yield this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'public-read'); - - result = yield this.store.get(name); - assert.equal(result.res.status, 200); - assert.deepEqual(result.content, new Buffer('hello world')); - }); - }); - - describe('append()', () => { - const name = `/${prefix}ali-sdk/oss/apend${Date.now()}`; - afterEach(function* () { - yield this.store.delete(name); - }); - - it('should apend object with content buffer', function* () { - let object = yield this.store.append(name, new Buffer('foo')); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '3'); - assert(object.res.headers['x-oss-next-append-position'] === '3'); - - let res = yield urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foo'); - assert(res.headers['x-oss-next-append-position'] === '3'); - - object = yield this.store.append(name, new Buffer('bar'), { - position: 3, - }); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '6'); - assert(object.res.headers['x-oss-next-append-position'] === '6'); - - res = yield urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobar'); - assert(res.headers['x-oss-next-append-position'] === '6'); - }); - - it('should apend object with local file path', function* () { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = yield this.store.append(name, file); - assert(object.nextAppendPosition === '16'); - - object = yield this.store.append(name, file, { position: 16 }); - assert(object.nextAppendPosition === '32'); - }); - - it('should apend object with readstream', function* () { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = yield this.store.append(name, fs.createReadStream(file)); - assert(object.nextAppendPosition === '16'); - - object = yield this.store.append(name, fs.createReadStream(file), { - position: 16, - }); - assert(object.nextAppendPosition === '32'); - }); - - it('should error when positio not match', function* () { - yield this.store.append(name, new Buffer('foo')); - - try { - yield this.store.append(name, new Buffer('foo')); - throw new Error('should not run'); - } catch (err) { - assert(err.message === 'Position is not equal to file length'); - assert(err.name === 'PositionNotEqualToLengthError'); - } - }); - - it('should use nextAppendPosition to append next', function* () { - let object = yield this.store.append(name, new Buffer('foo')); - assert(object.nextAppendPosition === '3'); - - object = yield this.store.append(name, new Buffer('bar'), { - position: object.nextAppendPosition, - }); - - object = yield this.store.append(name, new Buffer('baz'), { - position: object.nextAppendPosition, - }); - - const res = yield urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobarbaz'); - assert(res.headers['x-oss-next-append-position'] === '9'); - }); - }); -}); diff --git a/test/node/.tmp/darwin-v8.4.0-ali-sdk-oss-%3get+meta.js b/test/node/.tmp/darwin-v8.4.0-ali-sdk-oss-%3get+meta.js deleted file mode 100644 index 1112abe78..000000000 --- a/test/node/.tmp/darwin-v8.4.0-ali-sdk-oss-%3get+meta.js +++ /dev/null @@ -1,1495 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const assert = require('assert'); -const { Readable } = require('stream'); -const utils = require('./utils'); -const oss = require('../'); -const sts = require('../').STS; -const config = require('./config').oss; -const stsConfig = require('./config').sts; -const urllib = require('urllib'); -const copy = require('copy-to'); -const mm = require('mm'); -const streamEqual = require('stream-equal'); - -const tmpdir = path.join(__dirname, '.tmp'); -if (!fs.existsSync(tmpdir)) { - fs.mkdirSync(tmpdir); -} - -describe('test/object.test.js', () => { - const { prefix } = utils; - - before(async () => { - this.store = oss(config); - this.bucket = `ali-oss-test-object-bucket-${prefix.replace(/[/.]/g, '-')}`; - this.bucket = this.bucket.substring(0, this.bucket.length - 1); - this.region = config.region; - // console.log('current buckets: %j', - // (yield this.store.listBuckets()).buckets.map(function (item) { - // return item.name + ':' + item.region; - // }) - // ); - await this.store.putBucket(this.bucket, this.region); - this.store.useBucket(this.bucket, this.region); - }); - - after(async () => { - await utils.cleanBucket(this.store, this.bucket, this.region); - }); - - describe('putStream()', () => { - afterEach(mm.restore); - - it('should add object with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/putStream-localfile.js`; - const object = await this.store.putStream(name, fs.createReadStream(__filename)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - assert(object.url); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.content.toString(), fs.readFileSync(__filename, 'utf8')); - }); - - it('should use chunked encoding', async () => { - const name = `${prefix}ali-sdk/oss/chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const result = await this.store.putStream(name, fs.createReadStream(__filename)); - - assert.equal(result.res.status, 200); - assert.equal(header['Transfer-Encoding'], 'chunked'); - }); - - it('should NOT use chunked encoding', async () => { - const name = `${prefix}ali-sdk/oss/no-chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const options = { - contentLength: fs.statSync(__filename).size, - }; - const result = await this.store.putStream(name, fs.createReadStream(__filename), options); - - assert(!header['Transfer-Encoding']); - assert.equal(result.res.status, 200); - }); - - it('should add image with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-1024x768.png`; - const imagepath = path.join(__dirname, 'nodejs-1024x768.png'); - const object = await this.store.putStream(name, fs.createReadStream(imagepath), { - mime: 'image/png', - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'image/png'); - const buf = fs.readFileSync(imagepath); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - - it('should add very big file: 4mb with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/bigfile-4mb.bin`; - const bigfile = path.join(__dirname, '.tmp', 'bigfile-4mb.bin'); - fs.writeFileSync(bigfile, Buffer.alloc(4 * 1024 * 1024).fill('a\n')); - const object = await this.store.putStream(name, fs.createReadStream(bigfile)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'application/octet-stream'); - assert.equal(r.res.size, 4 * 1024 * 1024); - const buf = fs.readFileSync(bigfile); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - }); - - describe('getObjectUrl()', () => { - it('should return object url', () => { - let name = 'test.js'; - let url = this.store.getObjectUrl(name); - assert.equal(url, this.store.options.endpoint.format() + name); - - name = '/foo/bar/a%2Faa/test&+-123~!.js'; - url = this.store.getObjectUrl(name, 'https://foo.com'); - assert.equal(url, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - const url2 = this.store.getObjectUrl(name, 'https://foo.com/'); - assert.equal(url2, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - }); - }); - - describe('put()', () => { - it('should add object with local file path', async () => { - const name = `${prefix}ali-sdk/oss/put-localfile.js`; - const object = await this.store.put(name, __filename); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - }); - - it('should add object with content buffer', async () => { - const name = `${prefix}ali-sdk/oss/put-buffer`; - const object = await this.store.put(`/${name}`, new Buffer('foo content')); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert(object.name, name); - }); - - it('should add object with readstream', async () => { - const name = `${prefix}ali-sdk/oss/put-readstream`; - const stat = await this.store._statFile(__filename); - const object = await this.store.put(name, fs.createReadStream(__filename), { - headers: { - 'Content-Length': stat.size, - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(typeof object.res.headers.etag, 'string'); - assert(object.name, name); - }); - - it('should add object with meta', async () => { - const name = `${prefix}ali-sdk/oss/put-meta.js`; - const object = await this.store.put(name, __filename, { - meta: { - uid: 1, - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - const info = await this.store.head(name); - assert.deepEqual(info.meta, { - uid: '1', - slus: 'test.html', - }); - assert.equal(info.status, 200); - }); - - it('should set Content-Disposition with ascii name', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Disposition': 'ascii-name.js', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'ascii-name.js'); - }); - - it('should set Content-Disposition with no-ascii name', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Disposition': encodeURIComponent('non-ascii-名字.js'), - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'non-ascii-%E5%90%8D%E5%AD%97.js'); - }); - - it('should set Expires', async () => { - const name = `${prefix}ali-sdk/oss/put-Expires.js`; - const object = await this.store.put(name, __filename, { - headers: { - Expires: 1000000, - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers.expires, '1000000'); - }); - - it('should set custom Content-Type', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Type': 'text/plain; charset=gbk', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-type'], 'text/plain; charset=gbk'); - }); - - it('should set custom content-type lower case', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'content-type': 'application/javascript; charset=utf8', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-type'], 'application/javascript; charset=utf8'); - }); - }); - - describe('mimetype', () => { - const createFile = async (name, size) => { - size = size || 200 * 1024; - await new Promise(((resolve, reject) => { - const rs = fs.createReadStream('/dev/random', { - start: 0, - end: size - 1, - }); - const ws = fs.createWriteStream(name); - rs.pipe(ws); - ws.on('finish', (err, res) => { - if (err) { - reject(err); - } else { - resolve(res); - } - }); - })); - - return name; - }; - - // TODO wait multipart async await refactor finish then open this case - it.skip('should set mimetype by file ext', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - - await this.store.multipartUpload(name, filepath); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - }); - - // TODO wait multipart async await refactor finish then open this case - it.skip('should set mimetype by object key', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - await this.store.multipartUpload(name, filepath); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - }); - - // TODO wait multipart async await refactor finish then open this case - it.skip('should set user-specified mimetype', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath, { mime: 'text/plain' }); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - await this.store.multipartUpload(name, filepath, { - mime: 'text/plain', - }); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - }); - }); - - describe('head()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/head-meta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should head not exists object throw NoSuchKeyError', async () => { - await utils.throws(async () => { - await this.store.head(`${this.name}not-exists`); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - }); - }); - - it('should head exists object with If-Modified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Modified-Since = object modified time', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Modified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Unmodified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-Unmodified-Since = object modified time', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Unmodified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Match equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should head exists object with If-Match not equal etag', async () => { - await utils.throws(async () => { - await this.store.head(this.name, { - headers: { - 'If-Match': '"foo-etag"', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-None-Match equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(info.meta, null); - assert.equal(info.status, 304); - }); - - it('should head exists object with If-None-Match not equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-None-Match': '"foo-etag"', - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - }); - - describe('get()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/get-meta.js`; - let object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta.js`; - object = await this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should store object to local file', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = await this.store.get(this.name, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should escape uri path ok', async () => { - const savepath = path.join(tmpdir, this.needEscapeName.replace(/\//g, '-')); - const result = await this.store.get(this.needEscapeName, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should throw error when save path parent dir not exists', async () => { - const savepath = path.join(tmpdir, 'not-exists', this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(this.name, savepath); - }, /ENOENT/); - }); - - it('should store object to writeStream', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = await this.store.get(this.name, fs.createWriteStream(savepath)); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should store not exists object to file', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(`${this.name}not-exists`, savepath); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert(!fs.existsSync(savepath)); - }); - }); - - it('should throw error when writeStream emit error', async () => { - const savepath = path.join(tmpdir, 'not-exists-dir', this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(this.name, fs.createWriteStream(savepath)); - }, /ENOENT/); - }); - - it('should get object content buffer', async () => { - let result = await this.store.get(this.name); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - - result = await this.store.get(this.name, null); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should get object content buffer with image process', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-get-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = await this.store.get(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - // assert.deepEqual(result.content == fs.readFileSync(processedImagePath), - // 'get content should be same as test/nodejs-processed-w200.png'); - - // it should use the value of process - // when 'subres.x-oss-process' coexists with 'process'. - result = await this.store.get( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - }); - - it('should throw NoSuchKeyError when object not exists', async () => { - const { store } = this; - await utils.throws(async () => { - await store.get('not-exists-key'); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - assert.equal(err.message, 'The specified key does not exist.'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 200 when If-Modified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-Modified-Since = object modified time', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should throw PreconditionFailedError when If-Unmodified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.status, 412); - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(typeof err.requestId, 'string'); - assert.equal(typeof err.hostId, 'string'); - }); - }); - - it('should 200 when If-Unmodified-Since = object modified time', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should 200 when If-Unmodified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - }); - - describe('If-Match header', () => { - it('should 200 when If-Match equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Match not equal object etag', async () => { - await utils.throws(async () => { - await this.store.get(this.name, { - headers: { - 'If-Match': 'foo', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - }); - - describe('If-None-Match header', () => { - it('should 200 when If-None-Match not equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-None-Match': 'foo', - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-None-Match equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.content.length, 0); - }); - }); - - describe('Range header', () => { - it('should work with Range header and get top 10 bytes content', async () => { - const result = await this.store.get(this.name, { - headers: { - Range: 'bytes=0-9', - }, - }); - assert.equal(result.res.headers['content-length'], '10'); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.toString(), '\'use stric'); - }); - }); - }); - - describe('signatureUrl()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/signatureUrl.js`; - let object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta-signatureUrl.js`; - object = await this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should signature url get object ok', async () => { - const result = await this.store.get(this.name); - const url = this.store.signatureUrl(this.name); - const urlRes = await urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with image processed and get object ok', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-signature-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - const signUrl = this.store.signatureUrl(name, { expires: 3600, process: 'image/resize,w_200' }); - const processedKeyword = 'x-oss-process=image%2Fresize%2Cw_200'; - assert.equal(signUrl.match(processedKeyword), processedKeyword); - const urlRes = await urllib.request(signUrl); - assert.equal(urlRes.status, 200); - // assert(urlRes.data.toString() == fs.readFileSync(processedImagePath, 'utf8'), - // 'response content should be same as test/nodejs-processed-w200.png'); - }); - - it('should signature url for PUT', async () => { - const url = this.store.signatureUrl(this.name, { method: 'PUT' }); - const res = await urllib.request(url, { method: 'PUT' }); - assert.equal(res.status, 200); - }); - - it('should signature url get need escape object ok', async () => { - const result = await this.store.get(this.needEscapeName); - const url = this.store.signatureUrl(this.needEscapeName); - const urlRes = await urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with custom host ok', () => { - const conf = {}; - copy(config).to(conf); - conf.endpoint = 'www.aliyun.com'; - conf.cname = true; - const store = oss(conf); - - const url = store.signatureUrl(this.name); - // http://www.aliyun.com/darwin-v4.4.2/ali-sdk/oss/get-meta.js?OSSAccessKeyId= - assert.equal(url.indexOf('http://www.aliyun.com/'), 0); - }); - }); - - describe('getStream()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/get-stream.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - this.headers = object.res.headers; - }); - - it('should get exists object stream', async () => { - const result = await this.store.getStream(this.name); - assert.equal(result.res.status, 200); - assert(result.stream instanceof Readable); - const tmpfile = path.join(tmpdir, 'get-stream.js'); - const tmpstream = fs.createWriteStream(tmpfile); - - function finish() { - return new Promise((resolve) => { - tmpstream.on('finish', () => { - resolve(); - }); - }); - } - - result.stream.pipe(tmpstream); - await finish(); - assert.equal(fs.readFileSync(tmpfile, 'utf8'), fs.readFileSync(__filename, 'utf8')); - }); - - it('should get image stream with image process', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-getstream-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - const processedImagePath = path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = await this.store.getStream(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - let isEqual = await streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - result = await this.store.getStream( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - isEqual = await streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - }); - - it('should throw error when object not exists', async () => { - try { - await this.store.getStream(`${this.name}not-exists`); - throw new Error('should not run this'); - } catch (err) { - assert.equal(err.name, 'NoSuchKeyError'); - } - }); - }); - - describe('delete()', () => { - it('should delete exsits object', async () => { - const name = `${prefix}ali-sdk/oss/delete.js`; - await this.store.put(name, __filename); - - const info = await this.store.delete(name); - assert.equal(info.res.status, 204); - - await utils.throws(async () => { - await this.store.head(name); - }, 'NoSuchKeyError'); - }); - - it('should delete not exists object', async () => { - const info = await this.store.delete('not-exists-name'); - assert.equal(info.res.status, 204); - }); - }); - - describe('deleteMulti()', () => { - beforeEach(async () => { - this.names = []; - let name = `${prefix}ali-sdk/oss/deleteMulti0.js`; - this.names.push(name); - await this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti1.js`; - this.names.push(name); - await this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti2.js`; - this.names.push(name); - await this.store.put(name, __filename); - }); - - it('should delete 3 exists objs', async () => { - const result = await this.store.deleteMulti(this.names); - assert.deepEqual(result.deleted, this.names); - assert.equal(result.res.status, 200); - }); - - it('should delete 2 exists and 2 not exists objs', async () => { - const result = await this.store.deleteMulti(this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.deepEqual(result.deleted, this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.equal(result.res.status, 200); - }); - - it('should delete 1 exists objs', async () => { - const result = await this.store.deleteMulti(this.names.slice(0, 1)); - assert.deepEqual(result.deleted, this.names.slice(0, 1)); - assert.equal(result.res.status, 200); - }); - - it('should delete in quiet mode', async () => { - const result = await this.store.deleteMulti(this.names, { - quiet: true, - }); - assert.equal(result.deleted, null); - assert.equal(result.res.status, 200); - }); - }); - - describe('copy()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/copy-meta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should copy object from same bucket', async () => { - const name = `${prefix}ali-sdk/oss/copy-new.js`; - const result = await this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name', async () => { - const sourceName = `${prefix}ali-sdk/oss/copy-meta_测试.js`; - let result = await this.store.put(sourceName, __filename, { - meta: { - uid: 2, - pid: '1234', - slus: 'test1.html', - }, - }); - - const name = `${prefix}ali-sdk/oss/copy-new_测试.js`; - result = await this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert.equal(info.meta.pid, '1234'); - assert.equal(info.meta.slus, 'test1.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name and bucket', async () => { - let sourceName = `${prefix}ali-sdk/oss/copy-meta_测试2.js`; - let result = await this.store.put(sourceName, __filename, { - meta: { - uid: 3, - pid: '12345', - slus: 'test2.html', - }, - }); - - let info = await this.store.head(sourceName); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - - sourceName = `/${this.bucket}/${sourceName}`; - const name = `${prefix}ali-sdk/oss/copy-new_测试2.js`; - result = await this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - info = await this.store.head(name); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - }); - - it('should copy object and set other meta', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-2.js`; - const result = await this.store.copy(name, this.name, { - meta: { - uid: '2', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - assert.equal(info.status, 200); - }); - - it('should use copy to change exists object headers', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-3.js`; - let result = await this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - let info = await this.store.head(name); - assert(!info.res.headers['cache-control']); - - // add Cache-Control header to a exists object - result = await this.store.copy(name, name, { - headers: { - 'Cache-Control': 'max-age=0, s-maxage=86400', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - info = await this.store.head(name); - assert.equal(info.res.headers['cache-control'], 'max-age=0, s-maxage=86400'); - }); - - it('should throw NoSuchKeyError when source object not exists', async () => { - await utils.throws(async () => { - await this.store.copy('new-object', 'not-exists-object'); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.message, 'The specified key does not exist.'); - assert.equal(err.status, 404); - }); - }); - - describe('If-Match header', () => { - it('should throw PreconditionFailedError when If-Match not equal source object etag', async () => { - await utils.throws(async () => { - await this.store.copy('new-name', this.name, { - headers: { - 'If-Match': 'foo-bar', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Match)'); - assert.equal(err.status, 412); - }); - }); - - it('should copy object when If-Match equal source object etag', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Match.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-None-Match header', () => { - it('should return 304 when If-None-Match equal source object etag', async () => { - const result = await this.store.copy('new-name', this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.data, null); - }); - - it('should copy object when If-None-Match not equal source object etag', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-None-Match.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-None-Match': 'foo-bar', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 304 when If-Modified-Since > source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since >= source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 200 when If-Modified-Since < source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(result.res.status, 200); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should 200 when If-Unmodified-Since > source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 200 when If-Unmodified-Since >= source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Unmodified-Since < source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(err.status, 412); - }); - }); - }); - }); - - describe('putMeta()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/putMeta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should update exists object meta', async () => { - await this.store.putMeta(this.name, { - uid: '2', - }); - const info = await this.store.head(this.name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - }); - - it('should throw NoSuchKeyError when update not exists object meta', async () => { - await utils.throws(async () => { - await this.store.putMeta(`${this.name}not-exists`, { - uid: '2', - }); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - }); - }); - }); - - describe('list()', () => { - // oss.jpg - // fun/test.jpg - // fun/movie/001.avi - // fun/movie/007.avi - before(async () => { - const listPrefix = `${prefix}ali-sdk/list/`; - await this.store.put(`${listPrefix}oss.jpg`, new Buffer('oss.jpg')); - await this.store.put(`${listPrefix}fun/test.jpg`, new Buffer('fun/test.jpg')); - await this.store.put(`${listPrefix}fun/movie/001.avi`, new Buffer('fun/movie/001.avi')); - await this.store.put(`${listPrefix}fun/movie/007.avi`, new Buffer('fun/movie/007.avi')); - await this.store.put(`${listPrefix}other/movie/007.avi`, new Buffer('other/movie/007.avi')); - await this.store.put(`${listPrefix}other/movie/008.avi`, new Buffer('other/movie/008.avi')); - this.listPrefix = listPrefix; - }); - - function checkObjectProperties(obj) { - assert.equal(typeof obj.name, 'string'); - assert.equal(typeof obj.lastModified, 'string'); - assert.equal(typeof obj.etag, 'string'); - assert(obj.type === 'Normal' || obj.type === 'Multipart'); - assert.equal(typeof obj.size, 'number'); - assert.equal(obj.storageClass, 'Standard'); - assert.equal(typeof obj.owner, 'object'); - assert.equal(typeof obj.owner.id, 'string'); - assert.equal(typeof obj.owner.displayName, 'string'); - } - - it('should list only 1 object', async () => { - const result = await this.store.list({ - 'max-keys': 1, - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list top 3 objects', async () => { - const result = await this.store.list({ - 'max-keys': 3, - }); - assert.equal(result.objects.length, 3); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - - // next 2 - const result2 = await this.store.list({ - 'max-keys': 2, - marker: result.nextMarker, - }); - assert.equal(result2.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(typeof result2.nextMarker, 'string'); - assert(result2.isTruncated); - assert.equal(result2.prefixes, null); - }); - - it('should list with prefix', async () => { - let result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list current dir files only', async () => { - let result = await this.store.list({ - prefix: this.listPrefix, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/`, `${this.listPrefix}other/`]); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/movie/`]); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - }); - - describe('object key encoding', () => { - it('should encode variant object keys', async () => { - const prefixz = 'ali-oss-test-key-'; - const keys = { - simple: 'simple_key', - chinese: '杭州・中国', - space: '是 空格 yeah +-/\\&*#(1) ', - invisible: '\x01\x0a\x0c\x07\x50\x63', - xml: 'ad +', - }; - - const names = []; - /* eslint no-restricted-syntax: [0] */ - /* eslint guard-for-in: [0] */ - /* eslint no-await-in-loop: [0] */ - for (const k in keys) { - const key = prefixz + keys[k]; - let result = await this.store.put(key, new Buffer('')); - assert.equal(result.res.status, 200); - - result = await this.store.list({ - prefixz, - }); - const objects = result.objects.map(obj => obj.name); - assert(objects.indexOf(key) >= 0); - - result = await this.store.head(key); - assert.equal(result.res.status, 200); - - names.push(keys[k]); - } - - const result = await this.store.deleteMulti(names); - assert.equal(result.res.status, 200); - assert.deepEqual(result.deleted, names); - }); - }); - - describe('putACL(), getACL()', () => { - it('should put and get object ACL', async () => { - const name = `${prefix}object/acl`; - let result = await this.store.put(name, new Buffer('hello world')); - assert.equal(result.res.status, 200); - - result = await this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'default'); - - result = await this.store.putACL(name, 'public-read'); - assert.equal(result.res.status, 200); - - result = await this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'public-read'); - - result = await this.store.get(name); - assert.equal(result.res.status, 200); - assert.deepEqual(result.content, new Buffer('hello world')); - }); - }); - - describe('append()', () => { - const name = `/${prefix}ali-sdk/oss/apend${Date.now()}`; - afterEach(async () => { - await this.store.delete(name); - }); - - it('should apend object with content buffer', async () => { - let object = await this.store.append(name, new Buffer('foo')); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '3'); - assert(object.res.headers['x-oss-next-append-position'] === '3'); - - let res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foo'); - assert(res.headers['x-oss-next-append-position'] === '3'); - - object = await this.store.append(name, new Buffer('bar'), { - position: 3, - }); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '6'); - assert(object.res.headers['x-oss-next-append-position'] === '6'); - - res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobar'); - assert(res.headers['x-oss-next-append-position'] === '6'); - }); - - it('should apend object with local file path', async () => { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = await this.store.append(name, file); - assert(object.nextAppendPosition === '16'); - - object = await this.store.append(name, file, { position: 16 }); - assert(object.nextAppendPosition === '32'); - }); - - it('should apend object with readstream', async () => { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = await this.store.append(name, fs.createReadStream(file)); - assert(object.nextAppendPosition === '16'); - - object = await this.store.append(name, fs.createReadStream(file), { - position: 16, - }); - assert(object.nextAppendPosition === '32'); - }); - - it('should error when positio not match', async () => { - await this.store.append(name, new Buffer('foo')); - - try { - await this.store.append(name, new Buffer('foo')); - throw new Error('should not run'); - } catch (err) { - assert(err.message === 'Position is not equal to file length'); - assert(err.name === 'PositionNotEqualToLengthError'); - } - }); - - it('should use nextAppendPosition to append next', async () => { - let object = await this.store.append(name, new Buffer('foo')); - assert(object.nextAppendPosition === '3'); - - object = await this.store.append(name, new Buffer('bar'), { - position: object.nextAppendPosition, - }); - - object = await this.store.append(name, new Buffer('baz'), { - position: object.nextAppendPosition, - }); - - const res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobarbaz'); - assert(res.headers['x-oss-next-append-position'] === '9'); - }); - }); -}); diff --git a/test/node/.tmp/darwin-v9.8.0-ali-sdk-oss-%3get+meta.js b/test/node/.tmp/darwin-v9.8.0-ali-sdk-oss-%3get+meta.js deleted file mode 100644 index 8c1eeeb42..000000000 --- a/test/node/.tmp/darwin-v9.8.0-ali-sdk-oss-%3get+meta.js +++ /dev/null @@ -1,1490 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const assert = require('assert'); -const { Readable } = require('stream'); -const utils = require('./utils'); -const oss = require('../'); -const config = require('./config').oss; -const urllib = require('urllib'); -const copy = require('copy-to'); -const mm = require('mm'); -const streamEqual = require('stream-equal'); - -const tmpdir = path.join(__dirname, '.tmp'); -if (!fs.existsSync(tmpdir)) { - fs.mkdirSync(tmpdir); -} - -describe('test/object.test.js', () => { - const { prefix } = utils; - - before(async () => { - this.store = oss(config); - this.bucket = `ali-oss-test-object-bucket-${prefix.replace(/[/.]/g, '-')}`; - this.bucket = this.bucket.substring(0, this.bucket.length - 1); - this.region = config.region; - // console.log('current buckets: %j', - // (yield this.store.listBuckets()).buckets.map(function (item) { - // return item.name + ':' + item.region; - // }) - // ); - await this.store.putBucket(this.bucket, this.region); - this.store.useBucket(this.bucket, this.region); - }); - - after(async () => { - await utils.cleanBucket(this.store, this.bucket, this.region); - }); - - describe('putStream()', () => { - afterEach(mm.restore); - - it('should add object with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/putStream-localfile.js`; - const object = await this.store.putStream(name, fs.createReadStream(__filename)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - assert(object.url); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.content.toString(), fs.readFileSync(__filename, 'utf8')); - }); - - it('should use chunked encoding', async () => { - const name = `${prefix}ali-sdk/oss/chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const result = await this.store.putStream(name, fs.createReadStream(__filename)); - - assert.equal(result.res.status, 200); - assert.equal(header['Transfer-Encoding'], 'chunked'); - }); - - it('should NOT use chunked encoding', async () => { - const name = `${prefix}ali-sdk/oss/no-chunked-encoding.js`; - let header; - const req = this.store.urllib.request; - mm(this.store.urllib, 'request', (url, args) => { - header = args.headers; - return req(url, args); - }); - - const options = { - contentLength: fs.statSync(__filename).size, - }; - const result = await this.store.putStream(name, fs.createReadStream(__filename), options); - - assert(!header['Transfer-Encoding']); - assert.equal(result.res.status, 200); - }); - - it('should add image with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-1024x768.png`; - const imagepath = path.join(__dirname, 'nodejs-1024x768.png'); - const object = await this.store.putStream(name, fs.createReadStream(imagepath), { - mime: 'image/png', - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'image/png'); - const buf = fs.readFileSync(imagepath); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - - it('should add very big file: 4mb with streaming way', async () => { - const name = `${prefix}ali-sdk/oss/bigfile-4mb.bin`; - const bigfile = path.join(__dirname, '.tmp', 'bigfile-4mb.bin'); - fs.writeFileSync(bigfile, Buffer.alloc(4 * 1024 * 1024).fill('a\n')); - const object = await this.store.putStream(name, fs.createReadStream(bigfile)); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - // check content - const r = await this.store.get(name); - assert.equal(r.res.status, 200); - assert.equal(r.res.headers['content-type'], 'application/octet-stream'); - assert.equal(r.res.size, 4 * 1024 * 1024); - const buf = fs.readFileSync(bigfile); - assert.equal(r.content.length, buf.length); - assert.deepEqual(r.content, buf); - }); - }); - - describe('getObjectUrl()', () => { - it('should return object url', () => { - let name = 'test.js'; - let url = this.store.getObjectUrl(name); - assert.equal(url, this.store.options.endpoint.format() + name); - - name = '/foo/bar/a%2Faa/test&+-123~!.js'; - url = this.store.getObjectUrl(name, 'https://foo.com'); - assert.equal(url, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - const url2 = this.store.getObjectUrl(name, 'https://foo.com/'); - assert.equal(url2, 'https://foo.com/foo/bar/a%252Faa/test%26%2B-123~!.js'); - }); - }); - - describe('put()', () => { - it('should add object with local file path', async () => { - const name = `${prefix}ali-sdk/oss/put-localfile.js`; - const object = await this.store.put(name, __filename); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - }); - - it('should add object with content buffer', async () => { - const name = `${prefix}ali-sdk/oss/put-buffer`; - const object = await this.store.put(`/${name}`, new Buffer('foo content')); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert(object.name, name); - }); - - it('should add object with readstream', async () => { - const name = `${prefix}ali-sdk/oss/put-readstream`; - const stat = await this.store._statFile(__filename); - const object = await this.store.put(name, fs.createReadStream(__filename), { - headers: { - 'Content-Length': stat.size, - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(typeof object.res.headers.etag, 'string'); - assert(object.name, name); - }); - - it('should add object with meta', async () => { - const name = `${prefix}ali-sdk/oss/put-meta.js`; - const object = await this.store.put(name, __filename, { - meta: { - uid: 1, - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - assert.equal(typeof object.res.rt, 'number'); - assert.equal(object.res.size, 0); - assert(object.name, name); - - const info = await this.store.head(name); - assert.deepEqual(info.meta, { - uid: '1', - slus: 'test.html', - }); - assert.equal(info.status, 200); - }); - - it('should set Content-Disposition with ascii name', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Disposition': 'ascii-name.js', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'ascii-name.js'); - }); - - it('should set Content-Disposition with no-ascii name', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Disposition.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Disposition': encodeURIComponent('non-ascii-名字.js'), - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-disposition'], 'non-ascii-%E5%90%8D%E5%AD%97.js'); - }); - - it('should set Expires', async () => { - const name = `${prefix}ali-sdk/oss/put-Expires.js`; - const object = await this.store.put(name, __filename, { - headers: { - Expires: 1000000, - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers.expires, '1000000'); - }); - - it('should set custom Content-Type', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'Content-Type': 'text/plain; charset=gbk', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-type'], 'text/plain; charset=gbk'); - }); - - it('should set custom content-type lower case', async () => { - const name = `${prefix}ali-sdk/oss/put-Content-Type.js`; - const object = await this.store.put(name, __filename, { - headers: { - 'content-type': 'application/javascript; charset=utf8', - }, - }); - assert(object.name, name); - const info = await this.store.head(name); - assert.equal(info.res.headers['content-type'], 'application/javascript; charset=utf8'); - }); - }); - - describe('mimetype', () => { - const createFile = async (name, size) => { - size = size || 200 * 1024; - await new Promise(((resolve, reject) => { - const rs = fs.createReadStream('/dev/random', { - start: 0, - end: size - 1, - }); - const ws = fs.createWriteStream(name); - rs.pipe(ws); - ws.on('finish', (err, res) => { - if (err) { - reject(err); - } else { - resolve(res); - } - }); - })); - - return name; - }; - - it('should set mimetype by file ext', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - - await this.store.multipartUpload(name, filepath); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/jpeg'); - }); - - it('should set mimetype by object key', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - await this.store.multipartUpload(name, filepath); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'image/png'); - }); - - it('should set user-specified mimetype', async () => { - const filepath = path.join(tmpdir, 'content-type-by-file.jpg'); - await createFile(filepath); - const name = `${prefix}ali-sdk/oss/content-type-by-file.png`; - await this.store.put(name, filepath, { mime: 'text/plain' }); - - let result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - await this.store.multipartUpload(name, filepath, { - mime: 'text/plain', - }); - result = await this.store.head(name); - assert.equal(result.res.headers['content-type'], 'text/plain'); - }); - }); - - describe('head()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/head-meta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should head not exists object throw NoSuchKeyError', async () => { - await utils.throws(async () => { - await this.store.head(`${this.name}not-exists`); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - }); - }); - - it('should head exists object with If-Modified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Modified-Since = object modified time', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Modified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = await this.store.head(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(info.status, 304); - assert.equal(info.meta, null); - }); - - it('should head exists object with If-Unmodified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-Unmodified-Since = object modified time', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Unmodified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - - const info = await this.store.head(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(info.status, 200); - assert(info.meta); - }); - - it('should head exists object with If-Match equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should head exists object with If-Match not equal etag', async () => { - await utils.throws(async () => { - await this.store.head(this.name, { - headers: { - 'If-Match': '"foo-etag"', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - - it('should head exists object with If-None-Match equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(info.meta, null); - assert.equal(info.status, 304); - }); - - it('should head exists object with If-None-Match not equal etag', async () => { - const info = await this.store.head(this.name, { - headers: { - 'If-None-Match': '"foo-etag"', - }, - }); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - }); - - describe('get()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/get-meta.js`; - let object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta.js`; - object = await this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should store object to local file', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = await this.store.get(this.name, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should escape uri path ok', async () => { - const savepath = path.join(tmpdir, this.needEscapeName.replace(/\//g, '-')); - const result = await this.store.get(this.needEscapeName, savepath); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should throw error when save path parent dir not exists', async () => { - const savepath = path.join(tmpdir, 'not-exists', this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(this.name, savepath); - }, /ENOENT/); - }); - - it('should store object to writeStream', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - const result = await this.store.get(this.name, fs.createWriteStream(savepath)); - assert.equal(result.res.status, 200); - assert.equal(fs.statSync(savepath).size, fs.statSync(__filename).size); - }); - - it('should store not exists object to file', async () => { - const savepath = path.join(tmpdir, this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(`${this.name}not-exists`, savepath); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert(!fs.existsSync(savepath)); - }); - }); - - it('should throw error when writeStream emit error', async () => { - const savepath = path.join(tmpdir, 'not-exists-dir', this.name.replace(/\//g, '-')); - await utils.throws(async () => { - await this.store.get(this.name, fs.createWriteStream(savepath)); - }, /ENOENT/); - }); - - it('should get object content buffer', async () => { - let result = await this.store.get(this.name); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - - result = await this.store.get(this.name, null); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should get object content buffer with image process', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-get-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = await this.store.get(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - // assert.deepEqual(result.content == fs.readFileSync(processedImagePath), - // 'get content should be same as test/nodejs-processed-w200.png'); - - // it should use the value of process - // when 'subres.x-oss-process' coexists with 'process'. - result = await this.store.get( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - }); - - it('should throw NoSuchKeyError when object not exists', async () => { - const { store } = this; - await utils.throws(async () => { - await store.get('not-exists-key'); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - assert.equal(typeof err.requestId, 'string'); - assert.equal(err.message, 'The specified key does not exist.'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 200 when If-Modified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-Modified-Since = object modified time', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.length, 0); - assert.equal(result.res.status, 304); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should throw PreconditionFailedError when If-Unmodified-Since < object modified time', async () => { - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.status, 412); - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(typeof err.requestId, 'string'); - assert.equal(typeof err.hostId, 'string'); - }); - }); - - it('should 200 when If-Unmodified-Since = object modified time', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - - it('should 200 when If-Unmodified-Since > object modified time', async () => { - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.get(this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert(result.content.toString().indexOf('ali-sdk/oss/get-meta.js') > 0); - }); - }); - - describe('If-Match header', () => { - it('should 200 when If-Match equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Match not equal object etag', async () => { - await utils.throws(async () => { - await this.store.get(this.name, { - headers: { - 'If-Match': 'foo', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.status, 412); - }); - }); - }); - - describe('If-None-Match header', () => { - it('should 200 when If-None-Match not equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-None-Match': 'foo', - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 304 when If-None-Match equal object etag', async () => { - const result = await this.store.get(this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.content.length, 0); - }); - }); - - describe('Range header', () => { - it('should work with Range header and get top 10 bytes content', async () => { - const result = await this.store.get(this.name, { - headers: { - Range: 'bytes=0-9', - }, - }); - assert.equal(result.res.headers['content-length'], '10'); - assert(Buffer.isBuffer(result.content), 'content should be Buffer'); - assert.equal(result.content.toString(), '\'use stric'); - }); - }); - }); - - describe('signatureUrl()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/signatureUrl.js`; - let object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - - this.needEscapeName = `${prefix}ali-sdk/oss/%3get+meta-signatureUrl.js`; - object = await this.store.put(this.needEscapeName, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - }); - - it('should signature url get object ok', async () => { - const result = await this.store.get(this.name); - const url = this.store.signatureUrl(this.name); - const urlRes = await urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with image processed and get object ok', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-signature-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - const signUrl = this.store.signatureUrl(name, { expires: 3600, process: 'image/resize,w_200' }); - const processedKeyword = 'x-oss-process=image%2Fresize%2Cw_200'; - assert.equal(signUrl.match(processedKeyword), processedKeyword); - const urlRes = await urllib.request(signUrl); - assert.equal(urlRes.status, 200); - // assert(urlRes.data.toString() == fs.readFileSync(processedImagePath, 'utf8'), - // 'response content should be same as test/nodejs-processed-w200.png'); - }); - - it('should signature url for PUT', async () => { - const url = this.store.signatureUrl(this.name, { method: 'PUT' }); - const res = await urllib.request(url, { method: 'PUT' }); - assert.equal(res.status, 200); - }); - - it('should signature url get need escape object ok', async () => { - const result = await this.store.get(this.needEscapeName); - const url = this.store.signatureUrl(this.needEscapeName); - const urlRes = await urllib.request(url); - assert.equal(urlRes.data.toString(), result.content.toString()); - }); - - it('should signature url with custom host ok', () => { - const conf = {}; - copy(config).to(conf); - conf.endpoint = 'www.aliyun.com'; - conf.cname = true; - const store = oss(conf); - - const url = store.signatureUrl(this.name); - // http://www.aliyun.com/darwin-v4.4.2/ali-sdk/oss/get-meta.js?OSSAccessKeyId= - assert.equal(url.indexOf('http://www.aliyun.com/'), 0); - }); - }); - - describe('getStream()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/get-stream.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - this.headers = object.res.headers; - }); - - it('should get exists object stream', async () => { - const result = await this.store.getStream(this.name); - assert.equal(result.res.status, 200); - assert(result.stream instanceof Readable); - const tmpfile = path.join(tmpdir, 'get-stream.js'); - const tmpstream = fs.createWriteStream(tmpfile); - - function finish() { - return new Promise((resolve) => { - tmpstream.on('finish', () => { - resolve(); - }); - }); - } - - result.stream.pipe(tmpstream); - await finish(); - assert.equal(fs.readFileSync(tmpfile, 'utf8'), fs.readFileSync(__filename, 'utf8')); - }); - - it('should get image stream with image process', async () => { - const name = `${prefix}ali-sdk/oss/nodejs-test-getstream-image-1024x768.png`; - const originImagePath = path.join(__dirname, 'nodejs-1024x768.png'); - const processedImagePath = path.join(__dirname, 'nodejs-processed-w200.png'); - await this.store.put(name, originImagePath, { - mime: 'image/png', - }); - - let result = await this.store.getStream(name, { process: 'image/resize,w_200' }); - assert.equal(result.res.status, 200); - let isEqual = await streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - result = await this.store.getStream( - name, - { process: 'image/resize,w_200', subres: { 'x-oss-process': 'image/resize,w_100' } }, - ); - assert.equal(result.res.status, 200); - isEqual = await streamEqual(result.stream, fs.createReadStream(processedImagePath)); - assert(isEqual); - }); - - it('should throw error when object not exists', async () => { - try { - await this.store.getStream(`${this.name}not-exists`); - throw new Error('should not run this'); - } catch (err) { - assert.equal(err.name, 'NoSuchKeyError'); - } - }); - }); - - describe('delete()', () => { - it('should delete exsits object', async () => { - const name = `${prefix}ali-sdk/oss/delete.js`; - await this.store.put(name, __filename); - - const info = await this.store.delete(name); - assert.equal(info.res.status, 204); - - await utils.throws(async () => { - await this.store.head(name); - }, 'NoSuchKeyError'); - }); - - it('should delete not exists object', async () => { - const info = await this.store.delete('not-exists-name'); - assert.equal(info.res.status, 204); - }); - }); - - describe('deleteMulti()', () => { - beforeEach(async () => { - this.names = []; - let name = `${prefix}ali-sdk/oss/deleteMulti0.js`; - this.names.push(name); - await this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti1.js`; - this.names.push(name); - await this.store.put(name, __filename); - - name = `${prefix}ali-sdk/oss/deleteMulti2.js`; - this.names.push(name); - await this.store.put(name, __filename); - }); - - it('should delete 3 exists objs', async () => { - const result = await this.store.deleteMulti(this.names); - assert.deepEqual(result.deleted, this.names); - assert.equal(result.res.status, 200); - }); - - it('should delete 2 exists and 2 not exists objs', async () => { - const result = await this.store.deleteMulti(this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.deepEqual(result.deleted, this.names.slice(0, 2).concat(['not-exist1', 'not-exist2'])); - assert.equal(result.res.status, 200); - }); - - it('should delete 1 exists objs', async () => { - const result = await this.store.deleteMulti(this.names.slice(0, 1)); - assert.deepEqual(result.deleted, this.names.slice(0, 1)); - assert.equal(result.res.status, 200); - }); - - it('should delete in quiet mode', async () => { - const result = await this.store.deleteMulti(this.names, { - quiet: true, - }); - assert.equal(result.deleted, null); - assert.equal(result.res.status, 200); - }); - }); - - describe('copy()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/copy-meta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should copy object from same bucket', async () => { - const name = `${prefix}ali-sdk/oss/copy-new.js`; - const result = await this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '1'); - assert.equal(info.meta.pid, '123'); - assert.equal(info.meta.slus, 'test.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name', async () => { - const sourceName = `${prefix}ali-sdk/oss/copy-meta_测试.js`; - let result = await this.store.put(sourceName, __filename, { - meta: { - uid: 2, - pid: '1234', - slus: 'test1.html', - }, - }); - - const name = `${prefix}ali-sdk/oss/copy-new_测试.js`; - result = await this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert.equal(info.meta.pid, '1234'); - assert.equal(info.meta.slus, 'test1.html'); - assert.equal(info.status, 200); - }); - - it('should copy object with non-english name and bucket', async () => { - let sourceName = `${prefix}ali-sdk/oss/copy-meta_测试2.js`; - let result = await this.store.put(sourceName, __filename, { - meta: { - uid: 3, - pid: '12345', - slus: 'test2.html', - }, - }); - - let info = await this.store.head(sourceName); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - - sourceName = `/${this.bucket}/${sourceName}`; - const name = `${prefix}ali-sdk/oss/copy-new_测试2.js`; - result = await this.store.copy(name, sourceName); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - info = await this.store.head(name); - assert.equal(info.meta.uid, '3'); - assert.equal(info.meta.pid, '12345'); - assert.equal(info.meta.slus, 'test2.html'); - assert.equal(info.status, 200); - }); - - it('should copy object and set other meta', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-2.js`; - const result = await this.store.copy(name, this.name, { - meta: { - uid: '2', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - - const info = await this.store.head(name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - assert.equal(info.status, 200); - }); - - it('should use copy to change exists object headers', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-3.js`; - let result = await this.store.copy(name, this.name); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - let info = await this.store.head(name); - assert(!info.res.headers['cache-control']); - - // add Cache-Control header to a exists object - result = await this.store.copy(name, name, { - headers: { - 'Cache-Control': 'max-age=0, s-maxage=86400', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - info = await this.store.head(name); - assert.equal(info.res.headers['cache-control'], 'max-age=0, s-maxage=86400'); - }); - - it('should throw NoSuchKeyError when source object not exists', async () => { - await utils.throws(async () => { - await this.store.copy('new-object', 'not-exists-object'); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.message, 'The specified key does not exist.'); - assert.equal(err.status, 404); - }); - }); - - describe('If-Match header', () => { - it('should throw PreconditionFailedError when If-Match not equal source object etag', async () => { - await utils.throws(async () => { - await this.store.copy('new-name', this.name, { - headers: { - 'If-Match': 'foo-bar', - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Match)'); - assert.equal(err.status, 412); - }); - }); - - it('should copy object when If-Match equal source object etag', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Match.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-None-Match header', () => { - it('should return 304 when If-None-Match equal source object etag', async () => { - const result = await this.store.copy('new-name', this.name, { - headers: { - 'If-None-Match': this.headers.etag, - }, - }); - assert.equal(result.res.status, 304); - assert.equal(result.data, null); - }); - - it('should copy object when If-None-Match not equal source object etag', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-None-Match.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-None-Match': 'foo-bar', - }, - }); - assert.equal(result.res.status, 200); - assert.equal(typeof result.data.etag, 'string'); - assert.equal(typeof result.data.lastModified, 'string'); - }); - }); - - describe('If-Modified-Since header', () => { - it('should 304 when If-Modified-Since > source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 304 when If-Modified-Since >= source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 304); - }); - - it('should 200 when If-Modified-Since < source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Modified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Modified-Since': lastYear, - }, - }); - assert.equal(result.res.status, 200); - }); - }); - - describe('If-Unmodified-Since header', () => { - it('should 200 when If-Unmodified-Since > source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let nextYear = new Date(this.headers.date); - nextYear.setFullYear(nextYear.getFullYear() + 1); - nextYear = nextYear.toGMTString(); - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': nextYear, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should 200 when If-Unmodified-Since >= source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - const result = await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': this.headers.date, - }, - }); - assert.equal(result.res.status, 200); - }); - - it('should throw PreconditionFailedError when If-Unmodified-Since < source object modified time', async () => { - const name = `${prefix}ali-sdk/oss/copy-new-If-Unmodified-Since.js`; - let lastYear = new Date(this.headers.date); - lastYear.setFullYear(lastYear.getFullYear() - 1); - lastYear = lastYear.toGMTString(); - await utils.throws(async () => { - await this.store.copy(name, this.name, { - headers: { - 'If-Unmodified-Since': lastYear, - }, - }); - }, (err) => { - assert.equal(err.name, 'PreconditionFailedError'); - assert.equal(err.message, 'At least one of the pre-conditions you specified did not hold. (condition: If-Unmodified-Since)'); - assert.equal(err.status, 412); - }); - }); - }); - }); - - describe('putMeta()', () => { - before(async () => { - this.name = `${prefix}ali-sdk/oss/putMeta.js`; - const object = await this.store.put(this.name, __filename, { - meta: { - uid: 1, - pid: '123', - slus: 'test.html', - }, - }); - assert.equal(typeof object.res.headers['x-oss-request-id'], 'string'); - this.headers = object.res.headers; - }); - - it('should update exists object meta', async () => { - await this.store.putMeta(this.name, { - uid: '2', - }); - const info = await this.store.head(this.name); - assert.equal(info.meta.uid, '2'); - assert(!info.meta.pid); - assert(!info.meta.slus); - }); - - it('should throw NoSuchKeyError when update not exists object meta', async () => { - await utils.throws(async () => { - await this.store.putMeta(`${this.name}not-exists`, { - uid: '2', - }); - }, (err) => { - assert.equal(err.name, 'NoSuchKeyError'); - assert.equal(err.status, 404); - }); - }); - }); - - describe('list()', () => { - // oss.jpg - // fun/test.jpg - // fun/movie/001.avi - // fun/movie/007.avi - before(async () => { - const listPrefix = `${prefix}ali-sdk/list/`; - await this.store.put(`${listPrefix}oss.jpg`, new Buffer('oss.jpg')); - await this.store.put(`${listPrefix}fun/test.jpg`, new Buffer('fun/test.jpg')); - await this.store.put(`${listPrefix}fun/movie/001.avi`, new Buffer('fun/movie/001.avi')); - await this.store.put(`${listPrefix}fun/movie/007.avi`, new Buffer('fun/movie/007.avi')); - await this.store.put(`${listPrefix}other/movie/007.avi`, new Buffer('other/movie/007.avi')); - await this.store.put(`${listPrefix}other/movie/008.avi`, new Buffer('other/movie/008.avi')); - this.listPrefix = listPrefix; - }); - - function checkObjectProperties(obj) { - assert.equal(typeof obj.name, 'string'); - assert.equal(typeof obj.lastModified, 'string'); - assert.equal(typeof obj.etag, 'string'); - assert(obj.type === 'Normal' || obj.type === 'Multipart'); - assert.equal(typeof obj.size, 'number'); - assert.equal(obj.storageClass, 'Standard'); - assert.equal(typeof obj.owner, 'object'); - assert.equal(typeof obj.owner.id, 'string'); - assert.equal(typeof obj.owner.displayName, 'string'); - } - - it('should list only 1 object', async () => { - const result = await this.store.list({ - 'max-keys': 1, - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list top 3 objects', async () => { - const result = await this.store.list({ - 'max-keys': 3, - }); - assert.equal(result.objects.length, 3); - result.objects.map(checkObjectProperties); - assert.equal(typeof result.nextMarker, 'string'); - assert(result.isTruncated); - assert.equal(result.prefixes, null); - - // next 2 - const result2 = await this.store.list({ - 'max-keys': 2, - marker: result.nextMarker, - }); - assert.equal(result2.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(typeof result2.nextMarker, 'string'); - assert(result2.isTruncated); - assert.equal(result2.prefixes, null); - }); - - it('should list with prefix', async () => { - let result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie`, - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - - it('should list current dir files only', async () => { - let result = await this.store.list({ - prefix: this.listPrefix, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/`, `${this.listPrefix}other/`]); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 1); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.deepEqual(result.prefixes, [`${this.listPrefix}fun/movie/`]); - - result = await this.store.list({ - prefix: `${this.listPrefix}fun/movie/`, - delimiter: '/', - }); - assert.equal(result.objects.length, 2); - result.objects.map(checkObjectProperties); - assert.equal(result.nextMarker, null); - assert(!result.isTruncated); - assert.equal(result.prefixes, null); - }); - }); - - describe('object key encoding', () => { - it('should encode variant object keys', async () => { - const prefixz = 'ali-oss-test-key-'; - const keys = { - simple: 'simple_key', - chinese: '杭州・中国', - space: '是 空格 yeah +-/\\&*#(1) ', - invisible: '\x01\x0a\x0c\x07\x50\x63', - xml: 'ad +', - }; - - const names = []; - /* eslint no-restricted-syntax: [0] */ - /* eslint guard-for-in: [0] */ - /* eslint no-await-in-loop: [0] */ - for (const k in keys) { - const key = prefixz + keys[k]; - let result = await this.store.put(key, new Buffer('')); - assert.equal(result.res.status, 200); - - result = await this.store.list({ - prefixz, - }); - const objects = result.objects.map(obj => obj.name); - assert(objects.indexOf(key) >= 0); - - result = await this.store.head(key); - assert.equal(result.res.status, 200); - - names.push(keys[k]); - } - - const result = await this.store.deleteMulti(names); - assert.equal(result.res.status, 200); - assert.deepEqual(result.deleted, names); - }); - }); - - describe('putACL(), getACL()', () => { - it('should put and get object ACL', async () => { - const name = `${prefix}object/acl`; - let result = await this.store.put(name, new Buffer('hello world')); - assert.equal(result.res.status, 200); - - result = await this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'default'); - - result = await this.store.putACL(name, 'public-read'); - assert.equal(result.res.status, 200); - - result = await this.store.getACL(name); - assert.equal(result.res.status, 200); - assert.equal(result.acl, 'public-read'); - - result = await this.store.get(name); - assert.equal(result.res.status, 200); - assert.deepEqual(result.content, new Buffer('hello world')); - }); - }); - - describe('append()', () => { - const name = `/${prefix}ali-sdk/oss/apend${Date.now()}`; - afterEach(async () => { - await this.store.delete(name); - }); - - it('should apend object with content buffer', async () => { - let object = await this.store.append(name, new Buffer('foo')); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '3'); - assert(object.res.headers['x-oss-next-append-position'] === '3'); - - let res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foo'); - assert(res.headers['x-oss-next-append-position'] === '3'); - - object = await this.store.append(name, new Buffer('bar'), { - position: 3, - }); - assert(object.res.status === 200); - assert(object.nextAppendPosition === '6'); - assert(object.res.headers['x-oss-next-append-position'] === '6'); - - res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobar'); - assert(res.headers['x-oss-next-append-position'] === '6'); - }); - - it('should apend object with local file path', async () => { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = await this.store.append(name, file); - assert(object.nextAppendPosition === '16'); - - object = await this.store.append(name, file, { position: 16 }); - assert(object.nextAppendPosition === '32'); - }); - - it('should apend object with readstream', async () => { - const file = path.join(__dirname, 'fixtures/foo.js'); - let object = await this.store.append(name, fs.createReadStream(file)); - assert(object.nextAppendPosition === '16'); - - object = await this.store.append(name, fs.createReadStream(file), { - position: 16, - }); - assert(object.nextAppendPosition === '32'); - }); - - it('should error when positio not match', async () => { - await this.store.append(name, new Buffer('foo')); - - try { - await this.store.append(name, new Buffer('foo')); - throw new Error('should not run'); - } catch (err) { - assert(err.message === 'Position is not equal to file length'); - assert(err.name === 'PositionNotEqualToLengthError'); - } - }); - - it('should use nextAppendPosition to append next', async () => { - let object = await this.store.append(name, new Buffer('foo')); - assert(object.nextAppendPosition === '3'); - - object = await this.store.append(name, new Buffer('bar'), { - position: object.nextAppendPosition, - }); - - object = await this.store.append(name, new Buffer('baz'), { - position: object.nextAppendPosition, - }); - - const res = await urllib.request(this.store.signatureUrl(name)); - assert(res.data.toString() === 'foobarbaz'); - assert(res.headers['x-oss-next-append-position'] === '9'); - }); - }); -});