do not use thread variables in mock response test plugin

This commit is contained in:
HoneyryderChuck 2024-07-19 12:01:48 +01:00
parent 7278647688
commit 047dc30487
3 changed files with 16 additions and 11 deletions

View File

@ -99,7 +99,7 @@ module Requests
end
def test_plugin_follow_redirects_retry_after
session = HTTPX.plugin(SessionWithMockResponse[302, "retry-after" => "2"]).plugin(:follow_redirects)
session = HTTPX.plugin(SessionWithMockResponse, mock_status: 302, mock_headers: { "retry-after" => "2" }).plugin(:follow_redirects)
before_time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second)
response = session.get(max_redirect_uri(1))

View File

@ -5,7 +5,7 @@ module Requests
module RateLimiter
def test_plugin_rate_limiter_429
rate_limiter_session = HTTPX.plugin(RequestInspector)
.plugin(SessionWithMockResponse[429])
.plugin(SessionWithMockResponse, mock_status: 429)
.plugin(:rate_limiter)
uri = build_uri("/get")
@ -17,7 +17,7 @@ module Requests
def test_plugin_rate_limiter_503
rate_limiter_session = HTTPX.plugin(RequestInspector)
.plugin(SessionWithMockResponse[503])
.plugin(SessionWithMockResponse, mock_status: 503)
.plugin(:rate_limiter)
uri = build_uri("/get")
@ -29,7 +29,7 @@ module Requests
def test_plugin_rate_limiter_retry_after_integer
rate_limiter_session = HTTPX.plugin(RequestInspector)
.plugin(SessionWithMockResponse[429, "retry-after" => "2"])
.plugin(SessionWithMockResponse, mock_status: 429, mock_headers: { "retry-after" => "2" })
.plugin(:rate_limiter)
uri = build_uri("/get")
@ -45,8 +45,9 @@ module Requests
end
def test_plugin_rate_limiter_retry_after_date
retry_after = (Time.now + 3).httpdate
rate_limiter_session = HTTPX.plugin(RequestInspector)
.plugin(SessionWithMockResponse[429, "retry-after" => (Time.now + 3).httpdate])
.plugin(SessionWithMockResponse, mock_status: 429, mock_headers: { "retry-after" => retry_after })
.plugin(:rate_limiter)
uri = build_uri("/get")

View File

@ -1,10 +1,14 @@
# frozen_string_literal: true
module SessionWithMockResponse
def self.[](status, headers = {})
Thread.current[:httpx_mock_response_status] = status
Thread.current[:httpx_mock_response_headers] = headers
self
module OptionsMethods
def option_mock_status(status)
status
end
def option_mock_headers(headers)
headers
end
end
module ResponseMethods
@ -23,8 +27,8 @@ module SessionWithMockResponse
@mock_responses_counter -= 1
unless response.is_a?(HTTPX::ErrorResponse)
response.status = Thread.current[:httpx_mock_response_status]
response.merge_headers(Thread.current[:httpx_mock_response_headers])
response.status = request.options.mock_status if request.options.mock_status
response.merge_headers(request.options.mock_headers) if request.options.mock_headers
end
super(request, response)
end