diff options
author | Pete Higgins <pete@peterhiggins.org> | 2020-12-18 13:13:36 -0800 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2020-12-30 11:42:58 -0800 |
commit | fe478e21ab62de19804c43d04b337c9443779e79 (patch) | |
tree | d3ea10884d0c4773d29af499d93f269b750dcaad | |
parent | 7654dd924f01abc9429717cb42fdfab96b0939d9 (diff) | |
download | chef-fe478e21ab62de19804c43d04b337c9443779e79.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.gz | bin | 0 -> 86 bytes | |||
-rw-r--r-- | spec/data/rubygems.org/nonexistent_gem | bin | 0 -> 4 bytes | |||
-rw-r--r-- | spec/data/rubygems.org/sexp_processor | bin | 0 -> 2737 bytes | |||
-rw-r--r-- | spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz | bin | 0 -> 519 bytes | |||
-rw-r--r-- | spec/unit/provider/package/rubygems_spec.rb | 46 |
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 Binary files differnew file mode 100644 index 0000000000..ab6a175f32 --- /dev/null +++ b/spec/data/rubygems.org/latest_specs.4.8.gz diff --git a/spec/data/rubygems.org/nonexistent_gem b/spec/data/rubygems.org/nonexistent_gem Binary files differnew file mode 100644 index 0000000000..0ba94359df --- /dev/null +++ b/spec/data/rubygems.org/nonexistent_gem diff --git a/spec/data/rubygems.org/sexp_processor b/spec/data/rubygems.org/sexp_processor Binary files differnew file mode 100644 index 0000000000..37c6e97769 --- /dev/null +++ b/spec/data/rubygems.org/sexp_processor 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 Binary files differnew file mode 100644 index 0000000000..38840f2682 --- /dev/null +++ b/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz diff --git a/spec/unit/provider/package/rubygems_spec.rb b/spec/unit/provider/package/rubygems_spec.rb index 6f31c231ce..5c947cf275 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 @@ -113,28 +115,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 @@ -144,8 +173,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 |