From 5fff30ff698dbc8c30717e1f617091eb410b3de6 Mon Sep 17 00:00:00 2001 From: donghez-google <74332020+donghez-google@users.noreply.github.com> Date: Thu, 28 Jan 2021 15:01:27 -0800 Subject: [PATCH] feat(samples): add samples for analyzeIamPolicy and analyzeIamPolicyLongrunning (#433) --- .../google-cloud-asset/samples/package.json | 1 + .../samples/test/sample.test.js | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/packages/google-cloud-asset/samples/package.json b/packages/google-cloud-asset/samples/package.json index f761e66f882..4c6b84b3f6c 100644 --- a/packages/google-cloud-asset/samples/package.json +++ b/packages/google-cloud-asset/samples/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@google-cloud/asset": "^3.11.0", + "@google-cloud/bigquery": "^5.5.0", "@google-cloud/compute": "^2.0.0", "@google-cloud/storage": "^5.0.0", "uuid": "^8.0.0", diff --git a/packages/google-cloud-asset/samples/test/sample.test.js b/packages/google-cloud-asset/samples/test/sample.test.js index 30be671a8d9..141f2cb2bd8 100644 --- a/packages/google-cloud-asset/samples/test/sample.test.js +++ b/packages/google-cloud-asset/samples/test/sample.test.js @@ -26,6 +26,13 @@ const storage = new Storage(); const bucketName = `asset-nodejs-${uuid.v4()}`; const bucket = storage.bucket(bucketName); +const {BigQuery} = require('@google-cloud/bigquery'); +const bigquery = new BigQuery(); +const options = { + location: 'US', +}; +const datasetId = `asset_nodejs_${uuid.v4()}`.replace(/-/gi, '_'); + const Compute = require('@google-cloud/compute'); const zone = new Compute().zone('us-central1-c'); const vmName = `asset-nodejs-${uuid.v4()}`; @@ -49,11 +56,14 @@ const delay = async test => { describe('quickstart sample tests', () => { before(async () => { await bucket.create(); + await bigquery.createDataset(datasetId, options); + await bigquery.dataset(datasetId).exists(); [vm] = await zone.createVM(vmName, {os: 'ubuntu'}); }); after(async () => { await bucket.delete(); + await bigquery.dataset(datasetId).delete({force: true}).catch(console.warn); await vm.delete(); }); @@ -99,4 +109,41 @@ describe('quickstart sample tests', () => { const stdout = execSync(`node listAssets ${assetType}`); assert.include(stdout, assetType); }); + + it('should analyze iam policy successfully', async () => { + const stdout = execSync('node analyzeIamPolicy'); + assert.include(stdout, '//cloudresourcemanager.googleapis.com/projects'); + }); + + it('should analyze iam policy and write analysis results to gcs successfully', async function () { + this.retries(2); + await delay(this.test); + const uri = `gs://${bucketName}/my-analysis.json`; + execSync(`node analyzeIamPolicyLongrunningGcs ${uri}`); + const file = await bucket.file('my-analysis.json'); + const exists = await file.exists(); + assert.ok(exists); + await file.delete(); + }); + + it('should analyze iam policy and write analysis results to bigquery successfully', async function () { + this.retries(2); + await delay(this.test); + const tablePrefix = 'analysis_nodejs'; + execSync( + `node analyzeIamPolicyLongrunningBigquery ${datasetId} ${tablePrefix}` + ); + const metadataTable = await bigquery + .dataset(datasetId) + .table('analysis_nodejs_analysis'); + const metadataTable_exists = await metadataTable.exists(); + assert.ok(metadataTable_exists); + const resultsTable = await bigquery + .dataset(datasetId) + .table('analysis_nodejs_analysis_result'); + const resultsTable_exists = await resultsTable.exists(); + assert.ok(resultsTable_exists); + await metadataTable.delete(); + await resultsTable.delete(); + }); });