Атрибуты аутентификации и пароля и подтверждения пароля - недоступны?

Я пытаюсь проверить, что успешно создает нового пользователя после входа в систему (используя authlogic). Я добавил пару новых полей для пользователя, поэтому просто хочу убедиться, что пользователь правильно сохранен.

Проблема заключается в том, что, несмотря на создание действующей фабрики пользователя, всякий раз, когда я пытаюсь получить ее атрибуты для публикации в методе создания, пароль и подтверждение пароля пропускаются. Я предполагаю, что это метод безопасности, который authlogic выполняет в фоновом режиме. Это приводит к сбою валидации и сбою теста.

Мне интересно, как мне решить эту проблему? Я мог бы просто ввести атрибуты вручную, но это не кажется слишком сухим.

 context "on POST to :create" do
            context "on posting a valid user" do
                setup do
                    @user = Factory.build(:user)
                    post :create, :user => @user.attributes
                end
                should "be valid" do
                    assert @user.valid?
                end
                should_redirect_to("users sentences index page") { sentences_path() }
                should "add user to the db" do
                    assert User.find_by_username(@user.username)
                end
            end


##User factory
Factory.define :user do |f|
  f.username {Factory.next(:username) }
  f.email { Factory.next(:email)}
  f.password_confirmation  "password"
  f.password "password"
  f.native_language {|nl| nl.association(:language)}
  f.second_language {|nl| nl.association(:language)}
end

person robodisco    schedule 10.04.2010    source источник


Ответы (1)


Вы определенно не можете прочитать пароль и password_confirmation из объекта User. Вам нужно будет объединить :password и :password_confirmation с хешем @user.attributes. Если вы храните этот хеш где-нибудь вместе с остальными вашими фабричными определениями, он не супер сухой, но лучше, чем жестко закодировать его в вашем тесте.

person danivovich    schedule 10.04.2010
comment
спасибо, что подтвердили это для меня. плохо просто объединить их с хешем атрибутов. благодаря. - person robodisco; 11.04.2010