-
Notifications
You must be signed in to change notification settings - Fork 121
/
Copy pathpackager_integration_test.rb
58 lines (46 loc) · 2.29 KB
/
packager_integration_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require "test_helper"
require "importmap/packager"
class Importmap::PackagerIntegrationTest < ActiveSupport::TestCase
setup { @packager = Importmap::Packager.new(Rails.root.join("config/importmap.rb")) }
test "successful import against live service" do
assert_equal "https://ga.jspm.io/npm:[email protected]/index.js", @packager.import("[email protected]")["react"]
end
test "missing import against live service" do
assert_nil @packager.import("[email protected]")
end
test "failed request against live bad domain" do
original_endpoint = Importmap::Packager.endpoint
Importmap::Packager.endpoint = URI("https://invalid./error")
assert_raises(Importmap::Packager::HTTPError) do
@packager.import("[email protected]")
end
ensure
Importmap::Packager.endpoint = original_endpoint
end
test "successful downloads from live service" do
Dir.mktmpdir do |vendor_dir|
@packager = Importmap::Packager.new \
Rails.root.join("config/importmap.rb"),
vendor_path: Pathname.new(vendor_dir)
package_url = "https://ga.jspm.io/npm:@github/[email protected]/dist/main/webauthn-json.js"
@packager.download("@github/webauthn-json", package_url)
vendored_package_file = Pathname.new(vendor_dir).join("@github--webauthn-json.js")
assert File.exist?(vendored_package_file)
assert_equal "// @github/[email protected] downloaded from #{package_url}", File.readlines(vendored_package_file).first.strip
assert @packager.verify("@github/webauthn-json", package_url)
package_url = "https://ga.jspm.io/npm:[email protected]/index.js"
vendored_package_file = Pathname.new(vendor_dir).join("react.js")
@packager.download("react", package_url)
assert File.exist?(vendored_package_file)
assert_equal "// [email protected] downloaded from #{package_url}", File.readlines(vendored_package_file).first.strip
assert @packager.verify("react", package_url)
File.write(vendored_package_file, "// altered content")
assert_raises(Importmap::Packager::VerifyError) do
@packager.verify("react", package_url)
end
@packager.remove("react")
assert_not File.exist?(Pathname.new(vendor_dir).join("react.js"))
refute @packager.verify("react", package_url)
end
end
end