diff --git a/Gemfile.lock b/Gemfile.lock index eb498ea..2ebdf70 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,17 +10,33 @@ PATH GEM remote: https://rubygems.org/ specs: + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coderay (1.1.2) + crack (0.4.3) + safe_yaml (~> 1.0.0) faraday (0.15.2) multipart-post (>= 1.2, < 3) faraday_middleware (0.12.2) faraday (>= 0.7.4, < 1.0) + hashdiff (0.3.7) + method_source (0.9.0) mini_portile2 (2.3.0) minitest (5.11.3) multipart-post (2.0.0) nitlink (1.1.0) nokogiri (1.8.3) mini_portile2 (~> 2.3.0) + pry (0.11.3) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + public_suffix (3.0.2) rake (10.5.0) + safe_yaml (1.0.4) + webmock (3.4.2) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff PLATFORMS ruby @@ -29,7 +45,9 @@ DEPENDENCIES bundler (~> 1.16) manifique! minitest (~> 5.0) + pry (~> 0.11.3) rake (~> 10.0) + webmock (~> 3.4.2) BUNDLED WITH 1.16.2 diff --git a/lib/manifique/web_client.rb b/lib/manifique/web_client.rb index 08e60cc..178ffc3 100644 --- a/lib/manifique/web_client.rb +++ b/lib/manifique/web_client.rb @@ -3,6 +3,8 @@ require 'faraday_middleware' require "nokogiri" require 'nitlink/response' +require 'pry' + module Manifique class WebClient def initialize(options) @@ -11,12 +13,21 @@ module Manifique end def fetch_web_manifest + do_get_request @url + # binding.pry + end + + private + + def do_get_request(url) conn = Faraday.new do |b| b.use FaradayMiddleware::FollowRedirects b.adapter :net_http end - res = conn.get @url - raise res.inspect + res = conn.get url + if res.status > 400 + raise "Could not fetch #{url} successfully (#{res.status})" + end end end end diff --git a/manifique.gemspec b/manifique.gemspec index 91add59..fa10770 100644 --- a/manifique.gemspec +++ b/manifique.gemspec @@ -25,6 +25,8 @@ Gem::Specification.new do |spec| spec.add_development_dependency "bundler", "~> 1.16" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "minitest", "~> 5.0" + spec.add_development_dependency "webmock", "~> 3.4.2" + spec.add_development_dependency "pry", "~> 0.11.3" spec.add_runtime_dependency "faraday", "~> 0.15.2" spec.add_runtime_dependency "faraday_middleware", "~> 0.12.2" diff --git a/test/manifique_test.rb b/test/manifique_test.rb index 5377f6f..ada2d34 100644 --- a/test/manifique_test.rb +++ b/test/manifique_test.rb @@ -1,6 +1,7 @@ require "test_helper" class ManifiqueTest < Minitest::Test + def test_that_it_has_a_version_number refute_nil ::Manifique::VERSION end @@ -13,8 +14,19 @@ class ManifiqueTest < Minitest::Test assert_raises(RuntimeError) { Manifique::Agent.new(url: "htp:/foo.com") } end - def test_fetch_metadata - agent = Manifique::Agent.new(url: 'https://example.com') - assert_equal agent.fetch_metadata, 'https://example.com' + def test_fetch_metadata_request_404 + stub_request(:get, "http://example.com/404"). + to_return(body: "", status: 404, headers: {}) + + agent = Manifique::Agent.new(url: 'http://example.com/404') + assert_raises(RuntimeError) { agent.fetch_metadata } + end + + def test_fetch_metadata_request_500 + stub_request(:get, "http://example.com/500"). + to_return(body: "", status: 500, headers: {}) + + agent = Manifique::Agent.new(url: 'http://example.com/500') + assert_raises(RuntimeError) { agent.fetch_metadata } end end diff --git a/test/test_helper.rb b/test/test_helper.rb index d7bba43..120bce2 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -2,3 +2,4 @@ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) require "manifique" require "minitest/autorun" +require "webmock/minitest"