我有一个黄瓜测试,我登录系统,然后检查一些路由
Feature: Donating as a guest
@javascript
Scenario: Logged in as an Admin
Given I login as AdminUser
And I go to the root page
And I click button "$20"
And I click button "Donate"
And I click link "Donate as Guest >"
Then I am redirected to "sign_in_or_sign_up" with flash message stating "You're logged in as an Admin"
这是我登录的步骤(注意黄瓜说这会通过):
Given(/^I login as AdminUser$/) do
admin = Fabricate(:admin_user)
Fabricate(:fund)
visit '/admin/admin_users/sign_in'
fill_in 'Email', :with => admin.email
fill_in 'Password', :with => admin.password
click_button 'Sign in'
end
在最后一步的第二步,我点击链接“捐赠为来宾>”,我的资金管理员会检查一下当前用户的登录状态。
if current_user.class == AdminUser
每次点击这里,current_user都是零。我很难过为什么会这样。我甚至尝试过以编程方式登录,但没有去。我错过了某种接线吗?
修改
以下是我的相关路线:
devise_for :admin_users
devise_for :users, :controllers => {:omniauth_callbacks => "user/omniauth_callbacks", :sessions => 'user/sessions', :passwords => 'user/passwords', :confirmations => 'user/confirmations'}
devise_scope :user do
get '/user/auth/:provider' => 'user/omniauth_callbacks#passthru'
get "/user/sign_in" => "devise/sessions#new", :as => :new_user_session
post "/user/sign_in" => "user/sessions#create", :as => :user_session
delete "/user/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session
post "/user/sign_up" => "user/registrations#create", :as => :user_registration
get "/user/sign_in_or_sign_up" => "user/sessions#sign_in_or_sign_up"
post "/user/sign_up_via_dual_login" => "user/registrations#create_via_dual_login"
end
AdminUser model:
class AdminUser < ActiveRecord::Base
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :timeoutable
attr_accessible(
:email,
:password,
:password_confirmation,
:remember_me,
:organization_id,
:organization_role_id,
:super_admin,
:first_name,
:last_name,
:receive_transaction_notifications,
:receive_weekly_transaction_summary
)
belongs_to :organization
has_many :roles, :foreign_key => :api_user_id
belongs_to :organization_role, :class_name => "UserRole", :foreign_key => "organization_role_id"
has_many :permissions
has_many :admin_users_connections
has_many :people, through: :admin_users_connections
has_and_belongs_to_many :todos
has_many :notes, foreign_key: :added_by_id
has_one :profile
scope :admins, where( :super_admin => false, active: true)
scope :super, where(super_admin: true)
scope :receive_weekly_transaction_summaries, where(receive_weekly_transaction_summary: true)
def type
super_admin? && 'SUPER' || 'ADMIN'
end
def super?
super_admin == true
end
end
答案 0 :(得分:0)
admin.password
是否返回实际密码?还是加密版?
此外,由于您以管理员用户身份登录,因此current_user
实际上是current_admin_user
。 Devise将根据您的Devise映射创建函数,它并不总是current_user
。
对于名称空间,对于前
也是如此namespace :api do
devise_for :users
end
将使辅助方法为current_api_user
。