Тестирование ssh-соединения - PullRequest
3 голосов
/ 08 октября 2010

важная часть моего проекта - войти на удаленный сервер с помощью ssh и сделать что-то с файлами на нем:

Net::SSH.start(@host, @username, :password => @password) do |ssh|  
  ssh.exec!(rename_files_on_remote_server) 
end

Как это проверить? Я думаю, что я могу иметь локальный сервер SSH и проверить имена файлов на нем (возможно, это может быть в моем каталоге test / spec). Или, может быть, кто-то может указать мне лучшее решение?

Ответы [ 2 ]

6 голосов
/ 08 октября 2010

Я думаю, достаточно проверить, что вы отправляете правильные команды на сервер ssh. Ваше приложение, по-видимому, не реализует сервер, поэтому вы должны верить, что сервер правильно работает и протестирован.

Если вы внедрите сервер, вам нужно будет это протестировать, но что касается работы с SSH, я бы сделал несколько насмешек, подобных этому (синтаксис RSpec 2):

describe "SSH Access" do
  let (:ssh_connection) { mock("SSH Connection") }
  before (:each) do
    Net::SSH.stub(:start) { ssh_connection }
  end
  it "should send rename commands to the connection" do
    ssh_connection.should_receive(:exec!).ordered.with("expected command")
    ssh_connection.should_receive(:exec!).ordered.with("next expected command")
    SSHAccessClass.rename_files!
  end
end
1 голос
/ 15 января 2011

Предлагаемое вами решение аналогично тому, как я делал это раньше:

Войдите на локальный компьютер.Для удобства вы можете использовать 'localhost' или '127.0.0.1', но для лучшей имитации сетевой активности вы можете использовать полное имя хоста.В Mac OS и Linux вы можете легко получить хост, используя:

`hostname`

или

require 'socket'
hostname = Socket.gethostname

, который должен быть универсальным.

Оттуда создайте или коснитесьфайл на локальном компьютере после входа в систему, чтобы вы могли проверить изменения с помощью тестового кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...