Skip to content

Commit 1e36f77

Browse files
tmeirerafaelfranca
authored andcommitted
Add an additional test, improve the error check to fix the tests
1 parent 800f0b3 commit 1e36f77

File tree

2 files changed

+50
-8
lines changed

2 files changed

+50
-8
lines changed

lib/importmap/npm.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,19 @@ def get_json(uri)
7676
request = Net::HTTP::Get.new(uri)
7777
request["Content-Type"] = "application/json"
7878

79-
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http|
80-
http.request(request)
81-
}
79+
response = begin
80+
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http|
81+
http.request(request)
82+
}
83+
rescue => error
84+
raise HTTPError, "Unexpected transport error (#{error.class}: #{error.message})"
85+
end
8286

83-
unless response.kind_of? Net::HTTPSuccess
87+
unless response.code.to_i < 300
8488
raise HTTPError, "Unexpected error response #{response.code}: #{response.body}"
8589
end
8690

8791
response.body
88-
rescue => error
89-
raise HTTPError, "Unexpected transport error (#{error.class}: #{error.message})"
9092
end
9193

9294
def find_latest_version(response)
@@ -115,9 +117,11 @@ def get_audit
115117
return {} if body.empty?
116118

117119
response = post_json(uri, body)
118-
unless response.kind_of? Net::HTTPSuccess
120+
121+
unless response.code.to_i < 300
119122
raise HTTPError, "Unexpected error response #{response.code}: #{response.body}"
120123
end
124+
121125
JSON.parse(response.body)
122126
end
123127

test/npm_test.rb

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,52 @@ class Importmap::NpmTest < ActiveSupport::TestCase
5959
end
6060
end
6161

62-
test "failed outdated packages request with mock" do
62+
test "failed outdated packages request with exception" do
6363
Net::HTTP.stub(:start, proc { raise "Unexpected Error" }) do
6464
assert_raises(Importmap::Npm::HTTPError) do
6565
@npm.outdated_packages
6666
end
6767
end
6868
end
6969

70+
test "failed outdated packages request with error response" do
71+
client = Minitest::Mock.new
72+
response = Class.new do
73+
def body
74+
{ "message" => "Service unavailable" }.to_json
75+
end
76+
77+
def code() "500" end
78+
end.new
79+
80+
client.expect(:request, nil, [Net::HTTP::Get])
81+
82+
Net::HTTP.stub(:start, response, client) do
83+
e = assert_raises(Importmap::Npm::HTTPError) do
84+
@npm.outdated_packages
85+
end
86+
87+
assert_equal "Unexpected error response 500: {\"message\":\"Service unavailable\"}", e.message
88+
end
89+
end
90+
91+
test "failed vulnerable packages with mock" do
92+
response = Class.new do
93+
def body
94+
{ "message" => "Service unavailable" }.to_json
95+
end
96+
97+
def code() "500" end
98+
end.new
99+
100+
@npm.stub(:post_json, response) do
101+
e = assert_raises(Importmap::Npm::HTTPError) do
102+
@npm.vulnerable_packages
103+
end
104+
assert_equal "Unexpected error response 500: {\"message\":\"Service unavailable\"}", e.message
105+
end
106+
end
107+
70108
test "successful vulnerable packages with mock" do
71109
response = Class.new do
72110
def body

0 commit comments

Comments
 (0)