def browser(db_session, request): from wsgi_intercept import add_wsgi_intercept, zope_testbrowser add_wsgi_intercept('example.com', 80, app) browser = zope_testbrowser.WSGI_Browser('http://example.com/') if 'user' in request.keywords: # set auth cookie directly on the browser instance... from pyramid.security import remember from pyramid.testing import DummyRequest login = request.keywords['user'].args[0] environ = dict(HTTP_HOST='example.com') for _, value in remember(DummyRequest(environ=environ), login): cookie, _ = value.split(';', 1) name, value = cookie.split('=') if name in browser.cookies: del browser.cookies[name] browser.cookies.create(name, value.strip('"'), path='/') return browser
def browser(db_session, request, setup_app): """ returns an instance of `zope.testbrowser`. The `kotti.testing.user` pytest marker (or `pytest.mark.user`) can be used to pre-authenticate the browser with the given login name: `@user('admin')`. """ from wsgi_intercept import add_wsgi_intercept, zope_testbrowser from kotti.testing import BASE_URL host, port = BASE_URL.split(':')[-2:] add_wsgi_intercept(host[2:], int(port), lambda: setup_app) browser = zope_testbrowser.WSGI_Browser(BASE_URL + '/') if 'user' in request.keywords: # set auth cookie directly on the browser instance... from pyramid.security import remember from pyramid.testing import DummyRequest login = request.keywords['user'].args[0] environ = dict(HTTP_HOST=host[2:]) for _, value in remember(DummyRequest(environ=environ), login): cookie, _ = value.split(';', 1) name, value = cookie.split('=') if name in browser.cookies: del browser.cookies[name] browser.cookies.create(name, value.strip('"'), path='/') return browser