From bbc12a5f211b67fb57dffc93dcab653380b06580 Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 24 Nov 2015 15:15:05 -0500 Subject: [PATCH 1/2] resource: use default method options for Resource --- lib/resource/project.js | 6 ++- system-test/resource.js | 81 +++++++++++++++++----------------------- test/resource/project.js | 6 ++- 3 files changed, 44 insertions(+), 49 deletions(-) diff --git a/lib/resource/project.js b/lib/resource/project.js index 4bfeb5e3d66..6caf72f6075 100644 --- a/lib/resource/project.js +++ b/lib/resource/project.js @@ -180,7 +180,11 @@ function Project(resource, id) { * } * }); */ - setMetadata: true + setMetadata: { + reqOpts: { + method: 'PUT' + } + } }; ServiceObject.call(this, { diff --git a/system-test/resource.js b/system-test/resource.js index 78a4ea1ec55..9094d4e31d9 100644 --- a/system-test/resource.js +++ b/system-test/resource.js @@ -22,51 +22,8 @@ var env = require('./env.js'); var Resource = require('../lib/resource/index.js'); describe('Resource', function() { - // ------------- - // >> Attention! - // ------------- - // As of 9/14/15, creating projects is not supported. Once we have support, - // the following description outlines how we should run our tests. - // ------------- - // - // Before the tests run, we create a project. That acts as the test for being - // able to create a project. Similarly, the after hook deletes it, testing if - // a project can be deleted. - // - // ---------- - // >> Notice! - // ---------- - // All tests should only manipulate a short-lived project. NOT the project the - // user has been running our test suite with. That would just be rude. - // ---------- - - // var PROJECT_ID = 'gcloud-tests-' + Date.now(); - var PROJECT_NAME = 'gcloud-tests-project-name'; - var resource = new Resource(env); - var project; - - before(function(done) { - // Uncomment after we support creating a project. - // resource.createProject(PROJECT_ID, function(err, project_) { - // if (err) { - // done(err); - // return; - // } - // - // project = project_; - // }); - - // ** SEE "Notice!" SECTION ABOVE ** - // Remove once we support creating a project. - project = resource.project(); - done(); - }); - - // Uncomment after we support creating a project. - // after(function(done) { - // project.delete(done); - // }); + var project = resource.project(); describe('resource', function() { it('should get a list of projects', function(done) { @@ -100,15 +57,45 @@ describe('Resource', function() { done(); }); }); + }); + + // Auth through the gcloud SDK is required to: + // + // - Create a project + // - Set metadata + // - Restore a project + // - Delete a project + describe('user-auth only functionality', function() { + var resource = new Resource({ + projectId: env.projectId + }); + + var PROJECT_ID = 'gcloud-tests-' + Date.now(); + var project = resource.project(PROJECT_ID); + + before(function(done) { + project.create(done); + }); + + after(function(done) { + project.delete(done); + }); + + it('should have created the project', function() { + assert.strictEqual(project.metadata.projectId, PROJECT_ID); + }); + + it('should set metadata', function(done) { + var newProjectName = 'gcloud-tests-project-name'; - it.skip('should set metadata', function(done) { project.getMetadata(function(err, metadata) { assert.ifError(err); var originalProjectName = metadata.name; + assert.notStrictEqual(originalProjectName, newProjectName); project.setMetadata({ - name: PROJECT_NAME + name: newProjectName }, function(err) { assert.ifError(err); @@ -119,7 +106,7 @@ describe('Resource', function() { }); }); - it.skip('should delete and restore a project', function(done) { + it('should restore the project', function(done) { project.delete(function(err) { assert.ifError(err); project.restore(done); diff --git a/test/resource/project.js b/test/resource/project.js index e28e9955e41..9c8e49033a6 100644 --- a/test/resource/project.js +++ b/test/resource/project.js @@ -85,7 +85,11 @@ describe('Project', function() { exists: true, get: true, getMetadata: true, - setMetadata: true + setMetadata: { + reqOpts: { + method: 'PUT' + } + } }); }); }); From 91db9684c888fada2d7f1bb30a17e890fbc9693f Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Tue, 24 Nov 2015 15:49:32 -0500 Subject: [PATCH 2/2] resource: system tests: shut off conditionally --- system-test/resource.js | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/system-test/resource.js b/system-test/resource.js index 9094d4e31d9..611bb3fd7d7 100644 --- a/system-test/resource.js +++ b/system-test/resource.js @@ -17,6 +17,7 @@ 'use strict'; var assert = require('assert'); +var googleAuth = require('google-auto-auth'); var env = require('./env.js'); var Resource = require('../lib/resource/index.js'); @@ -65,7 +66,9 @@ describe('Resource', function() { // - Set metadata // - Restore a project // - Delete a project - describe('user-auth only functionality', function() { + describe('lifecycle', function() { + var CAN_RUN_TESTS = true; + var resource = new Resource({ projectId: env.projectId }); @@ -74,10 +77,36 @@ describe('Resource', function() { var project = resource.project(PROJECT_ID); before(function(done) { - project.create(done); + var authClient = googleAuth(); + + // See if an auth token exists. + authClient.getToken(function(err) { + if (err) { + if (err.code === 400) { + CAN_RUN_TESTS = false; + done(); + } else { + done(err); + } + return; + } + + project.create(done); + }); + }); + + beforeEach(function() { + if (!CAN_RUN_TESTS) { + this.skip(); + } }); after(function(done) { + if (!CAN_RUN_TESTS) { + this.skip(); + return; + } + project.delete(done); });