summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Higgins <pete@peterhiggins.org>2020-12-18 13:13:36 -0800
committerPete Higgins <pete@peterhiggins.org>2020-12-28 15:18:54 -0800
commita42a13afef0855b878c0bbc793f3298c38d8284e (patch)
tree921b31b92bb37f722e65b4588ff93094a37df123
parent37d6e01d39993e43efdf12cd2a9aead8d0b71295 (diff)
downloadchef-a42a13afef0855b878c0bbc793f3298c38d8284e.tar.gz
Stub http requests in rubygems tests.
Signed-off-by: Pete Higgins <pete@peterhiggins.org> This commit includes a trimmed version of rubygems.org API output. To recreate this file: * Download the file from rubygems.org: curl "https://rubygems.org/latest_specs.4.8.gz" * Read the file, uncompress it, filter for the data you want, and reverse the process: File.write("latest_specs.4.8.gz", Gem::Util.gzip(Marshal.dump(Marshal.load(Gem::Util.gunzip(File.read("latest_specs.4.8.gz"))).select {|m| m.first == "sexp_processor" })))
-rw-r--r--spec/data/rubygems.org/latest_specs.4.8.gzbin0 -> 86 bytes
-rw-r--r--spec/data/rubygems.org/nonexistent_gembin0 -> 4 bytes
-rw-r--r--spec/data/rubygems.org/sexp_processorbin0 -> 2737 bytes
-rw-r--r--spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rzbin0 -> 519 bytes
-rw-r--r--spec/unit/provider/package/rubygems_spec.rb46
5 files changed, 39 insertions, 7 deletions
diff --git a/spec/data/rubygems.org/latest_specs.4.8.gz b/spec/data/rubygems.org/latest_specs.4.8.gz
new file mode 100644
index 0000000000..ab6a175f32
--- /dev/null
+++ b/spec/data/rubygems.org/latest_specs.4.8.gz
Binary files differ
diff --git a/spec/data/rubygems.org/nonexistent_gem b/spec/data/rubygems.org/nonexistent_gem
new file mode 100644
index 0000000000..0ba94359df
--- /dev/null
+++ b/spec/data/rubygems.org/nonexistent_gem
Binary files differ
diff --git a/spec/data/rubygems.org/sexp_processor b/spec/data/rubygems.org/sexp_processor
new file mode 100644
index 0000000000..37c6e97769
--- /dev/null
+++ b/spec/data/rubygems.org/sexp_processor
Binary files differ
diff --git a/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz b/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz
new file mode 100644
index 0000000000..38840f2682
--- /dev/null
+++ b/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz
Binary files differ
diff --git a/spec/unit/provider/package/rubygems_spec.rb b/spec/unit/provider/package/rubygems_spec.rb
index efe124d36a..58a7eccb04 100644
--- a/spec/unit/provider/package/rubygems_spec.rb
+++ b/spec/unit/provider/package/rubygems_spec.rb
@@ -50,6 +50,8 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
before do
@gem_env = Chef::Provider::Package::Rubygems::CurrentGemEnvironment.new
allow(@gem_env).to receive(:logger).and_return(logger)
+
+ WebMock.disable_net_connect!
end
it "determines the gem paths from the in memory rubygems" do
@@ -111,28 +113,55 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
end
it "finds a matching gem candidate version on rubygems 2.0.0+" do
- dep = Gem::Dependency.new("rspec", ">= 0")
+ stub_request(:head, "https://rubygems.org/api/v1/dependencies")
+
+ stub_request(:get, "https://rubygems.org/api/v1/dependencies?gems=sexp_processor")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor")))
+
+ stub_request(:get, "https://rubygems.org/quick/Marshal.4.8/sexp_processor-4.15.1.gemspec.rz")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor-4.15.1.gemspec.rz")))
+
+ dep = Gem::Dependency.new("sexp_processor", ">= 0")
expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
end
it "gives the candidate version as nil if none is found" do
- dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
+ stub_request(:head, "https://rubygems.org/api/v1/dependencies")
+
+ stub_request(:get, "https://rubygems.org/api/v1/dependencies?gems=nonexistent_gem")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "nonexistent_gem")))
+
+ dep = Gem::Dependency.new("nonexistent_gem", ">= 0")
expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
end
it "finds a matching gem from a specific gemserver when explicit sources are given (to a server that doesn't respond to api requests)" do
- dep = Gem::Dependency.new("rspec", ">= 0")
- expect(@gem_env.candidate_version_from_remote(dep, "https://rubygems.org")).to be_kind_of(Gem::Version)
+ stub_request(:head, "https://rubygems2.org/api/v1/dependencies")
+
+ stub_request(:get, "https://rubygems2.org/api/v1/dependencies?gems=sexp_processor")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor")))
+
+ stub_request(:get, "https://rubygems2.org/quick/Marshal.4.8/sexp_processor-4.15.1.gemspec.rz")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor-4.15.1.gemspec.rz")))
+
+ dep = Gem::Dependency.new("sexp_processor", ">= 0")
+ expect(@gem_env.candidate_version_from_remote(dep, "https://rubygems2.org")).to be_kind_of(Gem::Version)
end
end
context "old rubygems caching behavior" do
before do
Chef::Config[:rubygems_cache_enabled] = true
+
+ stub_request(:get, "https://rubygems.org/latest_specs.4.8.gz")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "latest_specs.4.8.gz")))
end
it "finds a matching gem candidate version on rubygems 2.0.0+" do
- dep = Gem::Dependency.new("rspec", ">= 0")
+ stub_request(:get, "https://rubygems.org/quick/Marshal.4.8/sexp_processor-4.15.1.gemspec.rz")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor-4.15.1.gemspec.rz")))
+
+ dep = Gem::Dependency.new("sexp_processor", ">= 0")
expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
end
@@ -142,8 +171,11 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
end
it "finds a matching gem from a specific gemserver when explicit sources are given" do
- dep = Gem::Dependency.new("rspec", ">= 0")
- expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
+ stub_request(:get, "https://rubygems.org/quick/Marshal.4.8/sexp_processor-4.15.1.gemspec.rz")
+ .to_return(status: 200, body: File.binread(File.join(CHEF_SPEC_DATA, "rubygems.org", "sexp_processor-4.15.1.gemspec.rz")))
+
+ dep = Gem::Dependency.new("sexp_processor", ">= 0")
+ expect(@gem_env.candidate_version_from_remote(dep, "http://rubygems2.org")).to be_kind_of(Gem::Version)
end
end