Тест не краснеет, когда это должно быть |Учебник Майкла Хартла по Rails |10.4.1. Упражнение - PullRequest
0 голосов
/ 13 октября 2018

Фактический вопрос упражнения: «Отправляя запрос PATCH непосредственно к пути пользователя, как показано в листинге 10.56, убедитесь, что атрибут admin не редактируется через Интернет. Чтобы убедиться, что ваш тест охватывает правильную вещь, вашПервым шагом должно быть добавление администратора в список разрешенных параметров в user_params, чтобы начальный тест был красным. "

Поэтому я поместил атрибут admin в мой хэш params, который разрешает определенные атрибуты в users_controller.rb:

   def user_params
     params.require(:user).permit(:admin, :name, :email, :password,
                                  :password_confirmation) #params hash that permits specific attributes
   end

И я запустил тест в users_controller_test.rb:

  def setup
    @user = users(:michael)
    @other_user = users(:archer)
  end

  test "should not allow the admin attribute to be edited via the web" do
    log_in_as(@other_user)
    assert_not @other_user.admin?
    patch user_path(@other_user), params: {
                              user: { password:              @other_user.password,
                                      password_confirmation: @other_user.password,
                                      admin: true } } #it's true because the user is trying to send a patch request saying they are the admin now
    assert_not @other_user.reload.admin?
  end

Но мой тест по-прежнему становится зеленым, когда он должен стать красным.У кого-нибудь есть идеи, почему это может быть?Есть ли что-то еще в моем исходном коде, влияющее на этот тест?

Не перенес мои изменения в heroku из-за этой нерешенной проблемы, но если это вряд ли вызовет дальнейшие проблемы, я с удовольствием перенесу свои изменения, чтобы каждый могсм. мой исходный код.

1 Ответ

0 голосов
/ 27 ноября 2018

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

Вы пытались исправить @other_user.password, но это nil.Это неприемлемо.

То есть вы не исправили его, а ваш assert_not @other_user.reload.admin? зеленый.

Попробуйте, например, "password".

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