At this stage, validation has been performed manually on the running application (development server).
Authentication flows, visibility rules, permission checks, and deletion behavior were tested using different user roles (creator, collaborator, team member, outsider, superuser).
The core complexity of this system lies in enforcing correct visibility and object-level authorization.
The goal of testing is to ensure:
- access rules cannot be bypassed,
- private data is not exposed,
- relational integrity is preserved after deletions.
Goal: Anonymous users must not access protected pages.
Test cases:
- Unauthenticated request to
/redirects to/login/ - Unauthenticated request to
/tasks/:id/redirects to/login/ - Unauthenticated request to
/teams/:id/redirects to/login/
Why it matters:
- prevents unintended public exposure.
Goal: Users should only see tasks they are allowed to see.
Test cases:
- Public task visible to all authenticated users
- Private task visible to:
- creator
- assigned users
- members of assigned teams
- superuser
- Private task NOT visible to unrelated users
Why it matters:
- this is the main privacy guarantee of the system.
Goal: Users cannot modify or delete objects they do not have rights to.
Task tests:
- Only creator (or superuser) can delete a task
- Only collaborator (creator / assigned / team-member / superuser) can update a task
Team tests:
- Only team members (or superuser) can update/delete a team
User profile tests:
- Only profile owner (or superuser) can update/delete a profile
Why it matters:
- prevents horizontal privilege escalation.
Goal: Only authorized users can create subtasks under a task.
Test cases:
- Authorized collaborator can create subtask via
/tasks/:id/add-sub-task - Unauthorized user receives rejection (no creation)
Why it matters:
- subtasks inherit the parent task’s permission surface.
Goal: Deleting an entity clears many-to-many relations to prevent dangling relations.
Test cases:
- Deleting a user clears user↔tasks and user↔teams relationships
- Deleting a team clears team↔tasks relationships
- Deleting a task clears task↔users and task↔teams relationships
Why it matters:
- ensures consistent database state even if deletion occurs from admin panel or shell.
At the moment, automated tests are not implemented.
However, the system’s architecture and documentation are designed to make permission rules explicit and testable, and the test plan above outlines the intended validation strategy.