detailed_log_subscriber_test.rb 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. require 'test_helper'
  2. require "active_support/log_subscriber/test_helper"
  3. require 'json'
  4. class LogSubscriberTest < Test::Unit::TestCase
  5. include ActiveSupport::LogSubscriber::TestHelper
  6. attr_reader :request_headers
  7. def setup
  8. super
  9. @page = { :page => { :id => 1, :title => 'Shopify API' } }.to_json
  10. @ua_header = "\"User-Agent\"=>\"ShopifyAPI/#{ShopifyAPI::VERSION} ActiveResource/#{ActiveResource::VERSION::STRING} Ruby/#{RUBY_VERSION}\""
  11. @request_headers = "Headers: {\"Accept\"=>\"application/json\", " \
  12. "#{@ua_header}, \"X-Shopify-Access-Token\"=>\"access_token\"}"
  13. ShopifyAPI::Base.clear_session
  14. session = ShopifyAPI::Session.new("https://this-is-my-test-shop.myshopify.com", "access_token", :no_version)
  15. ShopifyAPI::Base.activate_session(session)
  16. ActiveResource::LogSubscriber.attach_to :active_resource
  17. ActiveResource::DetailedLogSubscriber.attach_to :active_resource_detailed
  18. end
  19. def set_logger(logger)
  20. ActiveResource::Base.logger = logger
  21. end
  22. test "logging on #find" do
  23. fake "pages/1", :method => :get, :body => @page
  24. ShopifyAPI::Page.find(1)
  25. assert_equal(4, @logger.logged(:info).size)
  26. assert_equal("GET https://this-is-my-test-shop.myshopify.com:443/admin/pages/1.json", @logger.logged(:info)[0])
  27. assert_match(/\-\-\> 200/, @logger.logged(:info)[1])
  28. assert_equal(request_headers, @logger.logged(:info)[2])
  29. assert_match(
  30. %r{(Response:\n\{\"page\"\:\{\"id\"\:1,\"title\"\:\"Shopify API\"\}\})|
  31. (Response:\n\{\"page\"\:\{\"title\"\:\"Shopify API\",\"id\"\:1\}\})},
  32. @logger.logged(:info)[3]
  33. )
  34. end
  35. test "logging on #find with an error" do
  36. fake "pages/2", :method => :get, :body => nil, :status => 404
  37. assert_raises ActiveResource::ResourceNotFound do
  38. ShopifyAPI::Page.find(2)
  39. end
  40. if ar_version_before?('5.1.0')
  41. assert_equal(4, @logger.logged(:info).size)
  42. assert_equal("GET https://this-is-my-test-shop.myshopify.com:443/admin/pages/2.json", @logger.logged(:info)[0])
  43. assert_match(/\-\-\> 404/, @logger.logged(:info)[1])
  44. assert_equal(request_headers, @logger.logged(:info)[2])
  45. assert_equal("Response:", @logger.logged(:info)[3])
  46. else
  47. assert_equal(2, @logger.logged(:error).size)
  48. assert_equal("GET https://this-is-my-test-shop.myshopify.com:443/admin/pages/2.json", @logger.logged(:error)[0])
  49. assert_match(/\-\-\> 404/, @logger.logged(:error)[1])
  50. assert_equal(2, @logger.logged(:info).size)
  51. assert_equal(request_headers, @logger.logged(:info)[0])
  52. assert_equal("Response:", @logger.logged(:info)[1])
  53. end
  54. end
  55. test "warns when the server responds with a x-shopify-api-deprecated-reason header" do
  56. fake(
  57. "pages/1",
  58. method: :get,
  59. body: @page,
  60. x_shopify_api_deprecated_reason: 'https://help.shopify.com/en/api/getting-started/api-deprecations'
  61. )
  62. ShopifyAPI::Page.find(1)
  63. assert_equal 1, @logger.logged(:warn).size
  64. assert_match(%r{\[DEPRECATED\] ShopifyAPI made a call to GET \/admin\/pages\/1.json}, @logger.logged(:warn).first)
  65. assert_match(
  66. %r{See https:\/\/help.shopify.com\/en\/api\/getting-started\/api-deprecations for more details.},
  67. @logger.logged(:warn).first
  68. )
  69. end
  70. end