-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
660 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
<img src="https://avatars2.githubusercontent.com/u/2810941?v=3&s=96" alt="Google Cloud Platform logo" title="Google Cloud Platform" align="right" height="96" width="96"/> | ||
|
||
# Google Cloud KMS API Node.js Samples | ||
|
||
The [Cloud KMS API][kms_docs] is a service that allows you to keep encryption | ||
keys centrally in the cloud, for direct use by cloud services. | ||
|
||
[kms_docs]: https://cloud.google.com/kms/docs/ | ||
|
||
## Table of Contents | ||
|
||
* [Setup](#setup) | ||
* [Samples](#samples) | ||
* [Quickstart](#quickstart) | ||
|
||
## Setup | ||
|
||
1. Read [Prerequisites][prereq] and [How to run a sample][run] first. | ||
1. Install dependencies: | ||
|
||
npm install | ||
|
||
[prereq]: ../README.md#prerequisities | ||
[run]: ../README.md#how-to-run-a-sample | ||
|
||
## Samples | ||
|
||
### Quickstart | ||
|
||
View the [documentation][quickstart_docs] or the [source code][quickstart_code]. | ||
|
||
Run the sample: | ||
|
||
node quickstart.js | ||
|
||
[quickstart_docs]: https://cloud.google.com/kms/docs | ||
[quickstart_code]: hostedmodels.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"name": "nodejs-docs-samples-kms", | ||
"version": "0.0.1", | ||
"private": true, | ||
"license": "Apache Version 2.0", | ||
"author": "Google Inc.", | ||
"scripts": { | ||
"test": "cd ..; npm run st -- --verbose kms/system-test/*.test.js" | ||
}, | ||
"dependencies": { | ||
"googleapis": "16.1.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/** | ||
* Copyright 2017, 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 kms_quickstart] | ||
// Imports the Google APIs client library | ||
const google = require('googleapis'); | ||
|
||
// Your Google Cloud Platform project ID | ||
const projectId = 'YOUR_PROJECT_ID'; | ||
|
||
// The "global" zone will list all keys. It can be a specific zone if desired. | ||
const zone = 'global'; | ||
|
||
// Acquires credentials | ||
google.auth.getApplicationDefault((err, authClient) => { | ||
if (err) { | ||
console.error('Failed to acquire credentials'); | ||
return; | ||
} | ||
|
||
if (authClient.createScopedRequired && authClient.createScopedRequired()) { | ||
authClient = authClient.createScoped([ | ||
'https://www.googleapis.com/auth/cloud-platform' | ||
]); | ||
} | ||
|
||
// Instantiates an authorized client | ||
const cloudkms = google.cloudkms({ | ||
version: 'v1beta1', | ||
auth: authClient | ||
}); | ||
const params = { | ||
parent: `projects/${projectId}/locations/${zone}` | ||
}; | ||
|
||
// Lists key rings | ||
cloudkms.projects.locations.keyRings.list(params, (err, result) => { | ||
if (err) { | ||
console.error(err); | ||
return; | ||
} | ||
|
||
const keyRings = result.keyRings || []; | ||
|
||
if (keyRings.length) { | ||
console.log('Key kings:'); | ||
result.keyRings.forEach((keyRing) => console.log(keyRing.name)); | ||
} else { | ||
console.log(`No key rings found.`); | ||
} | ||
}); | ||
}); | ||
// [END kms_quickstart] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/** | ||
* Copyright 2017, 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'; | ||
|
||
require(`../../system-test/_setup`); | ||
|
||
const proxyquire = require(`proxyquire`).noPreserveCache(); | ||
const google = proxyquire(`googleapis`, {}); | ||
|
||
function list (callback) { | ||
google.auth.getApplicationDefault((err, authClient) => { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
|
||
if (authClient.createScopedRequired && authClient.createScopedRequired()) { | ||
authClient = authClient.createScoped([ | ||
'https://www.googleapis.com/auth/cloud-platform' | ||
]); | ||
} | ||
|
||
const cloudkms = google.cloudkms({ | ||
version: 'v1beta1', | ||
auth: authClient | ||
}); | ||
const params = { | ||
parent: `projects/${process.env.GCLOUD_PROJECT}/locations/global` | ||
}; | ||
|
||
cloudkms.projects.locations.keyRings.list(params, callback); | ||
}); | ||
} | ||
|
||
test.beforeEach(stubConsole); | ||
test.afterEach.always(restoreConsole); | ||
|
||
test.cb(`should list key rings`, (t) => { | ||
const googleapisMock = { | ||
cloudkms () { | ||
return { | ||
projects: { | ||
locations: { | ||
keyRings: { | ||
list (params, callback) { | ||
list((err, result) => { | ||
if (err) { | ||
t.end(err); | ||
return; | ||
} | ||
callback(err, result); | ||
|
||
setTimeout(() => { | ||
try { | ||
t.true(console.log.called); | ||
if (result && result.keyRings && result.keyRings.length) { | ||
t.deepEqual(console.log.getCall(0).args, [`Key rings:`]); | ||
} else { | ||
t.deepEqual(console.log.getCall(0).args, [`No key rings found.`]); | ||
} | ||
t.end(); | ||
} catch (err) { | ||
t.end(err); | ||
} | ||
}, 200); | ||
}); | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
} | ||
}; | ||
|
||
proxyquire(`../quickstart`, { | ||
'googleapis': googleapisMock | ||
}); | ||
}); |
Oops, something went wrong.