[devtools/testlib] avoid hidding AttributeError in create_user()
commit() might raise a AttributeError too.
Use getattr(req, 'cnx', req) instead, which is a form already used to get the real cnx
in some code:
cubicweb/rset.py:577: cnx = getattr(self.req, 'cnx', self.req)
cubicweb/schema.py:353: with getattr(_cw, 'cnx', _cw).security_enabled(read=False):
We could use if hasattr(req, 'commit') here too but it lead to 3 additionals lines.
Maybe we should have commit() and rollback() on
cubicweb.web.request.ConnectionCubicWebRequestBase too ?
from __future__ import absolute_import
from cubicweb.pyramid.rest_api import EntityResource
from cubicweb.pyramid.core import CubicWebPyramidRequest
from pyramid.view import view_config
from cubicweb.pyramid.test import PyramidCWTest
class RestApiTest(PyramidCWTest):
def includeme(self, config):
config.include('cubicweb.pyramid.rest_api')
config.include('cubicweb.pyramid.test.test_rest_api')
def test_delete(self):
with self.admin_access.repo_cnx() as cnx:
cnx.create_entity('CWGroup', name=u'tmp')
cnx.commit()
self.login()
res = self.webapp.delete('/cwgroup/tmp')
self.assertEqual(res.status_int, 204)
with self.admin_access.repo_cnx() as cnx:
self.assertEqual(cnx.find('CWGroup', name=u'tmp').rowcount, 0)
def test_rql_execute(self):
with self.admin_access.repo_cnx() as cnx:
cnx.create_entity('CWGroup', name=u'tmp')
cnx.commit()
self.login()
params = {'test_rql_execute': 'test'}
self.webapp.get('/cwgroup/tmp', params=params)
@view_config(
route_name='cwentities',
context=EntityResource,
request_method='GET',
request_param=('test_rql_execute',)
)
def rql_execute_view(context, request):
"""Return 500 response if rset.req is not a CubicWeb request.
"""
if isinstance(context.rset.req, CubicWebPyramidRequest):
request.response.status_int = 204
else:
request.response.status_int = 500
request.response.text = 'rset.req is not a CubicWeb request'
return request.response
def includeme(config):
config.scan(__name__)
if __name__ == '__main__':
from unittest import main
main()