Learn Enough Rails - Пользователь без прав администратора не может войти через log_in_as - PullRequest
1 голос
/ 14 января 2020

Я следую учебному пособию Майкла Хертла «Learn Enough Rails», и случайно заметил, что метод log_in_as не работает для пользователей, которые не являются администраторами. Первоначально я входил в систему @admin_user, чтобы протестировать метод, и он работал нормально, но позже начался сбой другого теста. Я проследил его до метода log_in_as, не выполняющего вход в систему для пользователей без прав администратора (а именно, @other_user).

22:52:30 - INFO - Running: test/controllers/users_controller_test.rb
Running via Spring preloader in process 634866
Started with run options --seed 27389

 FAIL["test_log_in_as_method_works", #<Minitest::Reporters::Suite:0x000055ce9c593998 @name="UsersControllerTest">, 0.6345567099997425]
 test_log_in_as_method_works#UsersControllerTest (0.63s)
        Expected false to be truthy.
        test/controllers/users_controller_test.rb:45:in `block in <class:UsersControllerTest>'

users_controller_test.rb (соответствующая часть):

  require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest


  def setup
    @admin_user = users(:Danbug)
    @other_user = users(:Pepe)
    @unactivated_user = users(:Kaidabug)
  end

  test "log_in_as method works" do
    log_in_as(@other_user)                  # "log_in_as(@admin_user)' works as expected
    assert is_logged_in?
  end

test_helper (соответствующая часть):

  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  fixtures :all
  include ApplicationHelper


  # Returns true if a user is logged in
  def is_logged_in?
    !session[:user_id].nil?
  end

  # Log in as a particular user (controller test)
  def log_in_as(user)
    session[:user_id] = user.id
  end

users.yml (у меня есть младшая сестра, которой весело составлять поддельные имена для моих тестов):

Danbug:
  name: Danbug Buggaroo
  email: danbuggie@meowmail.com
  password_digest: <%= User.digest('password') %>
  admin: true
  activated: true
  activated_at: <%= Time.zone.now %>

Pepe:
  name: Pepe Pepperton
  email: Pepe@meowmail.com
  password_digest: <%= User.digest('password') %>
  admin: false
  activated: true
  activated_at: <%= Time.zone.now %>


Kaidabug:
  name: Kaidabug Buggaroo
  email: Kaidabuggie@meowmail.com
  password_digest: <%= User.digest('password') %>
  activated: false
  activated_at: <%= Time.zone.now %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...