django-rest-framework/tests
David Smith 4aea8dd65a
Change semantic of OR of two permission classes (#7522)
* Change semantic of OR of two permission classes

The original semantic of OR is defined as: the request pass either of the two has_permission() check, and pass either of the two has_object_permission() check, which could lead to situations that a request passes has_permission() but fails on has_object_permission() of Permission Class A, fails has_permission() but passes has_object_permission() of Permission Class B, passes the OR permission check. This should not be the desired permission check semantic in applications, because such a request should fail on either Permission Class (on Django object permission) alone, but passes the OR or the two.

My code fix this by changing the semantic so that the request has to pass either class's has_permission() and has_object_permission() to get the Django object permission of the OR check.

* Update rest_framework/permissions.py

* Update setup.cfg

Co-authored-by: Mark Yu <markyu98@outlook.com>
Co-authored-by: Tom Christie <tom@tomchristie.com>
2022-09-21 12:19:33 +01:00
..
authentication Adjusted authentication test for internal CSRF changes. 2021-09-23 11:57:03 +02:00
browsable_api tests for #5127 (#7715) 2022-06-08 13:41:26 +01:00
generic_relations Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
importable Fix lazy translation of ListField errors (#6708) 2019-05-22 19:41:53 -07:00
schemas Prevent head method mapping to coerce action name (#7729) 2022-08-12 12:00:55 +01:00
__init__.py Support for running the test suite with py.test 2014-03-02 12:40:30 +01:00
conftest.py Removed USE_L10N setting from Django 4.0. 2021-09-23 11:57:03 +02:00
models.py tests for #5127 (#7715) 2022-06-08 13:41:26 +01:00
test_api_client.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_atomic_requests.py support multi db atomic_requests (#7739) 2021-03-03 11:15:39 +00:00
test_authtoken.py Fix: authtoken.TokenProxy cannot be proxy when not installed (#7571) 2020-10-09 12:16:15 +01:00
test_bound_fields.py Render JSON fields with proper indentation in browsable API forms. (#6243) 2021-03-15 10:44:03 +00:00
test_decorators.py Revert "Make api_view respect standard wrapper assignments (#8291)" (#8297) 2021-12-15 15:16:38 +00:00
test_description.py Update docstring test for more recent pygments version (#8530) 2022-06-20 10:44:27 +01:00
test_encoders.py Confirmed support for Django 4.1. (#8498) 2022-06-06 12:39:06 +01:00
test_exceptions.py Replace all usage ugettext functions with the non-u versions (#6634) 2019-05-01 07:49:54 +02:00
test_fields.py Stop calling set_context, planned for 3.13 drop (#8589) 2022-08-08 11:18:49 +01:00
test_filters.py Ordering filter bug with model property serializer field (#7609) 2021-03-16 12:53:39 +00:00
test_generics.py Allow context to be provided to get_serializer (#7298) 2020-04-29 11:19:44 +01:00
test_htmlrenderer.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_lazy_hyperlinks.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_metadata.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_middleware.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_model_serializer.py Handle unset fields with 'many=True' (#7574) 2022-06-08 14:46:19 +01:00
test_multitable_inheritance.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_negotiation.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_one_to_one_with_inheritance.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_pagination.py Added example for pagination in schemas. (#7275) 2020-04-24 16:13:13 +02:00
test_parsers.py Drop default 'utf-8' to .encode()/.decode() (#6633) 2019-05-01 07:49:16 +02:00
test_permissions.py Change semantic of OR of two permission classes (#7522) 2022-09-21 12:19:33 +01:00
test_prefetch_related.py Remove Django 1.8 & 1.9 compatibility code (#5481) 2017-10-05 20:41:38 +02:00
test_relations_hyperlink.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_relations_pk.py Fix pk-only optimization for properties (#7142) 2020-09-03 11:49:15 +01:00
test_relations_slug.py fix wrong assert 2017-01-21 02:25:36 +06:00
test_relations.py Reject PrimaryKeyRelatedField bool lookup values (#7597) 2021-03-17 13:28:38 +00:00
test_renderers.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_request.py Fix RemovedInDjango40Warning for middleware get_resopnse() (#7513) 2020-10-09 10:48:03 +01:00
test_requests_client.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_response.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_reverse.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_routers.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_serializer_bulk_update.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_serializer_lists.py Add max_length and min_length options to ListSerializer (#8165) 2021-09-14 13:45:55 +01:00
test_serializer_nested.py Fix tests crash on SQLite without JSON1 extension. (#7409) 2020-07-12 11:08:40 +02:00
test_serializer.py Make ReturnDict support dict union operators on Python 3.9 and later (#8302) 2021-12-22 15:08:58 +00:00
test_settings.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_status.py Updated dependencies (#7589) 2021-04-05 10:28:03 +01:00
test_templates.py Revert "made Browsable API base template cachable: omit CSRF token when unnecessary (#7717)" (#7847) 2021-03-17 13:24:55 +00:00
test_templatetags.py Update test_templatetags.py 2020-09-30 09:10:36 +01:00
test_testing.py Make APIClient.force_authenticate() work with user=None (#8212) 2022-09-15 09:35:48 +01:00
test_throttling.py Handle 'None' return value of wait() properly during throttling. (#6837) 2019-08-12 11:36:05 -07:00
test_urlpatterns.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_utils.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_validation_error.py Handle tuples same as lists in ValidationError detail context (#7647) 2021-01-06 13:13:34 +00:00
test_validation.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_validators.py Respect model error_messages for relation (#7599) 2022-06-06 13:53:42 +01:00
test_versioning.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_views.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00
test_viewsets.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
test_write_only_fields.py tests: remove some dead code, use assert 0 for never called methods (#5973) 2018-05-08 13:28:46 +01:00
urls.py Replace all url() calls with path() or re_path() (#7512) 2020-09-08 15:32:27 +01:00
utils.py Dropped Python 2 compatibility. (#6615) 2019-04-30 17:53:44 +02:00