From 24afc9638ed18ed9fe49ae011297e7da77cee614 Mon Sep 17 00:00:00 2001 From: SaltwaterC Date: Sun, 29 Jan 2012 21:33:02 +0200 Subject: [PATCH] Adds a multipart upload test for the S3 Multipart Upload API. --- tests/s3-multipart-upload.js | 34 ++++++++++++++++++++++++++++++++++ tools/createtemp.sh | 4 ++++ 2 files changed, 38 insertions(+) create mode 100644 tests/s3-multipart-upload.js create mode 100755 tools/createtemp.sh diff --git a/tests/s3-multipart-upload.js b/tests/s3-multipart-upload.js new file mode 100644 index 0000000..1f3f849 --- /dev/null +++ b/tests/s3-multipart-upload.js @@ -0,0 +1,34 @@ +var cp = require('child_process'); +var assert = require('assert'); +var crypto = require('crypto'); +var fs = require('fs'); +var s3 = require('../').load('s3'); + +s3.setCredentials(process.env.AWS_ACCEESS_KEY_ID, process.env.AWS_SECRET_ACCESS_KEY); +s3.setBucket(process.env.AWS2JS_S3_BUCKET); + +cp.execFile('../tools/createtemp.sh', function (err, res) { + assert.ifError(err); + var tempMd5 = res.replace(/\s/g, ''); + s3.putFileMultipart('10M.tmp', './10M.tmp', false, {}, 5242880, function (err, res) { + assert.ifError(err); + s3.get('10M.tmp', {file: './10M.tmp'}, function (err, res) { + assert.ifError(err); + var md5 = crypto.createHash('md5'); + var rs = fs.ReadStream('./10M.tmp'); + rs.on('data', function (data) { + md5.update(data); + }); + rs.on('end', function () { + var dlMd5 = md5.digest('hex'); + assert.deepEqual(tempMd5, dlMd5); + fs.unlink('./10M.tmp', function (err) { + assert.ifError(err); + }); + }); + rs.on('error', function (err) { + assert.ifError(err); + }); + }); + }); +}); diff --git a/tools/createtemp.sh b/tools/createtemp.sh new file mode 100755 index 0000000..38248bd --- /dev/null +++ b/tools/createtemp.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +dd if=/dev/urandom of=10M.tmp bs=1M count=10 2>/dev/null +md5sum 10M.tmp | cut -d' ' -f1