|
|
@@ -0,0 +1,84 @@
|
|
|
+Title: Les fixtures
|
|
|
+Category: 3615 ma vie mon oeuvre
|
|
|
+Tags: 3615, meta
|
|
|
+Date: 2018/07/09 20:00
|
|
|
+Modified: 2018/07/10 9:00
|
|
|
+Summary: Hein, pour quoi ?
|
|
|
+Image:
|
|
|
+Lang: fr
|
|
|
+
|
|
|
+___
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+```
|
|
|
+class TestAccess:
|
|
|
+ def _test_access(self, http_method, resource):
|
|
|
+ http_method('/resources')
|
|
|
+ assert resource.authorization_ctx.access == CollectionAccess.ALL
|
|
|
+
|
|
|
+ http_method('/resources/1')
|
|
|
+ assert resource.authorization_ctx.access == ItemAccess.SINGLE
|
|
|
+
|
|
|
+ http_method('/self/resources')
|
|
|
+ assert resource.authorization_ctx.access == CollectionAccess.SELF
|
|
|
+
|
|
|
+ http_method('/others/2/resources')
|
|
|
+ assert resource.authorization_ctx.access == CollectionAccess.RELATED
|
|
|
+
|
|
|
+ def test_get(self, client, resource):
|
|
|
+ self._test_access(client.simulate_get, resource)
|
|
|
+
|
|
|
+ def test_post(self, client, resource):
|
|
|
+ self._test_access(client.simulate_post, resource)
|
|
|
+
|
|
|
+ def test_put(self, client, resource):
|
|
|
+ self._test_access(client.simulate_put, resource)
|
|
|
+
|
|
|
+ def test_patch(self, client, resource):
|
|
|
+ self._test_access(client.simulate_patch, resource)
|
|
|
+
|
|
|
+ def test_delete(self, client, resource):
|
|
|
+ self._test_access(client.simulate_delete, resource)
|
|
|
+```
|
|
|
+
|
|
|
+```
|
|
|
+@pytest.fixture(params=[
|
|
|
+ {
|
|
|
+ 'endpoint': '/resources',
|
|
|
+ 'access': CollectionAccess.ALL,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'endpoint': '/resources/1',
|
|
|
+ 'access': ItemAccess.SINGLE,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'endpoint': '/self/resources',
|
|
|
+ 'access': CollectionAccess.SELF,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'endpoint': '/others/2/resources',
|
|
|
+ 'access': CollectionAccess.RELATED,
|
|
|
+ },
|
|
|
+])
|
|
|
+def scenario(request):
|
|
|
+ return request.param
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def endpoint(scenario):
|
|
|
+ return scenario['endpoint']
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def access(scenario):
|
|
|
+ return scenario['access']
|
|
|
+
|
|
|
+@pytest.fixture(params=['GET', 'POST', 'PUT', 'PATCH', 'DELETE'])
|
|
|
+def http_method(client, request):
|
|
|
+ method = getattr(client, 'simulate_{}'.format(request.param.lower()))
|
|
|
+ return method
|
|
|
+
|
|
|
+def test_access(resource, endpoint, access, http_method):
|
|
|
+ http_method(endpoint)
|
|
|
+ assert resource.authorization_ctx.access == access
|
|
|
+```
|