diff --git a/conftest.py b/conftest.py
index 6f20cf7345dad6e904ebf28b51ad9d8ea24ec398..8a0c44e0b7ec8227619806f839948f0e68c7a66d 100644
--- a/conftest.py
+++ b/conftest.py
@@ -3,7 +3,7 @@ from datetime import datetime, timedelta
 import pytest
 from rest_framework.test import APIClient
 
-from django.contrib.auth.models import User
+from django.contrib.auth.models import Permission, User
 from django.core.files.uploadedfile import SimpleUploadedFile
 from program.models import (
     FundingCategory,
@@ -27,6 +27,7 @@ from program.tests.factories import (
     ShowFactory,
     TimeslotFactory,
     TypeFactory,
+    UserWithPermissionsFactory,
 )
 
 
@@ -97,6 +98,17 @@ def common_user2() -> User:
     return CommonUserFactory()
 
 
+@pytest.fixture
+def user_with_note_perms() -> User:
+    """User with add_note, change_note, delete_note permissions"""
+
+    permissions = Permission.objects.filter(
+        codename__in=["add_note", "change_note", "delete_note"]
+    )
+
+    return UserWithPermissionsFactory.create(user_permissions=permissions)
+
+
 @pytest.fixture
 def common_api_client1(api_client, common_user1) -> APIClient:
     """Authenticated common user 1 API client"""
@@ -115,6 +127,15 @@ def common_api_client2(api_client, common_user2) -> APIClient:
     api_client.force_authenticate()
 
 
+@pytest.fixture
+def api_client_note_perms(api_client, user_with_note_perms) -> APIClient:
+    """Authenticated API client for user with add_note, change_note, delete_note permissions"""
+
+    api_client.force_authenticate(user_with_note_perms)
+    yield api_client
+    api_client.force_authenticate()
+
+
 @pytest.fixture
 def once_rrule() -> RRule:
     return RRuleFactory(freq=0)
@@ -126,8 +147,8 @@ def show() -> Show:
 
 
 @pytest.fixture
-def owned_show(common_user1):
-    show = ShowFactory()
+def owned_show(common_user1, show) -> Show:
+    """Show owned by a common user"""
 
     show.owners.set([common_user1])
     show.save()
@@ -137,12 +158,27 @@ def owned_show(common_user1):
 
 @pytest.fixture
 def owned_show_once_timeslot(common_user1, show, once_schedule) -> TimeSlot:
+    """Timeslot of a once schedule for a show owned by a common user"""
+
     show.owners.set([common_user1])
     show.save()
 
-    timeslot = TimeslotFactory(schedule=once_schedule)
+    return TimeslotFactory(schedule=once_schedule)
+
+
+@pytest.fixture
+def owned_show_once_timeslot_perms(user_with_note_perms, show, once_schedule) -> TimeSlot:
+    """Timeslot of a once schedule for a show owned by a user with add_note permission"""
+
+    show.owners.set([user_with_note_perms])
+    show.save()
+
+    return TimeslotFactory(schedule=once_schedule)
+
 
-    return timeslot
+@pytest.fixture
+def show_once_timeslot(show, once_schedule) -> TimeSlot:
+    return TimeslotFactory(schedule=once_schedule)
 
 
 @pytest.fixture