Rails-тестирование - как симулировать логин - PullRequest
2 голосов
/ 17 января 2011

Я новичок в написании тестов в среде Rails. Я пытаюсь написать тесты для уже написанного кода. Я пытаюсь написать простой тестовый логин, подобный показанному ниже.

  test "login with invalid credentials" do
    post :login, :coach => {:user_name => 'foo', :password =>'bar'}
    assert_equals flash[:error] , "Authentication failed"
  end

Когда я пытаюсь запустить этот тест, я получаю сообщение об ошибке аутентификации. Но вместо этого я получаю ошибку.

1) Error:
test_login_with_invalid_credentials(CPControllerTest):
RS::LDAPAuthentication::ConnectionError: Net::LDAP::LdapError: Server 127.0.0.1 refused connection on port 1389.

Это метод входа в Application Controller

  def login
    self.page_title = 'Sign in'

    if logged_in? # already signed in
      session[:return_to] = nil
      redirect_to_appropriate_url
    elsif params[:coach]
      user_name, password = params[:coach][:user_name], params[:coach][:password]
      if self.current_user = User.authenticate(user_name, password) #PLACE WHERE EXCEPTION IS RAISED
        self.notice = "Signed in successfully"
        redirect_to_appropriate_url
      else
        flash[:error] = "Authentication failed"
      end
    end
    render :template => '/coach_portal/login' unless performed?
  end

Простая причина в том, что метод входа пытается установить связь с внешним сервером LDAP, и мой тест не может подключиться к нему. Что я должен делать в этом сценарии. Должен ли я изменить свой код или имитировать соединение LDAP. Даже если бы я имитировал один, как бы я это сделал?

Указатели / помощь / ссылки очень ценятся !!

1 Ответ

6 голосов
/ 17 января 2011

Чтобы изолировать поведение вашего приложения, я рекомендую отключить метод User # authenticate. Таким образом, вы только тестируете, как ваше приложение ведет себя, когда LDAP успешно, не удается или даже вызывает исключение.

test "login with invalid credentials" do
  User.stubs(:authenticate).returns false
  post :login, :coach => {:user_name => 'foo', :password =>'bar'}
  assert_equals flash[:error] , "Authentication failed"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...