From 05f1cbd739856ab85c263851d741ca8a0cc2ff0b Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 8 Aug 2016 12:42:35 -0700 Subject: [PATCH] Add Cloud Storage file samples. --- package.json | 12 +- storage/README.md | 32 +- storage/buckets.js | 34 +- storage/files.js | 383 +++++++++++++++++++++ storage/foo.raw | Bin 0 -> 164000 bytes storage/package.json | 2 +- storage/resources/test.txt | 1 + storage/system-test/buckets.test.js | 15 +- storage/system-test/files.test.js | 149 +++++++++ storage/test/buckets.test.js | 28 +- storage/test/files.test.js | 497 ++++++++++++++++++++++++++++ system-test/_setup.js | 22 +- test/_setup.js | 6 +- 13 files changed, 1122 insertions(+), 59 deletions(-) create mode 100644 storage/files.js create mode 100644 storage/foo.raw create mode 100644 storage/resources/test.txt create mode 100644 storage/system-test/files.test.js create mode 100644 storage/test/files.test.js diff --git a/package.json b/package.json index 0b045a6b488..3efd154624c 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "describe", "it", "assert", - "sinon" + "sinon", + "uuid" ], "ignore": [ "appengine/bower/public/bower_components", @@ -58,17 +59,18 @@ "all-cover": "npm run pretest && nyc --cache npm run all-test && nyc report --reporter=html && nyc report --reporter=lcov" }, "devDependencies": { - "async": "^1.5.2", + "async": "^2.0.1", "intelli-espower-loader": "^1.0.1", - "mocha": "^2.5.3", + "mocha": "^3.0.2", + "node-uuid": "^1.4.7", "nodejs-repo-tools": "git+https://github.com/GoogleCloudPlatform/nodejs-repo-tools.git#bbbb6035d77671eb053dbe6b6f0e3ff983f79639", - "nyc": "^6.4.4", + "nyc": "^7.1.0", "power-assert": "^1.4.1", "proxyquire": "^1.7.10", "request": "^2.72.0", "semistandard": "^8.0.0", "shelljs": "^0.7.3", "sinon": "^1.17.5", - "supertest": "^1.2.0" + "supertest": "^2.0.0" } } diff --git a/storage/README.md b/storage/README.md index 726c8d74b9d..51168170418 100644 --- a/storage/README.md +++ b/storage/README.md @@ -12,6 +12,7 @@ amount of data at any time. * [Setup](#setup) * [Samples](#samples) * [Buckets](#buckets) + * [Files](#files) ## Setup @@ -29,7 +30,7 @@ amount of data at any time. View the [documentation][buckets_docs] or the [source code][buckets_code]. -__Usage:__ +__Usage:__ `node buckets --help` ``` Usage: node buckets [COMMAND] [ARGS...] @@ -41,17 +42,30 @@ Commands: delete [BUCKET_NAME] ``` -__Create a bucket:__ +[buckets_docs]: https://cloud.google.com/storage/docs +[buckets_code]: buckets.js + +### Files - node buckets create [BUCKET_NAME] +View the [documentation][files_docs] or the [source code][files_code]. -__List buckets:__ +__Usage:__ `node files --help` - node buckets list +``` +Usage: node files [COMMAND] [ARGS...] -__Delete a bucket:__ +Commands: - node buckets delete [BUCKET_NAME] + list [BUCKET_NAME] + listByPrefix [BUCKET_NAME] [PREFIX] [DELIMITER] + upload [BUCKET_NAME] [FILE_NAME] + download [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME] + delete [BUCKET_NAME] [FILE_NAME] + getMetadata [BUCKET_NAME] [FILE_NAME] + makePublic [BUCKET_NAME] [FILE_NAME] + move [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME] + copy [BUCKET_NAME] [SRC_FILE_NAME] [DEST_BUCKET_NAME] [DEST_FILE_NAME] +``` -[buckets_docs]: https://cloud.google.com/storage/docs/json_api/v1/json-api-nodejs-samples -[buckets_code]: buckets.js +[files_docs]: https://cloud.google.com/storage/docs +[files_code]: files.js diff --git a/storage/buckets.js b/storage/buckets.js index 3ab1c3950d5..511ccb1d9d8 100644 --- a/storage/buckets.js +++ b/storage/buckets.js @@ -32,18 +32,17 @@ var storage = gcloud.storage(); * @param {string} name The name of the new bucket. * @param {function} cb The callback function. */ -function createBucketExample (name, callback) { +function createBucket (name, callback) { if (!name) { return callback(new Error('"name" is required!')); } - // See https://googlecloudplatform.github.io/gcloud-node/#/docs/storage?method=createBucket - storage.createBucket(name, function (err, bucket, apiResponse) { + storage.createBucket(name, function (err, bucket) { if (err) { return callback(err); } - console.log('Created bucket: ' + name); + console.log('Created bucket: %s', name); return callback(null, bucket); }); } @@ -55,15 +54,14 @@ function createBucketExample (name, callback) { * * @param {function} cb The callback function. */ -function listBucketsExample (callback) { - // See https://googlecloudplatform.github.io/gcloud-node/#/docs/storage?method=getBuckets - storage.getBuckets(function (err, buckets, apiResponse) { +function listBuckets (callback) { + storage.getBuckets(function (err, buckets) { if (err) { return callback(err); } - console.log('Found ' + buckets.length + ' buckets!'); - return callback(null, buckets, apiResponse); + console.log('Found %d buckets!', buckets.length); + return callback(null, buckets); }); } // [END list] @@ -75,21 +73,19 @@ function listBucketsExample (callback) { * @param {string} name The name of the bucket to delete. * @param {function} cb The callback function. */ -function deleteBucketExample (name, callback) { +function deleteBucket (name, callback) { if (!name) { return callback(new Error('"name" is required!')); } - // See https://googlecloudplatform.github.io/gcloud-node/#/docs/storage?method=bucket var bucket = storage.bucket(name); - // See https://googlecloudplatform.github.io/gcloud-node/#/docs/storage/bucket?method=delete bucket.delete(function (err, apiResponse) { if (err) { return callback(err); } - console.log('Deleted bucket: ' + name); + console.log('Deleted bucket: %s', name); return callback(null, apiResponse); }); } @@ -109,11 +105,11 @@ function printUsage () { function main (args, cb) { var command = args.shift(); if (command === 'create') { - createBucketExample(args[0], cb); + createBucket(args[0], cb); } else if (command === 'list') { - listBucketsExample(cb); + listBuckets(cb); } else if (command === 'delete') { - deleteBucketExample(args[0], cb); + deleteBucket(args[0], cb); } else { printUsage(); cb(); @@ -125,8 +121,8 @@ if (module === require.main) { } // [END all] -exports.createBucketExample = createBucketExample; -exports.listBucketsExample = listBucketsExample; -exports.deleteBucketExample = deleteBucketExample; +exports.createBucket = createBucket; +exports.listBuckets = listBuckets; +exports.deleteBucket = deleteBucket; exports.printUsage = printUsage; exports.main = main; diff --git a/storage/files.js b/storage/files.js new file mode 100644 index 00000000000..cb55ef34afa --- /dev/null +++ b/storage/files.js @@ -0,0 +1,383 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// [START all] +// [START setup] +// By default, gcloud will authenticate using the service account file specified +// by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use the +// project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/gcloud-node/#/docs/guides/authentication +var gcloud = require('gcloud'); + +// Get a reference to the storage component +var storage = gcloud.storage(); +// [END setup] + +// [START list] +/** + * Lists files in a bucket. + * + * @param {string} name The name of the bucket. + * @param {function} cb The callback function. + */ +function listFiles (name, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } + + var bucket = storage.bucket(name); + + bucket.getFiles(function (err, files, apiResponse) { + if (err) { + return callback(err); + } + + console.log('Found %d files!', files.length); + return callback(null, files); + }); +} +// [END list] + +// [START listPrefix] +/** + * Lists files in a bucket that match a certain prefix. + * + * This can be used to list all blobs in a "folder", e.g. "public/". + * + * The delimiter argument can be used to restrict the results to only the + * "files" in the given "folder". Without the delimiter, the entire tree under + * the prefix is returned. For example, given these blobs: + * + * /a/1.txt + * /a/b/2.txt + * + * If you just specify prefix = '/a', you'll get back: + * + * /a/1.txt + * /a/b/2.txt + * + * However, if you specify prefix='/a' and delimiter='/', you'll get back: + * + * /a/1.txt + * + * @param {string} name The name of the bucket. + * @param {string} prefix Filter results to objects whose names begin with this prefix. + * @param {string} [delimiter] Results will contain only objects whose names, aside from the prefix, do not contain delimiter. + * @param {function} cb The callback function. + */ +function listFilesWithPrefix (name, prefix, delimiter, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!prefix) { + return callback(new Error('"prefix" is required!')); + } + + var bucket = storage.bucket(name); + var options = { + prefix: prefix + }; + if (delimiter && typeof delimiter === 'string') { + options.delimiter = delimiter; + } + + bucket.getFiles(options, function (err, files, apiResponse) { + if (err) { + return callback(err); + } + + console.log('Found %d files!', files.length); + return callback(null, files); + }); +} +// [END listPrefix] + +// [START upload] +/** + * Upload a file to a bucket. + * + * @param {string} name The name of the bucket. + * @param {string} fileName The name of the file. + * @param {function} cb The callback function. + */ +function uploadFile (name, fileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!fileName) { + return callback(new Error('"fileName" is required!')); + } + + var bucket = storage.bucket(name); + + bucket.upload(fileName, function (err, file) { + if (err) { + return callback(err); + } + + console.log('Uploaded file: %s', fileName); + return callback(null, file); + }); +} +// [END upload] + +// [START download] +/** + * Download a file from a bucket. + * + * @param {string} name The name of the bucket. + * @param {string} srcFileName The source file name. + * @param {string} destFileName The destination file name. + * @param {function} cb The callback function. + */ +function downloadFile (name, srcFileName, destFileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!srcFileName) { + return callback(new Error('"srcFileName" is required!')); + } else if (!destFileName) { + return callback(new Error('"destFileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(srcFileName); + var options = { + destination: destFileName + }; + + file.download(options, function (err) { + if (err) { + return callback(err); + } + + console.log('Downloaded %s to %s', srcFileName, destFileName); + return callback(null); + }); +} +// [END download] + +// [START delete] +/** + * Delete a file from a bucket. + * + * @param {string} name The name of the bucket. + * @param {string} fileName The file to delete. + * @param {function} cb The callback function. + */ +function deleteFile (name, fileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!fileName) { + return callback(new Error('"fileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(fileName); + + file.delete(function (err) { + if (err) { + return callback(err); + } + + console.log('Deleted file: %s', fileName); + return callback(null); + }); +} +// [END delete] + +// [START metadata] +/** + * Get a file's metadata. + * + * @param {string} name The name of the bucket. + * @param {string} fileName The name of the file. + * @param {function} cb The callback function. + */ +function getMetadata (name, fileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!fileName) { + return callback(new Error('"fileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(fileName); + + file.getMetadata(function (err, metadata) { + if (err) { + return callback(err); + } + + console.log('Got metadata for file: %s', fileName); + return callback(null, metadata); + }); +} +// [END metadata] + +// [START public] +/** + * Make a file public. + * + * @param {string} name The name of the bucket. + * @param {string} fileName The name of the file to make public. + * @param {function} cb The callback function. + */ +function makePublic (name, fileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!fileName) { + return callback(new Error('"fileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(fileName); + + file.makePublic(function (err, apiResponse) { + if (err) { + return callback(err); + } + + console.log('Made %s public!', fileName); + return callback(null, apiResponse); + }); +} +// [END public] + +// [START move] +/** + * Move a file to a new location within the same bucket. + * + * @param {string} name The name of the bucket. + * @param {string} srcFileName The source file name. + * @param {string} destFileName The destination file name. + * @param {function} cb The callback function. + */ +function moveFile (name, srcFileName, destFileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!srcFileName) { + return callback(new Error('"srcFileName" is required!')); + } else if (!destFileName) { + return callback(new Error('"destFileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(srcFileName); + + file.move(destFileName, function (err, file) { + if (err) { + return callback(err); + } + + console.log('%s moved to %s', srcFileName, destFileName); + return callback(null, file); + }); +} +// [END move] + +// [START copy] +/** + * Copy a file to a new bucket with a new name. + * + * @param {string} name The name of the bucket. + * @param {string} srcFileName The source file name. + * @param {string} destBucketName The destination bucket name. + * @param {string} destFileName The destination file name. + * @param {function} cb The callback function. + */ +function copyFile (name, srcFileName, destBucketName, destFileName, callback) { + if (!name) { + return callback(new Error('"name" is required!')); + } else if (!srcFileName) { + return callback(new Error('"srcFileName" is required!')); + } else if (!destBucketName) { + return callback(new Error('"destBucketName" is required!')); + } else if (!destFileName) { + return callback(new Error('"destFileName" is required!')); + } + + var bucket = storage.bucket(name); + var file = bucket.file(srcFileName); + var newBucket = storage.bucket(destBucketName); + var newFile = newBucket.file(destFileName); + + file.move(newFile, function (err, file) { + if (err) { + return callback(err); + } + + console.log('%s moved to %s in %s', srcFileName, destFileName, destBucketName); + return callback(null, file); + }); +} +// [END copy] + +// [START usage] +function printUsage () { + console.log('Usage: node files [COMMAND] [ARGS...]'); + console.log('\nCommands:\n'); + console.log('\tlist [BUCKET_NAME]'); + console.log('\tlistByPrefix [BUCKET_NAME] [PREFIX] [DELIMITER]'); + console.log('\tupload [BUCKET_NAME] [FILE_NAME]'); + console.log('\tdownload [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]'); + console.log('\tdelete [BUCKET_NAME] [FILE_NAME]'); + console.log('\tgetMetadata [BUCKET_NAME] [FILE_NAME]'); + console.log('\tmakePublic [BUCKET_NAME] [FILE_NAME]'); + console.log('\tmove [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]'); + console.log('\tcopy [BUCKET_NAME] [SRC_FILE_NAME] [DEST_BUCKET_NAME] [DEST_FILE_NAME]'); +} +// [END usage] + +// Run the command-line program +function main (args, cb) { + var command = args.shift(); + if (command === 'list') { + listFiles(args[0], cb); + } else if (command === 'listByPrefix') { + listFilesWithPrefix(args[0], args[1], args[2], cb); + } else if (command === 'upload') { + uploadFile(args[0], args[1], cb); + } else if (command === 'download') { + downloadFile(args[0], args[1], args[2], cb); + } else if (command === 'delete') { + deleteFile(args[0], args[1], cb); + } else if (command === 'getMetadata') { + getMetadata(args[0], args[1], cb); + } else if (command === 'makePublic') { + makePublic(args[0], args[1], cb); + } else if (command === 'move') { + moveFile(args[0], args[1], args[2], cb); + } else if (command === 'copy') { + copyFile(args[0], args[1], args[2], args[3], cb); + } else { + printUsage(); + cb(); + } +} + +if (module === require.main) { + main(process.argv.slice(2), console.log); +} +// [END all] + +exports.listFiles = listFiles; +exports.listFilesWithPrefix = listFilesWithPrefix; +exports.uploadFile = uploadFile; +exports.downloadFile = downloadFile; +exports.deleteFile = deleteFile; +exports.getMetadata = getMetadata; +exports.makePublic = makePublic; +exports.moveFile = moveFile; +exports.copyFile = copyFile; +exports.printUsage = printUsage; +exports.main = main; diff --git a/storage/foo.raw b/storage/foo.raw new file mode 100644 index 0000000000000000000000000000000000000000..a01dfc45a59713b7221dea05fc152f42a2cd2fa4 GIT binary patch literal 164000 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

_U@{)Bhmml#uTg3w;BRI~3(SzQQ)BxGdLzNl| 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

|A<%BmL_^$+PJ_F2?OWgu_c4U^byxf9Y{;> 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

VF_N8)AUidsGH{d$auSL3$Mi6 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 0); - assert(console.log.calledWith('Found ' + buckets.length + ' buckets!')); + assert(console.log.calledWith('Found %d buckets!', buckets.length)); done(); }); }); }); describe('delete', function () { it('should delete a bucket', function (done) { - bucketsExample.deleteBucketExample(bucketName, function (err, apiResponse) { + bucketsExample.deleteBucket(bucketName, function (err, apiResponse) { assert.ifError(err); - console.log(apiResponse); - assert(console.log.calledWith('Deleted bucket: ' + bucketName)); + assert(console.log.calledWith('Deleted bucket: %s', bucketName)); done(); }); }); diff --git a/storage/system-test/files.test.js b/storage/system-test/files.test.js new file mode 100644 index 00000000000..5873273d675 --- /dev/null +++ b/storage/system-test/files.test.js @@ -0,0 +1,149 @@ +// Copyright 2015-2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var gcloud = require('gcloud'); +var storage = gcloud.storage(); +var filesExample = require('../files'); + +var bucketName = 'nodejs-docs-samples-test-' + uuid.v4(); +var fileName = 'test.txt'; +var movedFileName = 'test2.txt'; +var copiedFileName = 'test3.txt'; +var filePath = path.join(__dirname, '../resources', fileName); +var downloadFilePath = path.join(__dirname, '../resources/downloaded.txt'); + +describe('storage:files', function () { + before(function (done) { + storage.createBucket(bucketName, done); + }); + after(function (done) { + try { + fs.unlinkSync(downloadFilePath); + } catch (err) { + console.log(err); + } + storage.bucket(bucketName).deleteFiles({ force: true }, function (err) { + if (err) { + return done(err); + } + storage.bucket(bucketName).delete(done); + }); + }); + describe('uploadFile', function () { + it('should upload a file', function (done) { + filesExample.uploadFile(bucketName, filePath, function (err, file) { + assert.ifError(err); + assert(file); + assert.equal(file.name, fileName); + assert(console.log.calledWith('Uploaded file: %s', filePath)); + done(); + }); + }); + }); + describe('downloadFile', function () { + it('should download a file', function (done) { + filesExample.downloadFile(bucketName, fileName, downloadFilePath, function (err) { + assert.ifError(err); + assert.doesNotThrow(function () { + fs.statSync(downloadFilePath); + }); + assert(console.log.calledWith('Downloaded %s to %s', fileName, downloadFilePath)); + done(); + }); + }); + }); + describe('moveFile', function () { + it('should move a file', function (done) { + filesExample.moveFile(bucketName, fileName, movedFileName, function (err, file) { + assert.ifError(err); + assert.equal(file.name, movedFileName); + assert(console.log.calledWith('%s moved to %s', fileName, movedFileName)); + done(); + }); + }); + }); + describe('listFiles', function () { + it('should list files', function (done) { + filesExample.listFiles(bucketName, function (err, files) { + assert.ifError(err); + assert(Array.isArray(files)); + assert.equal(files.length, 1); + assert.equal(files[0].name, movedFileName); + assert(console.log.calledWith('Found %d files!', files.length)); + done(); + }); + }); + }); + describe('copyFile', function () { + it('should copy a file', function (done) { + filesExample.copyFile(bucketName, movedFileName, bucketName, copiedFileName, function (err, file) { + assert.ifError(err); + assert.equal(file.name, copiedFileName); + assert(console.log.calledWith('%s moved to %s in %s', movedFileName, copiedFileName, bucketName)); + done(); + }); + }); + }); + describe('listFilesWithPrefix', function () { + it('should list files by a prefix', function (done) { + filesExample.listFilesWithPrefix(bucketName, 'test', undefined, function (err, files) { + assert.ifError(err); + assert(Array.isArray(files)); + assert.equal(files.length, 1); + assert.equal(files[0].name, copiedFileName); + assert(console.log.calledWith('Found %d files!', files.length)); + filesExample.listFilesWithPrefix(bucketName, 'foo', undefined, function (err, files) { + assert.ifError(err); + assert(Array.isArray(files)); + assert.equal(files.length, 0); + assert(console.log.calledWith('Found %d files!', files.length)); + done(); + }); + }); + }); + }); + describe('makePublic', function () { + it('should make a file public', function (done) { + filesExample.makePublic(bucketName, copiedFileName, function (err, apiResponse) { + assert.ifError(err); + assert(apiResponse); + assert(console.log.calledWith('Made %s public!', copiedFileName)); + done(); + }); + }); + }); + describe('getMetadata', function () { + it('should get metadata for a file', function (done) { + filesExample.getMetadata(bucketName, copiedFileName, function (err, metadata) { + assert.ifError(err); + assert(metadata); + assert.equal(metadata.name, copiedFileName); + assert(console.log.calledWith('Got metadata for file: %s', copiedFileName)); + done(); + }); + }); + }); + describe('deleteFile', function () { + it('should delete a file', function (done) { + filesExample.deleteFile(bucketName, copiedFileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('Deleted file: %s', copiedFileName)); + done(); + }); + }); + }); +}); diff --git a/storage/test/buckets.test.js b/storage/test/buckets.test.js index 546cc0fcdc0..b8b6e078a2a 100644 --- a/storage/test/buckets.test.js +++ b/storage/test/buckets.test.js @@ -52,16 +52,16 @@ describe('storage:buckets', function () { it('should create a bucket', function () { var bucketsSample = getSample(); - bucketsSample.sample.createBucketExample(bucketName, function (err, bucket) { + bucketsSample.sample.createBucket(bucketName, function (err, bucket) { assert.ifError(err); assert.strictEqual(bucket, bucketsSample.mocks.buckets[0]); - assert(console.log.calledWith('Created bucket: ' + bucketName)); + assert(console.log.calledWith('Created bucket: %s', bucketName)); }); }); it('should require name', function () { var bucketsSample = getSample(); - bucketsSample.sample.createBucketExample(undefined, function (err, bucket) { + bucketsSample.sample.createBucket(undefined, function (err, bucket) { assert(err); assert(err.message = '"name" is required!'); assert.equal(bucket, undefined); @@ -72,7 +72,7 @@ describe('storage:buckets', function () { var bucketsSample = getSample(); bucketsSample.mocks.storage.createBucket = sinon.stub().callsArgWith(1, error); - bucketsSample.sample.createBucketExample(bucketName, function (err, bucket) { + bucketsSample.sample.createBucket(bucketName, function (err, bucket) { assert.equal(err, error); assert.equal(bucket, undefined); }); @@ -82,10 +82,10 @@ describe('storage:buckets', function () { it('should list buckets', function () { var bucketsSample = getSample(); - bucketsSample.sample.listBucketsExample(function (err, buckets) { + bucketsSample.sample.listBuckets(function (err, buckets) { assert.ifError(err); assert.strictEqual(buckets, bucketsSample.mocks.buckets); - assert(console.log.calledWith('Found 1 buckets!')); + assert(console.log.calledWith('Found %d buckets!', bucketsSample.mocks.buckets.length)); }); }); it('should handle error', function () { @@ -93,7 +93,7 @@ describe('storage:buckets', function () { var bucketsSample = getSample(); bucketsSample.mocks.storage.getBuckets = sinon.stub().callsArgWith(0, error); - bucketsSample.sample.listBucketsExample(function (err, buckets) { + bucketsSample.sample.listBuckets(function (err, buckets) { assert.equal(err, error); assert.equal(buckets, undefined); }); @@ -103,16 +103,16 @@ describe('storage:buckets', function () { it('should delete a bucket', function () { var bucketsSample = getSample(); - bucketsSample.sample.deleteBucketExample(bucketName, function (err, apiResponse) { + bucketsSample.sample.deleteBucket(bucketName, function (err, apiResponse) { assert.ifError(err); assert.equal(bucketsSample.mocks.storage.bucket.firstCall.args[0], bucketName); - assert(console.log.calledWith('Deleted bucket: ' + bucketName)); + assert(console.log.calledWith('Deleted bucket: %s', bucketName)); }); }); it('should require name', function () { var bucketsSample = getSample(); - bucketsSample.sample.deleteBucketExample(undefined, function (err, apiResponse) { + bucketsSample.sample.deleteBucket(undefined, function (err, apiResponse) { assert(err); assert(err.message = '"name" is required!'); assert.equal(apiResponse, undefined); @@ -123,7 +123,7 @@ describe('storage:buckets', function () { var bucketsSample = getSample(); bucketsSample.mocks.bucket.delete = sinon.stub().callsArgWith(0, error); - bucketsSample.sample.deleteBucketExample(bucketName, function (err, apiResponse) { + bucketsSample.sample.deleteBucket(bucketName, function (err, apiResponse) { assert.equal(err, error); assert.equal(apiResponse, undefined); }); @@ -136,17 +136,17 @@ describe('storage:buckets', function () { bucketsSample.sample.main(['create', bucketName], function (err, bucket) { assert.ifError(err); assert.strictEqual(bucket, bucketsSample.mocks.buckets[0]); - assert(console.log.calledWith('Created bucket: ' + bucketName)); + assert(console.log.calledWith('Created bucket: %s', bucketName)); }); bucketsSample.sample.main(['list'], function (err, buckets) { assert.ifError(err); assert.strictEqual(buckets, bucketsSample.mocks.buckets); - assert(console.log.calledWith('Found 1 buckets!')); + assert(console.log.calledWith('Found %d buckets!', bucketsSample.mocks.buckets.length)); }); bucketsSample.sample.main(['delete', bucketName], function (err, apiResponse) { assert.ifError(err); assert.equal(bucketsSample.mocks.storage.bucket.firstCall.args[0], bucketName); - assert(console.log.calledWith('Deleted bucket: ' + bucketName)); + assert(console.log.calledWith('Deleted bucket: %s', bucketName)); }); bucketsSample.sample.main(['foo'], function () { assert(console.log.calledWith('Usage: node buckets [COMMAND] [ARGS...]')); diff --git a/storage/test/files.test.js b/storage/test/files.test.js new file mode 100644 index 00000000000..68131c88875 --- /dev/null +++ b/storage/test/files.test.js @@ -0,0 +1,497 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var proxyquire = require('proxyquire').noCallThru(); +var bucketName = 'foo'; + +function getSample () { + var filesMock = [ + { + id: 'foo', + name: 'foo' + } + ]; + var fileMock = { + download: sinon.stub().callsArgWith(1, null), + getMetadata: sinon.stub().callsArgWith(0, null, { foo: 'bar' }), + makePublic: sinon.stub().callsArgWith(0, null), + delete: sinon.stub().callsArgWith(0, null), + move: sinon.stub().callsArgWith(1, null, filesMock[0]) + }; + var bucketMock = { + getFiles: sinon.stub().callsArgWith(0, null, filesMock, null, filesMock), + file: sinon.stub().returns(fileMock), + upload: sinon.stub().callsArgWith(1, null, filesMock[0]) + }; + var storageMock = { + bucket: sinon.stub().returns(bucketMock) + }; + var gcloudMock = { + storage: sinon.stub().returns(storageMock) + }; + return { + sample: proxyquire('../files', { + gcloud: gcloudMock + }), + mocks: { + gcloud: gcloudMock, + storage: storageMock, + files: filesMock, + file: fileMock, + bucket: bucketMock + } + }; +} + +describe('storage:files', function () { + describe('list', function () { + it('should list files', function () { + var filesSample = getSample(); + + filesSample.sample.listFiles(bucketName, function (err, files) { + assert.ifError(err); + assert.strictEqual(files, filesSample.mocks.files); + assert(console.log.calledWith('Found %d files!', filesSample.mocks.files.length)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.listFiles(undefined, function (err, files) { + assert(err); + assert(err.message = '"name" is required!'); + assert.equal(files, undefined); + }); + }); + it('should handle error', function () { + var error = 'listError'; + var filesSample = getSample(); + filesSample.mocks.bucket.getFiles = sinon.stub().callsArgWith(0, error); + + filesSample.sample.listFiles(bucketName, function (err, files) { + assert.equal(err, error); + assert.equal(files, undefined); + }); + }); + }); + describe('listWithPrefix', function () { + it('should list files with prefix', function () { + var filesSample = getSample(); + filesSample.mocks.bucket.getFiles = sinon.stub().callsArgWith(1, null, filesSample.mocks.files); + + filesSample.sample.listFilesWithPrefix(bucketName, '/a', undefined, function (err, files) { + assert.ifError(err); + assert.strictEqual(files, filesSample.mocks.files); + assert(console.log.calledWith('Found %d files!', filesSample.mocks.files.length)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.listFilesWithPrefix(undefined, undefined, undefined, function (err, files) { + assert(err); + assert(err.message = '"name" is required!'); + assert.equal(files, undefined); + }); + }); + it('should require prefix', function () { + var filesSample = getSample(); + + filesSample.sample.listFilesWithPrefix(bucketName, undefined, undefined, function (err, files) { + assert(err); + assert(err.message = '"prefix" is required!'); + assert.equal(files, undefined); + }); + }); + it('should handle error', function () { + var error = 'listError'; + var filesSample = getSample(); + filesSample.mocks.bucket.getFiles = sinon.stub().callsArgWith(1, error); + + filesSample.sample.listFilesWithPrefix(bucketName, '/a', undefined, function (err, files) { + assert.equal(err, error); + assert.equal(files, undefined); + }); + }); + }); + describe('uploadFile', function () { + var fileName = 'test.txt'; + it('should upload a file', function () { + var filesSample = getSample(); + + filesSample.sample.uploadFile(bucketName, fileName, function (err, file) { + assert.ifError(err); + assert.strictEqual(file, filesSample.mocks.files[0]); + assert(console.log.calledWith('Uploaded file: %s', fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.uploadFile(undefined, undefined, function (err, file) { + assert(err); + assert(err.message = '"name" is required!'); + assert.equal(file, undefined); + }); + }); + it('should require fileName', function () { + var filesSample = getSample(); + + filesSample.sample.uploadFile(bucketName, undefined, function (err, file) { + assert(err); + assert(err.message = '"fileName" is required!'); + assert.equal(file, undefined); + }); + }); + it('should handle error', function () { + var error = 'uploadError'; + var filesSample = getSample(); + filesSample.mocks.bucket.upload = sinon.stub().callsArgWith(1, error); + + filesSample.sample.uploadFile(bucketName, fileName, function (err, file) { + assert.equal(err, error); + assert.equal(file, undefined); + }); + }); + }); + describe('downloadFile', function () { + var fileName = 'test.txt'; + it('should download a file', function () { + var filesSample = getSample(); + + filesSample.sample.downloadFile(bucketName, fileName, fileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('Downloaded %s to %s', fileName, fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.downloadFile(undefined, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require srcFileName', function () { + var filesSample = getSample(); + + filesSample.sample.downloadFile(bucketName, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"srcFileName" is required!'); + }); + }); + it('should require destFileName', function () { + var filesSample = getSample(); + + filesSample.sample.downloadFile(bucketName, fileName, undefined, function (err) { + assert(err); + assert(err.message = '"destFileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'downloadError'; + var filesSample = getSample(); + filesSample.mocks.file.download = sinon.stub().callsArgWith(1, error); + + filesSample.sample.downloadFile(bucketName, fileName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('deleteFile', function () { + var fileName = 'test.txt'; + it('should delete a file', function () { + var filesSample = getSample(); + + filesSample.sample.deleteFile(bucketName, fileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('Deleted file: %s', fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.deleteFile(undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require fileName', function () { + var filesSample = getSample(); + + filesSample.sample.deleteFile(bucketName, undefined, function (err) { + assert(err); + assert(err.message = '"fileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'deleteError'; + var filesSample = getSample(); + filesSample.mocks.file.delete = sinon.stub().callsArgWith(0, error); + + filesSample.sample.deleteFile(bucketName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('getMetadata', function () { + var fileName = 'test.txt'; + it('should get metadata for a file', function () { + var filesSample = getSample(); + + filesSample.sample.getMetadata(bucketName, fileName, function (err, metadata) { + assert.ifError(err); + assert.deepEqual(metadata, { foo: 'bar' }); + assert(console.log.calledWith('Got metadata for file: %s', fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.getMetadata(undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require fileName', function () { + var filesSample = getSample(); + + filesSample.sample.getMetadata(bucketName, undefined, function (err) { + assert(err); + assert(err.message = '"fileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'getMetadataError'; + var filesSample = getSample(); + filesSample.mocks.file.getMetadata = sinon.stub().callsArgWith(0, error); + + filesSample.sample.getMetadata(bucketName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('makePublic', function () { + var fileName = 'test.txt'; + it('should make a file public', function () { + var filesSample = getSample(); + + filesSample.sample.makePublic(bucketName, fileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('Made %s public!', fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.makePublic(undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require fileName', function () { + var filesSample = getSample(); + + filesSample.sample.makePublic(bucketName, undefined, function (err) { + assert(err); + assert(err.message = '"fileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'makePublicError'; + var filesSample = getSample(); + filesSample.mocks.file.makePublic = sinon.stub().callsArgWith(0, error); + + filesSample.sample.makePublic(bucketName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('moveFile', function () { + var fileName = 'test.txt'; + it('should move a file', function () { + var filesSample = getSample(); + + filesSample.sample.moveFile(bucketName, fileName, fileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('%s moved to %s', fileName, fileName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.moveFile(undefined, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require srcFileName', function () { + var filesSample = getSample(); + + filesSample.sample.moveFile(bucketName, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"srcFileName" is required!'); + }); + }); + it('should require destFileName', function () { + var filesSample = getSample(); + + filesSample.sample.moveFile(bucketName, fileName, undefined, function (err) { + assert(err); + assert(err.message = '"destFileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'moveFileError'; + var filesSample = getSample(); + filesSample.mocks.file.move = sinon.stub().callsArgWith(1, error); + + filesSample.sample.moveFile(bucketName, fileName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('copyFile', function () { + var fileName = 'test.txt'; + it('should copy a file', function () { + var filesSample = getSample(); + + filesSample.sample.copyFile(bucketName, fileName, bucketName, fileName, function (err) { + assert.ifError(err); + assert(console.log.calledWith('%s moved to %s in %s', fileName, fileName, bucketName)); + }); + }); + it('should require name', function () { + var filesSample = getSample(); + + filesSample.sample.copyFile(undefined, undefined, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"name" is required!'); + }); + }); + it('should require srcFileName', function () { + var filesSample = getSample(); + + filesSample.sample.copyFile(bucketName, undefined, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"srcFileName" is required!'); + }); + }); + it('should require destBucketName', function () { + var filesSample = getSample(); + + filesSample.sample.copyFile(bucketName, fileName, undefined, undefined, function (err) { + assert(err); + assert(err.message = '"destBucketName" is required!'); + }); + }); + it('should require destFileName', function () { + var filesSample = getSample(); + + filesSample.sample.copyFile(bucketName, fileName, bucketName, undefined, function (err) { + assert(err); + assert(err.message = '"destFileName" is required!'); + }); + }); + it('should handle error', function () { + var error = 'copyFileError'; + var filesSample = getSample(); + filesSample.mocks.file.move = sinon.stub().callsArgWith(1, error); + + filesSample.sample.copyFile(bucketName, fileName, bucketName, fileName, function (err) { + assert.equal(err, error); + }); + }); + }); + describe('main', function () { + it('should call the right commands', function () { + var filesSample = getSample(); + var fileName = 'text.txt'; + + filesSample.sample.main(['list', bucketName], function (err, files) { + assert.ifError(err); + assert.strictEqual(files, filesSample.mocks.files); + assert(console.log.calledWith('Found %d files!', filesSample.mocks.files.length)); + }); + filesSample.mocks.bucket.getFiles = sinon.stub().callsArgWith(1, null, filesSample.mocks.files); + filesSample.sample.main(['listByPrefix', bucketName, '/a'], function (err, files) { + assert.ifError(err); + assert.strictEqual(files, filesSample.mocks.files); + assert(console.log.calledWith('Found %d files!', filesSample.mocks.files.length)); + }); + filesSample.sample.main(['upload', bucketName, fileName], function (err, file) { + assert.ifError(err); + assert.strictEqual(file, filesSample.mocks.files[0]); + assert(console.log.calledWith('Uploaded file: %s', fileName)); + }); + filesSample.sample.main(['download', bucketName, fileName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('Downloaded %s to %s', fileName, fileName)); + }); + filesSample.sample.main(['delete', bucketName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('Deleted file: %s', fileName)); + }); + filesSample.sample.main(['getMetadata', bucketName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('Got metadata for file: %s', fileName)); + }); + filesSample.sample.main(['makePublic', bucketName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('Made %s public!', fileName)); + }); + filesSample.sample.main(['move', bucketName, fileName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('%s moved to %s', fileName, fileName)); + }); + filesSample.sample.main(['copy', bucketName, fileName, bucketName, fileName], function (err) { + assert.ifError(err); + assert(console.log.calledWith('%s moved to %s in %s', fileName, fileName, bucketName)); + }); + filesSample.sample.main(['foo'], function () { + assert(console.log.calledWith('Usage: node files [COMMAND] [ARGS...]')); + assert(console.log.calledWith('\nCommands:\n')); + assert(console.log.calledWith('\tlist [BUCKET_NAME]')); + assert(console.log.calledWith('\tlistByPrefix [BUCKET_NAME] [PREFIX] [DELIMITER]')); + assert(console.log.calledWith('\tupload [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tdownload [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]')); + assert(console.log.calledWith('\tdelete [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tgetMetadata [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tmakePublic [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tmove [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]')); + assert(console.log.calledWith('\tcopy [BUCKET_NAME] [SRC_FILE_NAME] [DEST_BUCKET_NAME] [DEST_FILE_NAME]')); + }); + }); + }); + describe('printUsage', function () { + it('should print usage', function () { + var filesSample = getSample(); + + filesSample.sample.printUsage(); + + assert(console.log.calledWith('Usage: node files [COMMAND] [ARGS...]')); + assert(console.log.calledWith('\nCommands:\n')); + assert(console.log.calledWith('\tlist [BUCKET_NAME]')); + assert(console.log.calledWith('\tlistByPrefix [BUCKET_NAME] [PREFIX] [DELIMITER]')); + assert(console.log.calledWith('\tupload [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tdownload [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]')); + assert(console.log.calledWith('\tdelete [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tgetMetadata [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tmakePublic [BUCKET_NAME] [FILE_NAME]')); + assert(console.log.calledWith('\tmove [BUCKET_NAME] [SRC_FILE_NAME] [DEST_FILE_NAME]')); + assert(console.log.calledWith('\tcopy [BUCKET_NAME] [SRC_FILE_NAME] [DEST_BUCKET_NAME] [DEST_FILE_NAME]')); + }); + }); +}); diff --git a/system-test/_setup.js b/system-test/_setup.js index 4420032d56d..b35e8f1c36e 100644 --- a/system-test/_setup.js +++ b/system-test/_setup.js @@ -13,15 +13,33 @@ 'use strict'; -require('../test/_setup'); - var assert = require('power-assert'); var sinon = require('sinon'); +var uuid = require('node-uuid'); global.assert = assert; global.sinon = sinon; +global.uuid = uuid; + +var log = console.log; beforeEach(function () { assert(process.env.GCLOUD_PROJECT, 'Must set GCLOUD_PROJECT environment variable!'); assert(process.env.GOOGLE_APPLICATION_CREDENTIALS, 'Must set GOOGLE_APPLICATION_CREDENTIALS environment variable!'); + if (process.env.DEBUG) { + sinon.spy(console, 'error'); + sinon.spy(console, 'log'); + } else { + sinon.stub(console, 'error'); + sinon.stub(console, 'log', function (a, b, c) { + if (typeof a === 'string' && a.indexOf('\u001b') === 4 && typeof b === 'string') { + log.apply(console, arguments); + } + }); + } +}); + +afterEach(function () { + console.error.restore(); + console.log.restore(); }); diff --git a/test/_setup.js b/test/_setup.js index c6483a79565..b35e8f1c36e 100644 --- a/test/_setup.js +++ b/test/_setup.js @@ -15,20 +15,24 @@ var assert = require('power-assert'); var sinon = require('sinon'); +var uuid = require('node-uuid'); global.assert = assert; global.sinon = sinon; +global.uuid = uuid; var log = console.log; beforeEach(function () { + assert(process.env.GCLOUD_PROJECT, 'Must set GCLOUD_PROJECT environment variable!'); + assert(process.env.GOOGLE_APPLICATION_CREDENTIALS, 'Must set GOOGLE_APPLICATION_CREDENTIALS environment variable!'); if (process.env.DEBUG) { sinon.spy(console, 'error'); sinon.spy(console, 'log'); } else { sinon.stub(console, 'error'); sinon.stub(console, 'log', function (a, b, c) { - if (typeof a === 'string' && a.indexOf('\u001b') !== -1 && typeof b === 'string') { + if (typeof a === 'string' && a.indexOf('\u001b') === 4 && typeof b === 'string') { log.apply(console, arguments); } });