ks3-js-sdk
Version:
js sdk for ks3
248 lines • 9.89 kB
JavaScript
var uploadPut = function() {
describe('put方法上传文件', function () {
let key = 'demo.txt';
// 支持上传文件,且上传时必须带上文件类型,如果文件没有类型或者文件为空可以不带
// 支持上传字符串,此时请求头中必须有Content—Type
// file可以不填,此时会上传一个空文件
var file = blob({ size: 1024 * 1024 * 5 });
var str = 'abcdef'
describe('上传文件,不设置acl', function () {
it('上传文件,不设置acl', function (done) {
this.timeout(5000);
ks3.putObject({
key,
file
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取该文件的ACL', function (done) {
this.timeout(2000);
ks3.getObjectAcl({
key
}).then(res => {
let grant = res.body.AccessControlPolicy.AccessControlList.Grant;
grant.Permission.should.be.equal('FULL_CONTROL');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('删除该文件', function (done) {
this.timeout(2000);
ks3.delObject({
key
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(204);
done();
})
})
})
describe('上传字符串,不设置acl', function () {
it('上传字符串,不设置acl', function (done) {
this.timeout(5000);
ks3.putObject({
key,
file: str,
headers: {
'Content-Type': 'text/plain'
}
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取该文件的ACL', function (done) {
this.timeout(2000);
ks3.getObjectAcl({
key
}).then(res => {
let grant = res.body.AccessControlPolicy.AccessControlList.Grant;
grant.Permission.should.be.equal('FULL_CONTROL');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('通过Range请求头获取该文件的一部分', function (done) {
this.timeout(2000);
ks3.getObject({
key,
headers: {
Range: 'bytes=0-2'
}
}).then(res => {
res.headers['content-length'].should.be.equal('3');
should.not.exist(res.error);
res.statusCode.should.be.equal(206);
done();
})
})
it('删除该文件', function (done) {
this.timeout(2000);
ks3.delObject({
key
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(204);
done();
})
})
})
describe('上传文件,通过encryption参数设置服务端加密', function () {
it('上传文件,通过encryption参数设置服务端加密', function (done) {
this.timeout(5000);
ks3.putObject({
key,
file,
encryption: true
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取该文件的ACL', function (done) {
this.timeout(2000);
ks3.getObjectAcl({
key
}).then(res => {
let grant = res.body.AccessControlPolicy.AccessControlList.Grant;
grant.Permission.should.be.equal('FULL_CONTROL');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('删除该文件', function (done) {
this.timeout(2000);
ks3.delObject({
key
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(204);
done();
})
})
})
describe('上传文件,设置acl为private,并通过请求头设置存储类型为STANDARD_IA', function () {
it('上传文件,设置acl为private,并通过请求头设置存储类型为STANDARD_IA', function (done) {
this.timeout(5000);
ks3.putObject({
key,
file,
acl: 'private',
headers: {
'x-kss-storage-class': 'STANDARD_IA'
}
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取该文件的ACL', function (done) {
this.timeout(2000);
ks3.getObjectAcl({
key
}).then(res => {
let grant = res.body.AccessControlPolicy.AccessControlList.Grant;
grant.Permission.should.be.equal('FULL_CONTROL');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取文件的存储类型', function (done) {
this.timeout(2000);
ks3.listObjects({
prefix: key
}).then(res => {
let contents = res.body.ListBucketResult.Contents;
let object;
if (contents instanceof Array) {
object = contents.find((item) => item.Key === key);
} else {
object = contents;
}
object.StorageClass.should.be.equal('STANDARD_IA');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('删除该文件', function (done) {
this.timeout(2000);
ks3.delObject({
key
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(204);
done();
})
})
})
describe('上传文件,设置acl为public-read,并通过请求头设置存储类型为ARCHIVE', function () {
it('上传文件,设置acl为public-read,并通过请求头设置存储类型为ARCHIVE', function (done) {
this.timeout(5000);
ks3.putObject({
key,
file,
acl: 'public-read',
headers: {
'x-kss-storage-class': 'ARCHIVE'
}
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取该文件的ACL', function (done) {
this.timeout(2000);
ks3.getObjectAcl({
key
}).then(res => {
let grant = res.body.AccessControlPolicy.AccessControlList.Grant;
grant[0].Permission.should.be.equal('FULL_CONTROL');
grant[1].Permission.should.be.equal('READ');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('获取文件的存储类型', function (done) {
this.timeout(2000);
ks3.listObjects({
prefix: key
}).then(res => {
let contents = res.body.ListBucketResult.Contents;
let object;
if (contents instanceof Array) {
object = contents.find((item) => item.Key === key);
} else {
object = contents;
}
object.StorageClass.should.be.equal('ARCHIVE');
should.not.exist(res.error);
res.statusCode.should.be.equal(200);
done();
})
})
it('删除该文件', function (done) {
this.timeout(2000);
ks3.delObject({
key
}).then(res => {
should.not.exist(res.error);
res.statusCode.should.be.equal(204);
done();
})
})
})
})
}