spec/common_spec.rb in linux_admin-0.0.1 vs spec/common_spec.rb in linux_admin-0.1.0

- old
+ new

@@ -1,45 +1,96 @@ require 'spec_helper' describe LinuxAdmin::Common do + before do + class TestClass + extend LinuxAdmin::Common + end + end + + after do + Object.send(:remove_const, :TestClass) + end + + let(:params) do + { + "--user" => "bob", + "--pass" => "P@$sw0^& |<>/-+*d%", + "--db" => nil, + "--desc=" => "Some Description", + nil => ["pkg1", "some pkg"] + } + end + + subject { TestClass } + + context ".write" do + it "no file no content" do + expect { subject.write("", "") }.to raise_error(ArgumentError) + end + end + context ".run" do + context "with params" do + it "sanitizes crazy params" do + subject.should_receive(:launch).once.with("true --user bob --pass P@\\$sw0\\^\\&\\ \\|\\<\\>/-\\+\\*d\\% --db --desc=Some\\ Description pkg1 some\\ pkg") + subject.run("true", :params => params, :return_exitstatus => true) + end + + it "as empty hash" do + subject.should_receive(:launch).once.with("true") + subject.run("true", :params => {}, :return_exitstatus => true) + end + + it "as nil" do + subject.should_receive(:launch).once.with("true") + subject.run("true", :params => nil, :return_exitstatus => true) + end + + it "won't modify caller params" do + orig_params = params.dup + subject.run("true", :params => params, :return_exitstatus => true) + expect(orig_params).to eq(params) + end + end + it "command ok exit ok" do - expect(described_class.run("true")).to be_true + expect(subject.run("true")).to be_true end it "command ok exit bad" do - expect { described_class.run("false") }.to raise_error + expect { subject.run("false") }.to raise_error end it "command bad" do - expect { described_class.run("XXXXX") }.to raise_error + expect { subject.run("XXXXX") }.to raise_error end context "with :return_exitstatus => true" do it "command ok exit ok" do - expect(described_class.run("true", :return_exitstatus => true)).to eq(0) + expect(subject.run("true", :return_exitstatus => true)).to eq(0) end it "command ok exit bad" do - expect(described_class.run("false", :return_exitstatus => true)).to eq(1) + expect(subject.run("false", :return_exitstatus => true)).to eq(1) end it "command bad" do - expect(described_class.run("XXXXX", :return_exitstatus => true)).to be_nil + expect(subject.run("XXXXX", :return_exitstatus => true)).to be_nil end end context "with :return_output => true" do it "command ok exit ok" do - expect(described_class.run("echo \"Hello World\"", :return_output => true)).to eq("Hello World\n") + expect(subject.run("echo \"Hello World\"", :return_output => true)).to eq("Hello World\n") end it "command ok exit bad" do - expect { described_class.run("false", :return_output => true) }.to raise_error + expect { subject.run("false", :return_output => true) }.to raise_error end it "command bad" do - expect { described_class.run("XXXXX", :return_output => true) }.to raise_error + expect { subject.run("XXXXX", :return_output => true) }.to raise_error end end end end \ No newline at end of file