Skip to content

Commit 25fd392

Browse files
author
Matt Muller
committed
Improve testing of protocol and stub responses
1 parent bae5730 commit 25fd392

21 files changed

Lines changed: 391 additions & 157 deletions

gems/smithy-client/lib/smithy-client/plugins/protocol.rb

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,25 @@ class Protocol < Plugin
1212
docstring: 'The protocol to use for request serialization and response deserialization.'
1313
)
1414

15-
def add_handlers(handlers, config)
16-
return unless config.protocol
15+
# @api private
16+
class BuildHandler < Handler
17+
def call(context)
18+
context.config.protocol.build_request(context)
19+
@handler.call(context)
20+
end
21+
end
22+
23+
# @api private
24+
class ParseHandler < Handler
25+
def call(context)
26+
output = @handler.call(context)
27+
output.error = context.config.protocol.parse_error(context) unless output.error
28+
output.data = context.config.protocol.parse_data(context) unless output.error
29+
output
30+
end
31+
end
1732

33+
def add_handlers(handlers, config)
1834
handlers.add(BuildHandler)
1935
handlers.add(ParseHandler, step: :parse)
2036
end
@@ -45,24 +61,6 @@ def resolve_default_protocol(client_class, options)
4561
end
4662
end
4763
end
48-
49-
# @api private
50-
class BuildHandler < Handler
51-
def call(context)
52-
context.config.protocol.build_request(context)
53-
@handler.call(context)
54-
end
55-
end
56-
57-
# @api private
58-
class ParseHandler < Handler
59-
def call(context)
60-
output = @handler.call(context)
61-
output.error = context.config.protocol.parse_error(context) unless output.error
62-
output.data = context.config.protocol.parse_data(context) unless output.error
63-
output
64-
end
65-
end
6664
end
6765
end
6866
end

gems/smithy-client/lib/smithy-client/rpc_v2_cbor/request_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def event_stream?(shape)
5555
end
5656

5757
def event_stream_shape?(shape)
58-
shape.traits.include?('smithy.api#streaming') && shape.is_a?(Shapes::Union)
58+
shape.traits.include?('smithy.api#streaming') && shape.is_a?(Schema::Shapes::UnionShape)
5959
end
6060

6161
def build_url(context)

gems/smithy-client/spec/smithy-client/param_converter_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module Client
1010
describe ParamConverter do
1111
describe '#convert' do
1212
it 'performs a deeply nested conversion of values' do
13-
client_class = ClientHelper.sample_service
13+
client_class = ClientHelper.sample_client
1414
rules = client_class.const_get(:Schema).const_get(:SERVICE).operation(:operation).input
1515
structure = client_class.const_get(:Types).const_get(:Structure)
1616
union = client_class.const_get(:Types).const_get(:Union).const_get(:Structure)

gems/smithy-client/spec/smithy-client/param_validator_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ module Smithy
66
module Client
77
describe ParamValidator do
88
let(:shapes) { SchemaHelper.sample_shapes }
9-
let(:sample_service) { ClientHelper.sample_service(shapes: shapes) }
10-
let(:service) { sample_service.const_get(:Schema).const_get(:SERVICE) }
9+
let(:sample_client) { ClientHelper.sample_client(shapes: shapes) }
10+
let(:service_shape) { sample_client.const_get(:Schema).const_get(:SERVICE) }
1111

1212
def validate(params, expected_errors = [])
13-
schema = service.operation(:operation).input
13+
schema = service_shape.operation(:operation).input
1414
if expected_errors.empty?
1515
ParamValidator.new(schema).validate!(params)
1616
else
@@ -271,7 +271,7 @@ def match_errors(error, expected_errors)
271271
end
272272

273273
it 'accepts a modeled type' do
274-
structure = sample_service.const_get(:Types).const_get(:Structure).new({})
274+
structure = sample_client.const_get(:Types).const_get(:Structure).new({})
275275
validate({ structure: structure })
276276
end
277277
end
@@ -312,12 +312,12 @@ def match_errors(error, expected_errors)
312312
end
313313

314314
it 'accepts a modeled type' do
315-
union_structure = sample_service.const_get(:Types).const_get(:Union).const_get(:Structure)
315+
union_structure = sample_client.const_get(:Types).const_get(:Union).const_get(:Structure)
316316
validate({ union: union_structure.new({ string: 'string' }) })
317317
end
318318

319319
it 'raises an error when given the wrong modeled type' do
320-
union_structure = sample_service.const_get(:Types).const_get(:Union).const_get(:Structure)
320+
union_structure = sample_client.const_get(:Types).const_get(:Union).const_get(:Structure)
321321
validate({ union: union_structure.new({ structure: 'abc' }) },
322322
'expected params[:union][:structure] to be a Hash, got class String instead.')
323323
end

