mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-05 00:02:38 -04:00
76 lines
2.6 KiB
Ruby
76 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ResponsePatternMatchTests
|
|
include HTTPX
|
|
|
|
def test_response_headers_deconstruct
|
|
response = Response.new(request, 200, "2.0", { "host" => "google.com", "content-type" => "application/json" })
|
|
case response
|
|
in [_, [*, ["content-type", content_type], *], _]
|
|
assert content_type == "application/json"
|
|
else
|
|
raise "unexpected response"
|
|
end
|
|
end
|
|
|
|
def test_response_deconstruct
|
|
response_with_body = Response.new(request, 200, "2.0", { "x-with-body" => "true" })
|
|
response_with_body << "OK"
|
|
|
|
responses = [
|
|
response_with_body,
|
|
Response.new(request, 202, "2.0", { "x-success" => "true" }),
|
|
Response.new(request, 400, "2.0", { "x-client-error" => "true" }),
|
|
Response.new(request, 500, "2.0", { "x-server-error" => "true" }),
|
|
ErrorResponse.new(request, StandardError.new("match error"), Options.new),
|
|
]
|
|
|
|
responses.each do |response|
|
|
case response
|
|
in [200, headers, "OK"]
|
|
verify_header(headers, "x-with-body", "true")
|
|
in [201..399, headers, _body]
|
|
verify_header(headers, "x-success", "true")
|
|
in [400..499, headers, _body]
|
|
verify_header(headers, "x-client-error", "true")
|
|
in [500.., headers, _body]
|
|
verify_header(headers, "x-server-error", "true")
|
|
in [StandardError => error]
|
|
assert error.message == "match error", "unexpected message (was '#{error.message}')"
|
|
else
|
|
raise "unexpected response: #{response}"
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_response_deconstruct_keys
|
|
response_with_body = Response.new(request, 200, "2.0", { "x-with-body" => "true" })
|
|
response_with_body << "OK"
|
|
|
|
responses = [
|
|
response_with_body,
|
|
Response.new(request, 202, "2.0", { "x-success" => "true" }),
|
|
Response.new(request, 400, "2.0", { "x-client-error" => "true" }),
|
|
Response.new(request, 500, "2.0", { "x-server-error" => "true" }),
|
|
ErrorResponse.new(request, StandardError.new("match error"), Options.new),
|
|
]
|
|
|
|
responses.each do |response|
|
|
case response
|
|
in { status: 200, headers:, body: "OK" }
|
|
verify_header(headers, "x-with-body", "true")
|
|
in { status: 201..399, headers: }
|
|
verify_header(headers, "x-success", "true")
|
|
in { status: 400..499, headers: }
|
|
verify_header(headers, "x-client-error", "true")
|
|
in { status: 500.., headers: }
|
|
verify_header(headers, "x-server-error", "true")
|
|
in { error: error }
|
|
assert error.message == "match error", "unexpected message (was '#{error.message}')"
|
|
else
|
|
raise "unexpected response: #{response}"
|
|
end
|
|
end
|
|
end
|
|
end
|