Skip to content

Commit

Permalink
transport agnostic error test fixes + protocol fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
alextwoods committed Aug 21, 2024
1 parent ee67662 commit 1212b43
Show file tree
Hide file tree
Showing 14 changed files with 65 additions and 51 deletions.
8 changes: 4 additions & 4 deletions codegen/projections/rails_json/lib/rails_json/parsers.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions codegen/projections/rails_json/spec/protocol_spec.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 20 additions & 17 deletions codegen/projections/rpcv2_cbor/lib/rpcv2_cbor/parsers.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions codegen/projections/rpcv2_cbor/spec/protocol_spec.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions codegen/projections/white_label/spec/errors_spec.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ module Errors

describe ClientError do
it 'is retryable without throttling' do
error = ClientError.new(data: nil, metadata: {},
error = ClientError.new(data: Types::ClientError.new,
metadata: {},
error_code: 'error')
expect(error.retryable?).to be true
expect(error.throttling?).to be false
Expand All @@ -60,7 +61,7 @@ module Errors

describe ServerError do
it 'is retryable with throttling' do
error = ServerError.new(data: nil, metadata: {},
error = ServerError.new(data: Types::ServerError.new, metadata: {},
error_code: 'error')
expect(error.retryable?).to be true
expect(error.throttling?).to be true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@
subject.stub_responses(
:start_event_stream,
WhiteLabel::Errors::ClientError.new(
data: nil,
data: Types::ClientError.new,
error_code: 'ClientError'
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ private void renderErrorTests(OperationShape operation) {
.dedent()
.write("rescue Errors::$L => e", error.getId().getName())
.indent()
.write("expect(e.http_status).to eq($L)", testCase.getCode())
.write("expect(e.metadata[:http_resp].status).to eq($L)", testCase.getCode())
.write("expect(e.data.to_h).to eq($L)",
getRubyHashFromParams(error, testCase.getParams()))
.closeBlock("end")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,12 @@ protected void renderOperationParseMethod(OperationShape operation, Shape output
@Override
protected void renderErrorParseMethod(Shape s) {
writer
.openBlock("def self.parse(http_resp)")
.openBlock("def self.parse(http_resp, **kwargs)")
.write("data = $T.new", context.symbolProvider().toSymbol(s))
.call(() -> renderHeaderParsers(s))
.call(() -> renderPrefixHeaderParsers(s))
.call(() -> renderOperationBodyParser(s))
.write("data")
.write("Errors::$L.new(data: data, **kwargs)",
context.symbolProvider().toSymbol(s).getName())
.closeBlock("end");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,14 +152,15 @@ protected void renderOperationParseMethod(OperationShape operation, Shape output
@Override
protected void renderErrorParseMethod(Shape shape) {
writer
.openBlock("def self.parse(http_resp)")
.openBlock("def self.parse(http_resp, **kwargs)")
.write("data = $T.new", context.symbolProvider().toSymbol(shape))
.write("body = http_resp.body.read")
.write("return data if body.empty?")
.write("map = $T.decode(body)", Hearth.CBOR);
renderMemberParsers(shape);
writer
.write("data")
.openBlock("unless body.empty?")
.write("map = $T.decode(body)", Hearth.CBOR)
.call(() -> renderMemberParsers(shape))
.closeBlock("end")
.write("Errors::$L.new(data: data, **kwargs)",
context.symbolProvider().toSymbol(shape).getName())
.closeBlock("end");
}

Expand Down
7 changes: 4 additions & 3 deletions hearth/spec/hearth/event_stream/handler_base_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ module EventStream
Class.new(HandlerBase) do
def parse_event(_, _); end
def parse_error_event(_); end
def parse_exception_event(_, _); end
end.new
end

Expand Down Expand Up @@ -87,9 +88,9 @@ def parse_error_event(_); end
let(:exception_class) { Class.new }
let(:exception_event) { exception_class.new }

it 'calls registered MyException handlers' do
subject.send(:on, exception_class, handler1)
expect(subject).to receive(:parse_event)
it 'calls registered error handlers' do
subject.on_error(&handler1)
expect(subject).to receive(:parse_exception_event)
.with(exception_type, message)
.and_return(exception_event)
expect(handler1).to receive(:call).with(exception_event)
Expand Down
3 changes: 1 addition & 2 deletions hearth/spec/hearth/http/error_inspector_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ module HTTP
let(:message) { 'message' }

let(:error) do
Hearth::HTTP::ApiError.new(
http_resp: http_resp,
Hearth::ApiError.new(
error_code: 'error_code',
metadata: {},
message: message
Expand Down
14 changes: 11 additions & 3 deletions hearth/spec/hearth/http/error_parser_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def self.error_code(_http_resp)
nil
end

class ApiError < Hearth::HTTP::ApiError; end
class ApiError < Hearth::ApiError; end

class ApiRedirectError < ApiError
def initialize(location:, **kwargs)
Expand All @@ -23,12 +23,20 @@ class ApiClientError < ApiError; end
class ApiServerError < ApiError; end

class ModeledError < ApiClientError; end

module Parsers
class ModeledError
def self.parse(_http_resp, **_kwargs)
TestErrors::ModeledError.new(error_code: 'ModeledError')
end
end
end
end

describe ErrorParser do
let(:error_module) { TestErrors }
let(:success_status) { 200 }
let(:errors) { [TestErrors::ModeledError] }
let(:error_parsers) { [TestErrors::Parsers::ModeledError] }

let(:resp_status) { 200 }
let(:fields) { Fields.new }
Expand All @@ -39,7 +47,7 @@ class ModeledError < ApiClientError; end
Hearth::HTTP::ErrorParser.new(
error_module: error_module,
success_status: success_status,
errors: errors
error_parsers: error_parsers
)
end

Expand Down

0 comments on commit 1212b43

Please sign in to comment.