gems/smithy-client/spec/smithy-client/plugins/http_api_key_auth_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ module Smithy
88
module Client
99
module Plugins
1010
describe HttpApiKeyAuth do
11-
let(:sample_service) { ClientHelper.sample_service }
11+
let(:sample_client) { ClientHelper.sample_client }
1212

1313
let(:client_class) do
14-
client_class = sample_service.const_get(:Client)
14+
client_class = sample_client.const_get(:Client)
1515
client_class.clear_plugins
16-
client_class.add_plugin(sample_service::Plugins::Endpoint)
17-
client_class.add_plugin(sample_service::Plugins::Auth)
16+
client_class.add_plugin(sample_client::Plugins::Endpoint)
17+
client_class.add_plugin(sample_client::Plugins::Auth)
1818
client_class.add_plugin(AnonymousAuth)
1919
client_class.add_plugin(HttpApiKeyAuth)
2020
client_class.add_plugin(StubResponses)

gems/smithy-client/spec/smithy-client/plugins/http_basic_auth_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ module Smithy
88
module Client
99
module Plugins
1010
describe HttpBasicAuth do
11-
let(:sample_service) { ClientHelper.sample_service }
11+
let(:sample_client) { ClientHelper.sample_client }
1212

1313
let(:client_class) do
14-
client_class = sample_service.const_get(:Client)
14+
client_class = sample_client.const_get(:Client)
1515
client_class.clear_plugins
16-
client_class.add_plugin(sample_service::Plugins::Endpoint)
17-
client_class.add_plugin(sample_service::Plugins::Auth)
16+
client_class.add_plugin(sample_client::Plugins::Endpoint)
17+
client_class.add_plugin(sample_client::Plugins::Auth)
1818
client_class.add_plugin(AnonymousAuth)
1919
client_class.add_plugin(HttpBasicAuth)
2020
client_class.add_plugin(StubResponses)

gems/smithy-client/spec/smithy-client/plugins/http_bearer_auth_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ module Smithy
88
module Client
99
module Plugins
1010
describe HttpBearerAuth do
11-
let(:sample_service) { ClientHelper.sample_service }
11+
let(:sample_client) { ClientHelper.sample_client }
1212

1313
let(:client_class) do
14-
client_class = sample_service.const_get(:Client)
14+
client_class = sample_client.const_get(:Client)
1515
client_class.clear_plugins
16-
client_class.add_plugin(sample_service::Plugins::Endpoint)
17-
client_class.add_plugin(sample_service::Plugins::Auth)
16+
client_class.add_plugin(sample_client::Plugins::Endpoint)
17+
client_class.add_plugin(sample_client::Plugins::Auth)
1818
client_class.add_plugin(AnonymousAuth)
1919
client_class.add_plugin(HttpBearerAuth)
2020
client_class.add_plugin(StubResponses)

gems/smithy-client/spec/smithy-client/plugins/http_digest_auth_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ module Smithy
88
module Client
99
module Plugins
1010
describe HttpDigestAuth do
11-
let(:sample_service) { ClientHelper.sample_service }
11+
let(:sample_client) { ClientHelper.sample_client }
1212

1313
let(:client_class) do
14-
client_class = sample_service.const_get(:Client)
14+
client_class = sample_client.const_get(:Client)
1515
client_class.clear_plugins
16-
client_class.add_plugin(sample_service::Plugins::Endpoint)
17-
client_class.add_plugin(sample_service::Plugins::Auth)
16+
client_class.add_plugin(sample_client::Plugins::Endpoint)
17+
client_class.add_plugin(sample_client::Plugins::Auth)
1818
client_class.add_plugin(AnonymousAuth)
1919
client_class.add_plugin(HttpDigestAuth)
2020
client_class.add_plugin(StubResponses)

gems/smithy-client/spec/smithy-client/plugins/logging_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module Client
99
module Plugins
1010
describe Logging do
1111
let(:client_class) do
12-
client_class = ClientHelper.sample_service.const_get(:Client)
12+
client_class = ClientHelper.sample_client.const_get(:Client)
1313
client_class.clear_plugins
1414
client_class.add_plugin(Logging)
1515
client_class.add_plugin(DummySendPlugin)

gems/smithy-client/spec/smithy-client/plugins/net_http_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module Client
99
module Plugins
1010
describe NetHTTP do
1111
let(:client_class) do
12-
client_class = ClientHelper.sample_service.const_get(:Client)
12+
client_class = ClientHelper.sample_client.const_get(:Client)
1313
client_class.clear_plugins
1414
client_class.add_plugin(NetHTTP)
1515
client_class

0 commit comments

Comments
 (0)