How do you write a spec for this method without touching the filesystem or the user’s environment?
def authkey
File.read("#{ENV['HOME']}/.ssh/id_rsa.pub")
end
Just repeat this mantra to yourself: It’s Ruby. Everything Is An Object Or A Method. Objects And Methods Are Always Mutable.
Got your answer yet? Here’s mine:
it "reads the ssh rsa key from the user's home directory" do
ENV.should_receive(:[]).with('HOME').and_return('/home/joe')
File.should_receive(:read).with('/home/joe/.ssh/id_rsa.pub').and_return('the key')
@client.authkey.should == 'the key'
end