Parcourir la source

warning raised for version eol

Toney Mathews il y a 5 ans
Parent
commit
f2f9d842a6

+ 17 - 0
lib/active_resource/detailed_log_subscriber.rb

@@ -3,6 +3,7 @@ module ActiveResource
     def request(event)
       log_request_response_details(event)
       warn_on_deprecated_header(event)
+      warn_on_version_eol_warning_header(event)
     end
 
     def logger
@@ -36,6 +37,22 @@ module ActiveResource
         end
       end
     end
+
+    def warn_on_version_eol_warning_header(event)
+      payload = event.payload
+
+      payload[:response].each do |header_name, header_value|
+        case header_name.downcase
+        when 'x-shopify-api-version-warning'
+          warning_message = <<-MSG
+          [Version EOL Warning] ShopifyAPI made a call to #{payload[:method].upcase} #{payload[:path]}, and this call made
+          use of an API version that is expired or will expire within 30 days. See #{header_value} for more details.
+          MSG
+
+          warn warning_message
+        end
+      end
+    end
   end
 end
 

+ 22 - 0
test/detailed_log_subscriber_test.rb

@@ -114,4 +114,26 @@ class LogSubscriberTest < Test::Unit::TestCase
       @logger.logged(:warn).first
     )
   end
+
+  test "warns when the server responds with a x-shopify-api-version-warning" do
+    fake(
+      "pages/1",
+      method: :get,
+      body: @page,
+      x_shopify_api_version_warning: 'https://shopify.dev/concepts/about-apis/versioning'
+    )
+
+    ShopifyAPI::Page.find(1)
+
+    assert_equal 1, @logger.logged(:warn).size
+
+    assert_match(
+      %r{\[Version EOL Warning\] ShopifyAPI made a call to GET /admin/api/2019-01/pages/1.json},
+      @logger.logged(:warn).first
+    )
+    assert_match(
+      %r{See https:\/\/shopify.dev\/concepts\/about-apis\/versioning for more details.},
+      @logger.logged(:warn).first
+    )
+  end
 end