UNPKG

awssum-amazon-s3

Version:

AwsSum plugin for Amazon Simple Storage Service (S3).

90 lines (75 loc) 3.21 kB
// -------------------------------------------------------------------------------------------------------------------- // // integration/amazon-s3-multipart.js - integration tests for Amazon S3 // // Copyright (c) 2012 AppsAttic Ltd - http://www.appsattic.com/ // Written by Andrew Chilton <chilts@appsattic.com> // // License: http://opensource.org/licenses/MIT // // -------------------------------------------------------------------------------------------------------------------- // requires var fs = require('fs'); var test = require('tap').test; var amazonS3 = require('../../awssum-amazon-s3.js'); var S3 = amazonS3.S3; // -------------------------------------------------------------------------------------------------------------------- var env = process.env; var s3; try { s3 = new S3({ 'accessKeyId' : env.ACCESS_KEY_ID, 'secretAccessKey' : env.SECRET_ACCESS_KEY, 'region' : amazonS3.US_EAST_1 }); } catch(e) { // env vars aren't set, so skip these integration tests process.exit(); } // -------------------------------------------------------------------------------------------------------------------- // Amazon:S3 operations var bucket = 'pie-18'; test('S3:Multi Part Uploads', function(t) { var initiateOpts = { BucketName : bucket, ObjectName : 'multipart.txt', }; s3.InitiateMultipartUpload(initiateOpts, function(err, data) { t.equal(err, null, 'S3:InitiateMultipartUpload - using a Range : Error should be null'); t.ok(data.Body.InitiateMultipartUploadResult.UploadId, 'S3:InitiateMultipartUpload - got an UploadId'); var uploadId = data.Body.InitiateMultipartUploadResult.UploadId; var content = 'Hello, World!'; var uploadPartOpts = { BucketName : bucket, ObjectName : 'multipart.txt', PartNumber : 1, UploadId : uploadId, ContentLength : content.length, Body : content, }; s3.UploadPart(uploadPartOpts, function(err, data) { t.equal(err, null, 'S3:UploadPart : err should be null'); t.equal(data.Headers.etag.length, 32+2, 'S3:UploadPart : data.etag should be 34 chars long'); t.ok(data.Headers['x-amz-request-id'], 'S3:UploadPart : request should have an id'); t.ok(data.Headers['x-amz-id-2'], 'S3:UploadPart : request should have a 2nd id'); var completeOptions = { BucketName : bucket, ObjectName : 'multipart.txt', UploadId : uploadId, Parts : [ { PartNumber : 1, ETag : data.Headers.etag, } ], }; s3.CompleteMultipartUpload(completeOptions, function(err, data) { t.equal(err, null, 'S3:UploadPart : err should be null'); console.log(data); t.end(); }); }); }); }); // --------------------------------------------------------------------------------------------------------------------