diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb
index 2b09771851e3288fc872d8b4a5e120cedf64b911..8f7a9606262b1827a5f5156eee2d5e36f2b34ed7 100644
--- a/spec/features/security/profile_access_spec.rb
+++ b/spec/features/security/profile_access_spec.rb
@@ -6,7 +6,7 @@
   end
 
   describe "GET /login" do
-    it { expect(new_user_session_path).not_to be_404_for :visitor }
+    it { expect(new_user_session_path).not_to be_not_found_for :visitor }
   end
 
   describe "GET /profile/keys" do
diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb
index 35d0bae70854e364d0a4302e3aee8f1f65fd7ee4..e5ebc6e7ec8983432f688e21dad4e9c6787f2600 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 @@
   end
 
   description do
-    "include the #{expected} module"
+    "includes the #{expected} module"
   end
 
   failure_message do
@@ -42,36 +55,6 @@
   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