summaryrefslogtreecommitdiff
path: root/spec/support/matchers.rb
diff options
context:
space:
mode:
authorgitlabhq <m@gitlabhq.com>2011-10-09 00:36:38 +0300
committergitlabhq <m@gitlabhq.com>2011-10-09 00:36:38 +0300
commit9ba1224867665844b117fa037e1465bb706b3685 (patch)
tree52fbfc1cdb55df21843965479c97be0c91121a9a /spec/support/matchers.rb
parent93efff945215a4407afcaf0cba15ac601b56df0d (diff)
downloadgitlab-ce-9ba1224867665844b117fa037e1465bb706b3685.tar.gz
init commit
Diffstat (limited to 'spec/support/matchers.rb')
-rw-r--r--spec/support/matchers.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb
new file mode 100644
index 00000000000..953b535698d
--- /dev/null
+++ b/spec/support/matchers.rb
@@ -0,0 +1,46 @@
+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
+ end
+end
+
+RSpec::Matchers.define :be_allowed_for do |user|
+ match do |url|
+ include UrlAccess
+ url_allowed?(user, url)
+ end
+end
+
+RSpec::Matchers.define :be_denied_for do |user|
+ match do |url|
+ include UrlAccess
+ url_denied?(user, url)
+ end
+end
+
+module UrlAccess
+ def url_allowed?(user, url)
+ emulate_user(user)
+ visit url
+ result = (current_path == url)
+ end
+
+ def url_denied?(user, url)
+ emulate_user(user)
+ visit url
+ result = (current_path != url)
+ end
+
+ def emulate_user(user)
+ user = case user
+ when :user then Factory(:user)
+ when :visitor then nil
+ when :admin then Factory(:admin)
+ else user
+ end
+ login_with(user) if user
+ end
+end