diff options
author | fatkodima <fatkodima123@gmail.com> | 2019-11-01 23:06:10 +0200 |
---|---|---|
committer | fatkodima <fatkodima123@gmail.com> | 2019-11-04 19:43:05 +0200 |
commit | 65cfebb041c454c246aaf32a177b0243915a9998 (patch) | |
tree | 3f989a968d1d79d5c24f1be0d2709afab872f75c /spec/bundler | |
parent | 674966e21cc7257dd52797ef56ee9628c3ce1bc6 (diff) | |
download | bundler-65cfebb041c454c246aaf32a177b0243915a9998.tar.gz |
Don't use insecure temporary directory as home directory
Diffstat (limited to 'spec/bundler')
-rw-r--r-- | spec/bundler/bundler_spec.rb | 38 | ||||
-rw-r--r-- | spec/bundler/settings_spec.rb | 2 |
2 files changed, 10 insertions, 30 deletions
diff --git a/spec/bundler/bundler_spec.rb b/spec/bundler/bundler_spec.rb index 74cf7ae05d..247838600b 100644 --- a/spec/bundler/bundler_spec.rb +++ b/spec/bundler/bundler_spec.rb @@ -232,16 +232,13 @@ EOF path = "/home/oggy" allow(Bundler.rubygems).to receive(:user_home).and_return(path) allow(File).to receive(:directory?).with(path).and_return false - allow(Etc).to receive(:getlogin).and_return("USER") - allow(Dir).to receive(:tmpdir).and_return("/TMP") - allow(FileTest).to receive(:exist?).with("/TMP/bundler/home").and_return(true) - expect(FileUtils).to receive(:mkpath).with("/TMP/bundler/home/USER") + allow(Bundler).to receive(:tmp).and_return(Pathname.new("/tmp/trulyrandom")) message = <<EOF `/home/oggy` is not a directory. -Bundler will use `/TMP/bundler/home/USER' as your home directory temporarily. +Bundler will use `/tmp/trulyrandom' as your home directory temporarily. EOF expect(Bundler.ui).to receive(:warn).with(message) - expect(Bundler.user_home).to eq(Pathname("/TMP/bundler/home/USER")) + expect(Bundler.user_home).to eq(Pathname("/tmp/trulyrandom")) end end @@ -254,16 +251,13 @@ EOF allow(File).to receive(:directory?).with(path).and_return true allow(File).to receive(:writable?).with(path).and_return false allow(File).to receive(:directory?).with(dotbundle).and_return false - allow(Etc).to receive(:getlogin).and_return("USER") - allow(Dir).to receive(:tmpdir).and_return("/TMP") - allow(FileTest).to receive(:exist?).with("/TMP/bundler/home").and_return(true) - expect(FileUtils).to receive(:mkpath).with("/TMP/bundler/home/USER") + allow(Bundler).to receive(:tmp).and_return(Pathname.new("/tmp/trulyrandom")) message = <<EOF `/home/oggy` is not writable. -Bundler will use `/TMP/bundler/home/USER' as your home directory temporarily. +Bundler will use `/tmp/trulyrandom' as your home directory temporarily. EOF expect(Bundler.ui).to receive(:warn).with(message) - expect(Bundler.user_home).to eq(Pathname("/TMP/bundler/home/USER")) + expect(Bundler.user_home).to eq(Pathname("/tmp/trulyrandom")) end context ".bundle exists and have correct permissions" do @@ -282,31 +276,17 @@ EOF context "home directory is not set" do it "should issue warning and return a temporary user home" do allow(Bundler.rubygems).to receive(:user_home).and_return(nil) - allow(Etc).to receive(:getlogin).and_return("USER") - allow(Dir).to receive(:tmpdir).and_return("/TMP") - allow(FileTest).to receive(:exist?).with("/TMP/bundler/home").and_return(true) - expect(FileUtils).to receive(:mkpath).with("/TMP/bundler/home/USER") + allow(Bundler).to receive(:tmp).and_return(Pathname.new("/tmp/trulyrandom")) message = <<EOF Your home directory is not set. -Bundler will use `/TMP/bundler/home/USER' as your home directory temporarily. +Bundler will use `/tmp/trulyrandom' as your home directory temporarily. EOF expect(Bundler.ui).to receive(:warn).with(message) - expect(Bundler.user_home).to eq(Pathname("/TMP/bundler/home/USER")) + expect(Bundler.user_home).to eq(Pathname("/tmp/trulyrandom")) end end end - describe "#tmp_home_path" do - it "should create temporary user home" do - allow(Dir).to receive(:tmpdir).and_return("/TMP") - allow(FileTest).to receive(:exist?).with("/TMP/bundler/home").and_return(false) - expect(FileUtils).to receive(:mkpath).once.ordered.with("/TMP/bundler/home") - expect(FileUtils).to receive(:mkpath).once.ordered.with("/TMP/bundler/home/USER") - expect(File).to receive(:chmod).with(0o777, "/TMP/bundler/home") - expect(Bundler.tmp_home_path("USER", "")).to eq(Pathname("/TMP/bundler/home/USER")) - end - end - describe "#requires_sudo?" do let!(:tmpdir) { Dir.mktmpdir } let(:bundle_path) { Pathname("#{tmpdir}/bundle") } diff --git a/spec/bundler/settings_spec.rb b/spec/bundler/settings_spec.rb index 7e1dadded7..2a285fdcf3 100644 --- a/spec/bundler/settings_spec.rb +++ b/spec/bundler/settings_spec.rb @@ -67,7 +67,7 @@ that would suck --ehhh=oh geez it looks like i might have broken bundler somehow context "when $TMPDIR is not writable" do it "does not raise" do expect(Bundler.rubygems).to receive(:user_home).twice.and_return(nil) - expect(FileUtils).to receive(:mkpath).twice.with(File.join(Dir.tmpdir, "bundler", "home")).and_raise(Errno::EROFS, "Read-only file system @ dir_s_mkdir - /tmp/bundler") + expect(Bundler).to receive(:tmp).twice.and_raise(Errno::EROFS, "Read-only file system @ dir_s_mkdir - /tmp/bundler") expect(subject.send(:global_config_file)).to be_nil end |