Test permissions through real application routes
A role matrix describes intended access. Reachable application functions reveal whether those rules are enforced. Direct record URLs and alternative API or integration access are particularly relevant: hiding a button does not prevent someone from calling the underlying route.
Turn roles into concrete test cases
- Request lists, individual records and changes with each affected role.
- Use another record ID to verify object-level authorization.
- Test service accounts with the permissions they actually receive.
- Check the returned fields as well as the response status.
For each protected operation, record who may perform it and what an unauthorized caller should receive. A server error is not a successful authorization test. It can conceal a broken route and block legitimate employees too.
Keep these cases as permanent release checks. When roles, data models or assignments change, repeat the affected workflows. That keeps verification tied to how people and integrations use the application.