diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb index 9d753a85abf..78ae217fa56 100755 --- a/src/ruby/bin/interop/interop_client.rb +++ b/src/ruby/bin/interop/interop_client.rb @@ -110,6 +110,14 @@ def create_stub(opts) end end + if opts.test_case == 'oauth2_auth_token' + auth_creds = Google::Auth.get_application_default(opts.oauth_scope) + kw = auth_creds.updater_proc.call({}) # gives as an auth token + + # use a metadata update proc that just adds the auth token. + stub_opts[:update_metadata] = proc { |md| md.merge(kw) } + end + if opts.test_case == 'jwt_token_creds' # don't use a scope auth_creds = Google::Auth.get_application_default stub_opts[:update_metadata] = auth_creds.updater_proc @@ -228,6 +236,33 @@ class NamedTests p 'OK: compute_engine_creds' end + def oauth2_auth_token + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true) + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + assert_equal(wanted_email, resp.username, + "#{__callee__}: incorrect username") + assert(@args.oauth_scope.include?(resp.oauth_scope), + "#{__callee__}: incorrect oauth_scope") + p "OK: #{__callee__}" + end + + def per_rpc_creds + auth_creds = Google::Auth.get_application_default(@args.oauth_scope) + kw = auth_creds.updater_proc.call({}) + resp = perform_large_unary(fill_username: true, + fill_oauth_scope: true, + **kw) + json_key = File.read(ENV[AUTH_ENV]) + wanted_email = MultiJson.load(json_key)['client_email'] + assert_equal(wanted_email, resp.username, + "#{__callee__}: incorrect username") + assert(@args.oauth_scope.include?(resp.oauth_scope), + "#{__callee__}: incorrect oauth_scope") + p "OK: #{__callee__}" + end + def client_streaming msg_sizes = [27_182, 8, 1828, 45_904] wanted_aggregate_size = 74_922 @@ -276,6 +311,18 @@ class NamedTests p "OK: #{__callee__}" end + def empty_stream + ppp = PingPongPlayer.new([]) + resps = @stub.full_duplex_call(ppp.each_item) + count = 0 + resps.each do + |r| ppp.queue.push(r) + count += 1 + end + assert_equal(0, count, 'too many responses, expect 0') + p 'OK: empty_stream' + end + def cancel_after_begin msg_sizes = [27_182, 8, 1828, 45_904] reqs = msg_sizes.map do |x| @@ -311,7 +358,7 @@ class NamedTests private - def perform_large_unary(fill_username: false, fill_oauth_scope: false) + def perform_large_unary(fill_username: false, fill_oauth_scope: false, **kw) req_size, wanted_response_size = 271_828, 314_159 payload = Payload.new(type: :COMPRESSABLE, body: nulls(req_size)) req = SimpleRequest.new(response_type: :COMPRESSABLE, @@ -319,7 +366,7 @@ class NamedTests payload: payload) req.fill_username = fill_username req.fill_oauth_scope = fill_oauth_scope - resp = @stub.unary_call(req) + resp = @stub.unary_call(req, **kw) assert_equal(:COMPRESSABLE, resp.payload.type, 'large_unary: payload had the wrong type') assert_equal(wanted_response_size, resp.payload.body.length,