diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-05-24 00:32:39 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-06-22 13:13:46 +0300 |
commit | 1f7490a23fae82c0784b89ae73de7c8a14256da6 (patch) | |
tree | fa17c273c1e845524885a3d79a109712952ef7b0 /spec/support/matchers.rb | |
parent | 20a871cc21227ef67d9173ba9bd3b7e0d0e2e26f (diff) |
Update spec/features/security specs
Diffstat (limited to 'spec/support/matchers.rb')
-rw-r--r-- | spec/support/matchers.rb | 67 |
1 files changed, 25 insertions, 42 deletions
diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb index 35d0bae7085..e5ebc6e7ec8 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers.rb @@ -1,30 +1,43 @@ RSpec::Matchers.define :be_valid_commit do match do |actual| - actual != nil - actual.id == ValidCommit::ID - actual.message == ValidCommit::MESSAGE - actual.author_name == ValidCommit::AUTHOR_FULL_NAME + actual && + actual.id == ValidCommit::ID && + actual.message == ValidCommit::MESSAGE && + actual.author_name == ValidCommit::AUTHOR_FULL_NAME end end +def emulate_user(user) + user = case user + when :user then create(:user) + when :visitor then nil + when :admin then create(:admin) + else user + end + login_with(user) if user +end + RSpec::Matchers.define :be_allowed_for do |user| match do |url| - include UrlAccess - url_allowed?(user, url) + emulate_user(user) + visit url + status_code != 404 && current_path != new_user_session_path end end RSpec::Matchers.define :be_denied_for do |user| match do |url| - include UrlAccess - url_denied?(user, url) + emulate_user(user) + visit url + status_code == 404 || current_path == new_user_session_path end end -RSpec::Matchers.define :be_404_for do |user| +RSpec::Matchers.define :be_not_found_for do |user| match do |url| - include UrlAccess - url_404?(user, url) + emulate_user(user) + visit url + status_code == 404 end end @@ -34,7 +47,7 @@ RSpec::Matchers.define :include_module do |expected| end description do - "include the #{expected} module" + "includes the #{expected} module" end failure_message do @@ -42,36 +55,6 @@ RSpec::Matchers.define :include_module do |expected| end end -module UrlAccess - def url_allowed?(user, url) - emulate_user(user) - visit url - (status_code != 404 && current_path != new_user_session_path) - end - - def url_denied?(user, url) - emulate_user(user) - visit url - (status_code == 404 || current_path == new_user_session_path) - end - - def url_404?(user, url) - emulate_user(user) - visit url - status_code == 404 - end - - def emulate_user(user) - user = case user - when :user then create(:user) - when :visitor then nil - when :admin then create(:admin) - else user - end - login_with(user) if user - end -end - # Extend shoulda-matchers module Shoulda::Matchers::ActiveModel class ValidateLengthOfMatcher |