diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-05-29 18:07:11 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-08-12 11:19:37 -0300 |
commit | c937263a4c19726365479f77c2f1954229c9e9d1 (patch) | |
tree | 0873c4490e8400989ec0f357356b4d16d17c3118 | |
parent | e9be76d50623647c31dfcd0f9c9da558cda76f40 (diff) | |
download | bundler-c937263a4c19726365479f77c2f1954229c9e9d1.tar.gz |
Add specs for warning for old TLS versions
-rw-r--r-- | spec/bundler/vendored_persistent_spec.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/spec/bundler/vendored_persistent_spec.rb b/spec/bundler/vendored_persistent_spec.rb new file mode 100644 index 0000000000..d4b1807e34 --- /dev/null +++ b/spec/bundler/vendored_persistent_spec.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true +require "spec_helper" +require "bundler/vendored_persistent" + +RSpec.describe Bundler::PersistentHTTP do + describe "#warn_old_tls_version_rubygems_connection" do + let(:uri) { "https://index.rubygems.org" } + let(:connection) { instance_double(subject.http_class) } + let(:tls_version) { "TLSv1.2" } + let(:socket) { double("Socket") } + let(:socket_io) { double("SocketIO") } + + before do + allow(connection).to receive(:use_ssl?).and_return(!tls_version.nil?) + allow(socket).to receive(:io).and_return(socket_io) + connection.instance_variable_set(:@socket, socket) + + if tls_version + allow(socket_io).to receive(:ssl_version).and_return(tls_version) + end + end + + shared_examples_for "does not warn" do + it "does not warn" do + allow(Bundler.ui).to receive(:warn).never + subject.warn_old_tls_version_rubygems_connection(URI(uri), connection) + end + end + + shared_examples_for "does warn" do |expected| + it "warns" do + expect(Bundler.ui).to receive(:warn).with(expected) + subject.warn_old_tls_version_rubygems_connection(URI(uri), connection) + end + end + + context "an HTTPS uri with TLSv1.2" do + include_examples "does not warn" + end + + context "without SSL" do + let(:tls_version) { nil } + + include_examples "does not warn" + end + + context "with a different TLD" do + let(:uri) { "https://foo.bar" } + include_examples "does not warn" + + context "and an outdated TLS version" do + let(:tls_version) { "TLSv1" } + include_examples "does not warn" + end + end + + context "with a nonsense TLS version" do + let(:tls_version) { "BlahBlah2.0Blah" } + include_examples "does not warn" + end + + context "with an outdated TLS version" do + let(:tls_version) { "TLSv1" } + include_examples "does warn", + "Your Ruby version does not support TLSv1.1 or newer, which will be required to connect to https://index.rubygems.org by January 2018." + end + end +end |