From 30df27aee191cfeea3ceb9e0993ef91d48343cad Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 8 Oct 2015 10:54:22 -0700 Subject: Made Node interop client use all specified command line flags --- src/node/interop/interop_client.js | 97 ++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 52 deletions(-) (limited to 'src/node/interop/interop_client.js') diff --git a/src/node/interop/interop_client.js b/src/node/interop/interop_client.js index 14cc6c0efe..ac820dce3e 100644 --- a/src/node/interop/interop_client.js +++ b/src/node/interop/interop_client.js @@ -44,13 +44,6 @@ var GoogleAuth = require('google-auth-library'); var assert = require('assert'); -var AUTH_SCOPE = 'https://www.googleapis.com/auth/xapi.zoo'; -var AUTH_SCOPE_RESPONSE = 'xapi.zoo'; -var AUTH_USER = ('155450119199-vefjjaekcc6cmsd5914v6lqufunmh9ue' + - '@developer.gserviceaccount.com'); -var COMPUTE_ENGINE_USER = ('155450119199-r5aaqa2vqoa9g5mv2m6s3m1l293rlmel' + - '@developer.gserviceaccount.com'); - var ECHO_INITIAL_KEY = 'x-grpc-test-echo-initial'; var ECHO_TRAILING_KEY = 'x-grpc-test-echo-trailing-bin'; @@ -369,7 +362,7 @@ function authTest(expected_user, scope, client, done) { assert.strictEqual(resp.payload.body.length, 314159); assert.strictEqual(resp.username, expected_user); if (scope) { - assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE); + assert(scope.indexOf(resp.oauth_scope) > -1); } if (done) { done(); @@ -377,56 +370,49 @@ function authTest(expected_user, scope, client, done) { }); } -function oauth2Test(expected_user, scope, per_rpc, client, done) { - (new GoogleAuth()).getApplicationDefault(function(err, credential) { - assert.ifError(err); +function computeEngineCreds(client, done, extra) { + authTest(extra.service_account, null, client, done); +} + +function serviceAccountCreds(client, done, extra) { + authTest(extra.default_service_account, extra.oauth_scope, client, done); +} + +function jwtTokenCreds(client, done, extra) { + authTest(extra.default_service_account, null, client, done); +} + +function oauth2Test(client, done, extra) { var arg = { fill_username: true, fill_oauth_scope: true }; - credential = credential.createScoped(scope); - credential.getAccessToken(function(err, token) { - assert.ifError(err); - var updateMetadata = function(authURI, metadata, callback) { - metadata.add('authorization', 'Bearer ' + token); - callback(null, metadata); - }; - var makeTestCall = function(error, client_metadata) { - assert.ifError(error); - client.unaryCall(arg, function(err, resp) { - assert.ifError(err); - assert.strictEqual(resp.username, expected_user); - assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE); - if (done) { - done(); - } - }, client_metadata); - }; - if (per_rpc) { - updateMetadata('', new grpc.Metadata(), makeTestCall); - } else { - client.$updateMetadata = updateMetadata; - makeTestCall(null, new grpc.Metadata()); - } - }); + client.unaryCall(arg, function(err, resp) { + assert.ifError(err); + assert.strictEqual(resp.username, extra.service_account); + assert(extra.oauth_scope.indexOf(resp.oauth_scope) > -1); + if (done) { + done(); + } }); } -function perRpcAuthTest(expected_user, scope, per_rpc, client, done) { +function perRpcAuthTest(client, done, extra) { (new GoogleAuth()).getApplicationDefault(function(err, credential) { assert.ifError(err); var arg = { fill_username: true, fill_oauth_scope: true }; + var scope = extra.oauth_scope; if (credential.createScopedRequired() && scope) { credential = credential.createScoped(scope); } var creds = grpc.credentials.createFromGoogleCredential(credential); client.unaryCall(arg, function(err, resp) { assert.ifError(err); - assert.strictEqual(resp.username, expected_user); - assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE); + assert.strictEqual(resp.username, extra.service_account); + assert(extra.oauth_scope.indexOf(resp.oauth_scope) > -1); if (done) { done(); } @@ -483,15 +469,15 @@ var test_cases = { cancel_after_first_response: {run: cancelAfterFirstResponse}, timeout_on_sleeping_server: {run: timeoutOnSleepingServer}, custom_metadata: {run: customMetadata}, - compute_engine_creds: {run: _.partial(authTest, COMPUTE_ENGINE_USER, null), - getCreds: _.partial(getApplicationCreds, null)}, - service_account_creds: {run: _.partial(authTest, AUTH_USER, AUTH_SCOPE), - getCreds: _.partial(getApplicationCreds, AUTH_SCOPE)}, - jwt_token_creds: {run: _.partial(authTest, AUTH_USER, null), - getCreds: _.partial(getApplicationCreds, null)}, - oauth2_auth_token: {run: _.partial(oauth2Test, AUTH_USER, AUTH_SCOPE, false), - getCreds: _.partial(getOauth2Creds, AUTH_SCOPE)}, - per_rpc_creds: {run: _.partial(perRpcAuthTest, AUTH_USER, AUTH_SCOPE, true)} + compute_engine_creds: {run: computeEngineCreds, + getCreds: getApplicationCreds}, + service_account_creds: {run: serviceAccountCreds, + getCreds: getApplicationCreds}, + jwt_token_creds: {run: jwtTokenCreds, + getCreds: getApplicationCreds}, + oauth2_auth_token: {run: oauth2Test, + getCreds: getOauth2Creds}, + per_rpc_creds: {run: perRpcAuthTest} }; /** @@ -504,8 +490,9 @@ var test_cases = { * @param {bool} tls Indicates that a secure channel should be used * @param {function} done Callback to call when the test is completed. Included * primarily for use with mocha + * @param {object=} extra Extra options for some tests */ -function runTest(address, host_override, test_case, tls, test_ca, done) { +function runTest(address, host_override, test_case, tls, test_ca, done, extra) { // TODO(mlumish): enable TLS functionality var options = {}; var creds; @@ -534,7 +521,7 @@ function runTest(address, host_override, test_case, tls, test_ca, done) { }; if (test.getCreds) { - test.getCreds(function(err, new_creds) { + test.getCreds(extra.oauth_scope, function(err, new_creds) { execute(err, grpc.credentials.combineChannelCredentials( creds, new_creds)); }); @@ -547,13 +534,19 @@ if (require.main === module) { var parseArgs = require('minimist'); var argv = parseArgs(process.argv, { string: ['server_host', 'server_host_override', 'server_port', 'test_case', - 'use_tls', 'use_test_ca'] + 'use_tls', 'use_test_ca', 'default_service_account', 'oauth_scope', + 'service_account_key_file'] }); + var extra_args = { + service_account: argv.default_service_account, + oauth_scope: argv.oauth_scope, + service_account_key_file: argv.service_account_key_file + }; runTest(argv.server_host + ':' + argv.server_port, argv.server_host_override, argv.test_case, argv.use_tls === 'true', argv.use_test_ca === 'true', function () { console.log('OK:', argv.test_case); - }); + }, extra_args); } /** -- cgit v1.2.3