Add specs for User#is_admin?
This commit is contained in:
parent
d8fee4bae2
commit
3030d6f0f3
1
Gemfile
1
Gemfile
@ -50,6 +50,7 @@ end
|
|||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'rspec-rails'
|
gem 'rspec-rails'
|
||||||
|
gem 'factory_bot_rails'
|
||||||
gem 'capybara'
|
gem 'capybara'
|
||||||
gem 'database_cleaner'
|
gem 'database_cleaner'
|
||||||
end
|
end
|
||||||
|
@ -90,6 +90,11 @@ GEM
|
|||||||
dotenv (= 2.7.2)
|
dotenv (= 2.7.2)
|
||||||
railties (>= 3.2, < 6.1)
|
railties (>= 3.2, < 6.1)
|
||||||
erubi (1.9.0)
|
erubi (1.9.0)
|
||||||
|
factory_bot (6.1.0)
|
||||||
|
activesupport (>= 5.0.0)
|
||||||
|
factory_bot_rails (6.1.0)
|
||||||
|
factory_bot (~> 6.1.0)
|
||||||
|
railties (>= 5.0.0)
|
||||||
ffi (1.13.1)
|
ffi (1.13.1)
|
||||||
globalid (0.4.2)
|
globalid (0.4.2)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
@ -244,6 +249,7 @@ DEPENDENCIES
|
|||||||
devise
|
devise
|
||||||
devise_ldap_authenticatable
|
devise_ldap_authenticatable
|
||||||
dotenv-rails
|
dotenv-rails
|
||||||
|
factory_bot_rails
|
||||||
jbuilder (~> 2.7)
|
jbuilder (~> 2.7)
|
||||||
letter_opener
|
letter_opener
|
||||||
letter_opener_web
|
letter_opener_web
|
||||||
|
8
spec/factories/devise.rb
Normal file
8
spec/factories/devise.rb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
FactoryBot.define do
|
||||||
|
factory :user do
|
||||||
|
id { 1 }
|
||||||
|
cn { "jimmy" }
|
||||||
|
email { "jimmy@example.com" }
|
||||||
|
password { "dis-muh-password" }
|
||||||
|
end
|
||||||
|
end
|
@ -1,5 +1,23 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe User, type: :model do
|
RSpec.describe User, type: :model do
|
||||||
pending "add some examples to (or delete) #{__FILE__}"
|
let(:user) { create :user }
|
||||||
|
|
||||||
|
describe "#is_admin?" do
|
||||||
|
it "returns true when admin flag is set in LDAP" do
|
||||||
|
expect(Devise::LDAP::Adapter).to receive(:get_ldap_param)
|
||||||
|
.with(user.cn, :admin)
|
||||||
|
.and_return("true")
|
||||||
|
|
||||||
|
expect(user.is_admin?).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns false when admin flag is not set in LDAP" do
|
||||||
|
expect(Devise::LDAP::Adapter).to receive(:get_ldap_param)
|
||||||
|
.with(user.cn, :admin)
|
||||||
|
.and_return(nil)
|
||||||
|
|
||||||
|
expect(user.is_admin?).to be false
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,6 +7,8 @@ abort("The Rails environment is running in production mode!") if Rails.env.produ
|
|||||||
require 'rspec/rails'
|
require 'rspec/rails'
|
||||||
# Add additional requires below this line. Rails is not loaded until this point!
|
# Add additional requires below this line. Rails is not loaded until this point!
|
||||||
require 'capybara'
|
require 'capybara'
|
||||||
|
require 'devise'
|
||||||
|
require 'support/controller_macros'
|
||||||
require 'support/database_cleaner'
|
require 'support/database_cleaner'
|
||||||
|
|
||||||
# Requires supporting ruby files with custom matchers and macros, etc, in
|
# Requires supporting ruby files with custom matchers and macros, etc, in
|
||||||
@ -63,4 +65,8 @@ RSpec.configure do |config|
|
|||||||
config.filter_rails_from_backtrace!
|
config.filter_rails_from_backtrace!
|
||||||
# arbitrary gems may also be filtered via:
|
# arbitrary gems may also be filtered via:
|
||||||
# config.filter_gems_from_backtrace("gem name")
|
# config.filter_gems_from_backtrace("gem name")
|
||||||
|
|
||||||
|
config.include Devise::Test::ControllerHelpers, :type => :controller
|
||||||
|
config.include FactoryBot::Syntax::Methods
|
||||||
|
config.extend ControllerMacros, :type => :controller
|
||||||
end
|
end
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
RSpec.describe "Dashboards", type: :request do
|
|
||||||
|
|
||||||
describe "GET /index" do
|
|
||||||
it "returns http success" do
|
|
||||||
get "/dashboard/index"
|
|
||||||
expect(response).to have_http_status(:success)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
19
spec/support/controller_macros.rb
Normal file
19
spec/support/controller_macros.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
module ControllerMacros
|
||||||
|
def login_user
|
||||||
|
# Before each test, create and login the user
|
||||||
|
before(:each) do
|
||||||
|
@request.env["devise.mapping"] = Devise.mappings[:user]
|
||||||
|
user = FactoryBot.create(:user)
|
||||||
|
# user.confirm! # Or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
|
||||||
|
sign_in user
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Not used in this tutorial, but left to show an example of different user types
|
||||||
|
# def login_admin
|
||||||
|
# before(:each) do
|
||||||
|
# @request.env["devise.mapping"] = Devise.mappings[:admin]
|
||||||
|
# sign_in FactoryBot.create(:admin) # Using factory bot as an example
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
end
|
@ -1,5 +0,0 @@
|
|||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
RSpec.describe "dashboard/index.html.erb", type: :view do
|
|
||||||
pending "add some examples to (or delete) #{__FILE__}"
|
|
||||||
end
|
|
@ -1,5 +0,0 @@
|
|||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
RSpec.describe "dashboard/index.html.erb", type: :view do
|
|
||||||
pending "add some examples to (or delete) #{__FILE__}"
|
|
||||||
end
|
|
@ -1,5 +0,0 @@
|
|||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
RSpec.describe "settings/index.html.erb", type: :view do
|
|
||||||
pending "add some examples to (or delete) #{__FILE__}"
|
|
||||||
end
|
|
Loading…
x
Reference in New Issue
Block a user