diff --git a/crashreport_stats/tests/test_views.py b/crashreport_stats/tests/test_views.py
index c188d23..0965f75 100644
--- a/crashreport_stats/tests/test_views.py
+++ b/crashreport_stats/tests/test_views.py
@@ -31,9 +31,6 @@
     def _get_with_params(self, url, params):
         return self.fp_staff_client.get(self._url_with_params(url, params))
 
-    @unittest.skip(
-        "Fails because the view is currently not accessible for admin users."
-    )
     def test_home_view_as_admin(self):
         """Test that admin users can access the home view."""
         self._assert_get_as_admin_user_succeeds(self.home_url)
@@ -56,9 +53,6 @@
             self.home_url, expected_status=status.HTTP_302_FOUND
         )
 
-    @unittest.skip(
-        "Fails because the view is currently not accessible for admin users."
-    )
     def test_device_view_as_admin(self):
         """Test that admin users can access the device view."""
         self._assert_get_as_admin_user_succeeds(
@@ -95,9 +89,6 @@
             expected_status=status.HTTP_302_FOUND,
         )
 
-    @unittest.skip(
-        "Fails because the view is currently not accessible for admin users."
-    )
     def test_versions_view_as_admin(self):
         """Test that admin users can access the versions view."""
         self._assert_get_as_admin_user_succeeds(self.versions_url)
@@ -120,9 +111,6 @@
             self.versions_url, expected_status=status.HTTP_302_FOUND
         )
 
-    @unittest.skip(
-        "Fails because the view is currently not accessible for admin users."
-    )
     def test_versions_all_view_as_admin(self):
         """Test that admin users can access the versions all view."""
         self._assert_get_as_admin_user_succeeds(self.versions_all_url)
@@ -145,9 +133,6 @@
             self.versions_all_url, expected_status=status.HTTP_302_FOUND
         )
 
-    @unittest.skip(
-        "Fails because the view is currently not accessible for admin users."
-    )
     def test_home_view_post_as_admin_user(self):
         """Test HTTP POST method to home view as admin user."""
         response = self.admin.post(
diff --git a/crashreport_stats/tests/utils.py b/crashreport_stats/tests/utils.py
index 983a976..f1b9d92 100644
--- a/crashreport_stats/tests/utils.py
+++ b/crashreport_stats/tests/utils.py
@@ -338,7 +338,7 @@
             "somebody", "somebody@example.com", "thepassword"
         )
         cls.admin = APIClient()
-        cls.admin.force_authenticate(admin_user)
+        cls.admin.force_login(admin_user)
 
         fp_staff_group = Group(name=FP_STAFF_GROUP_NAME)
         fp_staff_group.save()
diff --git a/crashreport_stats/views.py b/crashreport_stats/views.py
index 58e3261..07691df 100644
--- a/crashreport_stats/views.py
+++ b/crashreport_stats/views.py
@@ -8,11 +8,7 @@
 from django.urls import reverse
 
 from crashreports.models import Device
-
-
-def is_fairphone_staff(user):
-    """Check if the user is part of the FairphoneSoftwareTeam group."""
-    return user.groups.filter(name="FairphoneSoftwareTeam").exists()
+from crashreports.permissions import user_is_hiccup_staff
 
 
 class DeviceUUIDForm(forms.Form):
@@ -21,7 +17,7 @@
     uuid = forms.CharField(label="Device UUID:", max_length=100)
 
 
-@user_passes_test(is_fairphone_staff)
+@user_passes_test(user_is_hiccup_staff)
 def device_stats(request):
     """Respond with statistics for a specific device."""
     template = loader.get_template("crashreport_stats/device.html")
@@ -31,21 +27,21 @@
     return HttpResponse(template.render({"uuid": uuid}, request))
 
 
-@user_passes_test(is_fairphone_staff)
+@user_passes_test(user_is_hiccup_staff)
 def versions_all_overview(request):
     """Respond with the distribution of official release versions."""
     template = loader.get_template("crashreport_stats/versions.html")
     return HttpResponse(template.render({"is_official_release": "1"}, request))
 
 
-@user_passes_test(is_fairphone_staff)
+@user_passes_test(user_is_hiccup_staff)
 def versions_overview(request):
     """Respond with the distribution of non-official release versions."""
     template = loader.get_template("crashreport_stats/versions.html")
     return HttpResponse(template.render({"is_official_release": "2"}, request))
 
 
-@user_passes_test(is_fairphone_staff)
+@user_passes_test(user_is_hiccup_staff)
 def home(request):
     """Respond with a form for searching devices by UUID.
 
