Opened 85 minutes ago
Last modified 69 minutes ago
#36937 assigned Cleanup/optimization
Add missing positive test cases for @permission_required in test_client
| Reported by: | saishmungase | Owned by: | saishmungase |
|---|---|---|---|
| Component: | Testing framework | Version: | dev |
| Severity: | Normal | Keywords: | test_client |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
In tests/test_client/tests.py, the test_view_with_permissions and test_view_with_method_permissions methods contain TODO comments indicating missing positive test coverage. The tests successfully verify the negative paths (302 redirects for unauthorized users) but fail to verify the 200 OK path for authorized users.
Upon implementing the positive test cases, it became clear that the dummy views in tests/test_client/views.py were decorated with a malformed permission string ("permission_not_granted"). Because this string lacks a standard app_label.codename format, Django's standard ModelBackend fails to parse it during the has_perm() check. This made it impossible to test standard permission assignment properly without relying on workarounds like the is_superuser flag.
This patch:
- Updates the dummy views in
tests/test_client/views.pyto use a standard, valid permission string ("auth.add_user"). - Resolves the
TODOcomments intests/test_client/tests.pyby assigning the realauth.add_userpermission to the test user and asserting the successful 200 OK response.
I have the patch ready and will submit a Pull Request shortly.