From 21e03c8ce018a4b754a617d0075a1fd6ba8f81c2 Mon Sep 17 00:00:00 2001 From: Justin Beckwith Date: Mon, 9 Jul 2018 15:57:57 -0700 Subject: [PATCH] chore: clean up the tests (#1229) --- Makefile | 2 +- package-lock.json | 111 +++++++++++++++++++++++++---------- package.json | 2 + test/mocha.opts | 4 ++ test/test.apikey.ts | 1 - test/test.auth.ts | 28 ++++----- test/test.clients.ts | 8 +-- test/test.discover.ts | 1 - test/test.kitchen.ts | 1 - test/test.media.ts | 4 +- test/test.options.ts | 5 +- test/test.urlshortener.v1.ts | 1 - test/utils.ts | 1 - 13 files changed, 104 insertions(+), 65 deletions(-) create mode 100644 test/mocha.opts diff --git a/Makefile b/Makefile index 2d8306ecda9..5de8b03f552 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ clean: gts clean coverage: build - nyc --cache mocha build/test -t 10000 -S -R spec --require intelli-espower-loader + nyc --cache mocha build/test -t 10000 -S -R spec nyc report --reporter=html docs: diff --git a/package-lock.json b/package-lock.json index c85dc4d6432..b98fb9e5727 100644 --- a/package-lock.json +++ b/package-lock.json @@ -596,6 +596,15 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "assert-rejects": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/assert-rejects/-/assert-rejects-0.1.1.tgz", + "integrity": "sha1-5HozNdiULHLj7NlGJh8OWKDaLvY=", + "dev": true, + "requires": { + "is-regexp": "^1.0.0" + } + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -3531,14 +3540,14 @@ } }, "gts": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/gts/-/gts-0.6.0.tgz", - "integrity": "sha512-MCh3HNzLA1zvnW8lStH58n6U7SaGCJwd0Y2fUWJklHdtpMB9zaGe8SR7l0DqqPf+t0hNoFu2KmRFxHBnkeeKrA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/gts/-/gts-0.7.1.tgz", + "integrity": "sha512-7yMBk3+SmyL4+047vIXOAUWlNfbIkuPH0UnhQYzurM8yj1ufiVH++BdBpZY7AP6/wytvzq7PuVzqAXbk5isn2A==", "dev": true, "requires": { "chalk": "^2.4.1", "clang-format": "1.2.3", - "inquirer": "^5.2.0", + "inquirer": "^6.0.0", "meow": "^5.0.0", "pify": "^3.0.0", "rimraf": "^2.6.2", @@ -3586,6 +3595,12 @@ "har-schema": "^2.0.0" } }, + "hard-rejection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-1.0.0.tgz", + "integrity": "sha1-jztHbI4vIhvtc8ZGQP4hfXF9rDY=", + "dev": true + }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", @@ -3744,24 +3759,52 @@ "dev": true }, "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.0.0.tgz", + "integrity": "sha512-tISQWRwtcAgrz+SHPhTH7d3e73k31gsOy6i1csonLc0u1dVK/wYvuOnFeiWqC5OXFIYbmrIFInef31wbT8MEJg==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.1.0", + "external-editor": "^3.0.0", "figures": "^2.0.0", "lodash": "^4.3.0", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^5.5.2", + "rxjs": "^6.1.0", "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" + }, + "dependencies": { + "chardet": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.5.0.tgz", + "integrity": "sha512-9ZTaoBaePSCFvNlNGrsyI8ZVACP2svUtq0DkM7t4K2ClAa96sqOIRjAzDTc8zXzFt1cZR46rRzLTiHFSJ+Qw0g==", + "dev": true + }, + "external-editor": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.0.tgz", + "integrity": "sha512-mpkfj0FEdxrIhOC04zk85X7StNtr0yXnG7zCb+8ikO8OJi2jsHh5YGoknNTyXgsbHOf1WOOcVU3kPFWT2WgCkQ==", + "dev": true, + "requires": { + "chardet": "^0.5.0", + "iconv-lite": "^0.4.22", + "tmp": "^0.0.33" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, "intelli-espower-loader": { @@ -4059,6 +4102,12 @@ "has": "^1.0.1" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -7737,12 +7786,12 @@ } }, "rxjs": { - "version": "5.5.11", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", - "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz", + "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==", "dev": true, "requires": { - "symbol-observable": "1.0.1" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -7759,6 +7808,12 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", @@ -8291,12 +8346,6 @@ "has-flag": "^3.0.0" } }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -8427,9 +8476,9 @@ "dev": true }, "tslib": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", - "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, "tslint": { @@ -8453,17 +8502,17 @@ }, "dependencies": { "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", + "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", "dev": true } } }, "tsutils": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", - "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", + "version": "2.27.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.2.tgz", + "integrity": "sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -9076,9 +9125,9 @@ } }, "yargs-parser": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", - "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { "camelcase": "^4.1.0" diff --git a/package.json b/package.json index 5c8484714a5..e249a37d6ee 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "@types/tmp": "^0.0.33", "@types/url-template": "^2.0.28", "@types/uuid": "^3.4.3", + "assert-rejects": "^0.1.1", "axios": "^0.18.0", "clang-format": "^1.2.3", "codecov": "^3.0.2", @@ -112,6 +113,7 @@ "express": "^4.16.3", "gh-pages": "^1.1.0", "gts": "^0.7.1", + "hard-rejection": "^1.0.0", "intelli-espower-loader": "^1.0.1", "js-green-licenses": "^0.5.0", "minimist": "^1.2.0", diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 00000000000..85dbeaec9c5 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,4 @@ +--require hard-rejection/register +--require intelli-espower-loader +--require source-map-support/register +--timeout 10000 diff --git a/test/test.apikey.ts b/test/test.apikey.ts index 1c5e275e001..1a205d092f6 100644 --- a/test/test.apikey.ts +++ b/test/test.apikey.ts @@ -16,7 +16,6 @@ import {OAuth2Client} from 'google-auth-library'; import nock from 'nock'; import {drive_v2, GoogleApis, urlshortener_v1} from '../src'; -import {google} from '../src'; import {APIEndpoint} from '../src/shared/src/api'; import {Utils} from './utils'; diff --git a/test/test.auth.ts b/test/test.auth.ts index d56c96cc1d6..f85cb6acb28 100644 --- a/test/test.auth.ts +++ b/test/test.auth.ts @@ -18,6 +18,8 @@ import {GoogleApis} from '../src'; import {APIEndpoint} from '../src/shared/src/api'; import {Utils} from './utils'; +assert.rejects = require('assert-rejects'); + const googleapis = new GoogleApis(); describe('JWT client', () => { @@ -59,14 +61,10 @@ describe('Compute client', () => { }); }); -async function testNoTokens( - urlshortener: APIEndpoint, oauth2client: OAuth2Client) { - try { - await urlshortener.url.get({shortUrl: '123', auth: oauth2client}); - assert.fail('expected to throw'); - } catch (e) { - assert.equal(e.message, 'No access, refresh token or API key is set.'); - } +async function testNoTokens(urlshortener: APIEndpoint, client: OAuth2Client) { + await assert.rejects( + urlshortener.url.get({shortUrl: '123', auth: client}), + /No access, refresh token or API key is set./); } async function testNoBearer( @@ -258,8 +256,9 @@ describe('OAuth2 client', () => { new googleapis.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI); oauth2client.credentials = {access_token: 'abc', refresh_token: 'abc'}; const res = await oauth2client.revokeCredentials(); + scope.done(); assert.equal(res.data.success, true); - assert.equal(JSON.stringify(oauth2client.credentials), '{}'); + assert.deepEqual(oauth2client.credentials, {}); }); it('should clear credentials and return error if no access token to revoke', @@ -267,13 +266,10 @@ describe('OAuth2 client', () => { const oauth2client = new googleapis.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI); oauth2client.credentials = {refresh_token: 'abc'}; - try { - const res = await oauth2client.revokeCredentials(); - assert.fail('Expected to throw'); - } catch (e) { - assert.equal(e, 'Error: No access token to revoke.'); - } - assert.equal(JSON.stringify(oauth2client.credentials), '{}'); + await assert.rejects( + oauth2client.revokeCredentials(), + /Error: No access token to revoke./); + assert.deepEqual(oauth2client.credentials, {}); }); }); diff --git a/test/test.clients.ts b/test/test.clients.ts index 9a896f6df79..4140c652ef3 100644 --- a/test/test.clients.ts +++ b/test/test.clients.ts @@ -12,19 +12,15 @@ // limitations under the License. import assert from 'assert'; -import * as fs from 'fs'; import nock from 'nock'; -import * as path from 'path'; -import * as url from 'url'; - -import {datastore_v1, GoogleApis} from '../src'; +import {GoogleApis} from '../src'; import {APIEndpoint} from '../src/shared/src/api'; import {Utils} from './utils'; function createNock(qs?: string) { const query = qs ? `?${qs}` : ''; - nock('https://datastore.googleapis.com') + return nock('https://datastore.googleapis.com') .post(`/v1/projects/test-project-id:lookup${query}`) .reply(200); } diff --git a/test/test.discover.ts b/test/test.discover.ts index 8ef688e9124..37dae5881d4 100644 --- a/test/test.discover.ts +++ b/test/test.discover.ts @@ -17,7 +17,6 @@ import * as path from 'path'; import {GoogleApis} from '../src'; import {APIS} from '../src/apis'; -import {APIEndpoint} from '../src/shared/src/api'; describe('GoogleApis#discover', () => { it('should get a list of supported apis', () => { diff --git a/test/test.kitchen.ts b/test/test.kitchen.ts index dff883228c6..01ea94225d1 100644 --- a/test/test.kitchen.ts +++ b/test/test.kitchen.ts @@ -15,7 +15,6 @@ */ import * as cp from 'child_process'; -import * as fs from 'fs'; import mv from 'mv'; import {ncp} from 'ncp'; import pify from 'pify'; diff --git a/test/test.media.ts b/test/test.media.ts index 441a464ee2c..149ef60003b 100644 --- a/test/test.media.ts +++ b/test/test.media.ts @@ -17,7 +17,7 @@ import nock from 'nock'; import * as path from 'path'; import pify from 'pify'; -import {drive_v2, gmail_v1, GoogleApis, youtube_v3} from '../src'; +import {drive_v2, gmail_v1, GoogleApis} from '../src'; import {Utils} from './utils'; @@ -102,7 +102,7 @@ describe('Media', () => { const google = new GoogleApis(); const youtube = google.youtube('v3'); const progressEvents = new Array(); - const res = await youtube.videos.insert( + await youtube.videos.insert( { part: 'id,snippet', notifySubscribers: false, diff --git a/test/test.options.ts b/test/test.options.ts index 9fa05ad1cea..77ce80c5e14 100644 --- a/test/test.options.ts +++ b/test/test.options.ts @@ -12,11 +12,8 @@ // limitations under the License. import assert from 'assert'; -import {AxiosResponse} from 'axios'; import nock from 'nock'; -import * as url from 'url'; - -import {drive_v2, drive_v3, GoogleApis} from '../src'; +import {GoogleApis} from '../src'; import {Utils} from './utils'; diff --git a/test/test.urlshortener.v1.ts b/test/test.urlshortener.v1.ts index cb2c7dae33c..61d852bbb0c 100644 --- a/test/test.urlshortener.v1.ts +++ b/test/test.urlshortener.v1.ts @@ -14,7 +14,6 @@ import assert from 'assert'; import nock from 'nock'; import * as path from 'path'; -import * as url from 'url'; import {GoogleApis, urlshortener_v1} from '../src'; diff --git a/test/utils.ts b/test/utils.ts index e58581c8539..161b1c8defc 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -14,7 +14,6 @@ import {AxiosResponse} from 'axios'; import * as url from 'url'; import {GoogleApis} from '../src'; -import {Endpoint} from '../src/shared/src/endpoint'; export abstract class Utils { static getQs(res: AxiosResponse) {