mirror of
https://github.com/we-promise/sure.git
synced 2026-05-25 13:34:58 +00:00
Add super_admin debug event log (#1816)
* Add super-admin debug event log * Address debug log review feedback * Whitelist debug filter params * Make debug log retention configurable
This commit is contained in:
@@ -81,6 +81,32 @@ class Security::Price::ImporterTest < ActiveSupport::TestCase
|
||||
).import_provider_prices
|
||||
end
|
||||
|
||||
test "logs provider fetch failures to debug log" do
|
||||
Security::Price.delete_all
|
||||
|
||||
error = Provider::Error.new("Rate limit exceeded")
|
||||
|
||||
@provider.stubs(:fetch_security_prices).returns(provider_error_response(error))
|
||||
|
||||
assert_difference "DebugLogEntry.count", 1 do
|
||||
Security::Price::Importer.new(
|
||||
security: @security,
|
||||
security_provider: @provider,
|
||||
start_date: 2.days.ago.to_date,
|
||||
end_date: Date.current
|
||||
).import_provider_prices
|
||||
end
|
||||
|
||||
entry = DebugLogEntry.order(:created_at).last
|
||||
assert_equal "security_price_fetch", entry.category
|
||||
assert_equal "warn", entry.level
|
||||
assert_equal "Could not fetch prices for ticker", entry.message
|
||||
assert_equal "security/price/importer", entry.source.underscore
|
||||
assert_equal @security.id, entry.metadata["security_id"]
|
||||
assert_equal @security.ticker, entry.metadata["ticker"]
|
||||
assert_equal "Rate limit exceeded", entry.metadata["provider_error"]
|
||||
end
|
||||
|
||||
test "writes post-listing prices when holding predates provider history" do
|
||||
# Regression: a 2018-06-15 trade for a pair the provider only has from
|
||||
# 2020-01-03 onwards (e.g. BTCEUR on Binance) used to hit the
|
||||
|
||||
@@ -153,6 +153,30 @@ class Security::ProvidedTest < ActiveSupport::TestCase
|
||||
assert_equal fallback_provider, @security.price_data_provider
|
||||
end
|
||||
|
||||
test "import_provider_details logs provider metadata failures to debug log" do
|
||||
provider = mock("provider")
|
||||
provider.stubs(:class).returns(Provider::TwelveData)
|
||||
provider.stubs(:fetch_security_info).returns(
|
||||
provider_error_response(Provider::Error.new("metadata unavailable"))
|
||||
)
|
||||
|
||||
@security.stubs(:price_data_provider).returns(provider)
|
||||
|
||||
assert_difference "DebugLogEntry.count", 1 do
|
||||
@security.import_provider_details
|
||||
end
|
||||
|
||||
entry = DebugLogEntry.order(:created_at).last
|
||||
assert_equal "security_metadata_fetch", entry.category
|
||||
assert_equal "warn", entry.level
|
||||
assert_equal "Failed to get security info", entry.message
|
||||
assert_equal "security", entry.source.underscore
|
||||
assert_equal @security.id, entry.metadata["security_id"]
|
||||
assert_equal @security.ticker, entry.metadata["ticker"]
|
||||
assert_equal "metadata unavailable", entry.metadata["provider_error"]
|
||||
assert_equal "twelve_data", entry.provider_key
|
||||
end
|
||||
|
||||
# --- provider_status ---
|
||||
|
||||
test "provider_status returns provider_unavailable when assigned provider disabled" do
|
||||
|
||||
Reference in New Issue
Block a user