Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _populator():
from kotti.populate import populate
populate()
for doc in DBSession.query(Document)[1:]:
DBSession.delete(doc)
transaction.commit()
def _populator():
from kotti import DBSession
from kotti.resources import Document
from kotti.populate import populate
populate()
for doc in DBSession.query(Document)[1:]:
DBSession.delete(doc)
transaction.commit()
def test_inherit(self):
session = DBSession()
root = get_root()
child = root[u'child'] = Node()
session.flush()
self.assertEqual(list_groups('bob', child), [])
set_groups('bob', root, ['role:editor'])
self.assertEqual(list_groups('bob', child), ['role:editor'])
# Groups from the child are added:
set_groups('bob', child, ['group:somegroup'])
self.assertEqual(
set(list_groups('bob', child)),
set(['group:somegroup', 'role:editor'])
)
# We can ask to list only those groups that are defined locally:
def _populator():
from kotti.populate import populate
populate()
for doc in DBSession.query(Document)[1:]:
DBSession.delete(doc)
transaction.commit()
def test_disambiguate_name(self):
from kotti.views.util import disambiguate_name
self.assertEqual(disambiguate_name(u'foo'), u'foo-1')
self.assertEqual(disambiguate_name(u'foo-3'), u'foo-4')
def test_ensure_view_selector(self):
from kotti.views.util import ensure_view_selector
wrapper = ensure_view_selector(None)
request = DummyRequest(path='/edit')
# Ignoring the result since it's not useful with DummyRequest.
# We check that path_info was set accordingly though:
wrapper(None, request)
self.assertEqual(request.path_info, u'/@@edit')
class TestRequestCache(UnitTestBase):
def setUp(self):
from kotti.util import request_cache
registry = Registry('testing')
request = DummyRequest()
request.registry = registry
super(TestRequestCache, self).setUp(registry=registry, request=request)
self.cache_decorator = request_cache
def test_it(self):
called = []
@self.cache_decorator(lambda a, b: (a, b))
def my_fun(a, b):
called.append((a, b))
from webtest import TestApp
tearDown()
_settings = {
"sqlalchemy.url": testing_db_url(),
"kotti.secret": "secret",
"kotti.site_title": "Website des Kottbusser Tors", # for mailing
"kotti.populators": "kotti.testing._populator",
"mail.default_sender": "kotti@localhost",
"pyramid.includes": "kotti.testing._functional_includeme",
}
_settings.update(settings)
host, port = BASE_URL.split(":")[-2:]
app = main({}, **_settings)
Browser.pyquery = property(_zope_testbrowser_pyquery)
return dict(
Browser=lambda: Browser(
"http://{}:{}/".format(host[2:], int(port)), wsgi_app=app
),
browser=Browser("http://{}:{}/".format(host[2:], int(port)), wsgi_app=app),
test_app=TestApp(app),
)
def setUpFunctional(global_config=None, **settings):
import wsgi_intercept.zope_testbrowser
_settings = {
'sqlalchemy.url': testing_db_url(),
'kotti.secret': 'secret',
'kotti.site_title': 'Website des Kottbusser Tors', # for mailing
'kotti.populators': 'kotti.tests._populator',
'mail.default_sender': 'kotti@localhost',
}
_settings.update(settings)
host, port = BASE_URL.split(':')[-2:]
app = main({}, **_settings)
wsgi_intercept.add_wsgi_intercept(host[2:], int(port), lambda: app)
return dict(Browser=wsgi_intercept.zope_testbrowser.WSGI_Browser)
def test_rename_to_empty_name(self):
from kotti.views.edit import move_node
root = DBSession().query(Node).get(1)
child = root['child'] = Document(title=u"Child")
request = DummyRequest()
request.params['rename'] = u'on'
request.params['name'] = u''
request.params['title'] = u'foo'
move_node(child, request)
self.assertEqual(request.session.pop_flash('error'),
[u'Name and title are required.'])
def test_principals_with_local_roles(self):
session = DBSession()
root = get_root()
child = root[u'child'] = Node()
session.flush()
self.assertEqual(principals_with_local_roles(root), [])
self.assertEqual(principals_with_local_roles(child), [])
self.assertEqual(map_principals_with_local_roles(root), [])
self.assertEqual(map_principals_with_local_roles(child), [])
set_groups('group:bobsgroup', child, ['role:editor'])
set_groups('bob', root, ['group:bobsgroup'])
set_groups('group:franksgroup', root, ['role:editor'])
self.assertEqual(
set(principals_with_local_roles(child)),
set(['bob', 'group:bobsgroup', 'group:franksgroup'])
)
self.assertEqual(
session.add(child1)
self.assertEquals(root.keys(), [u'child1'])
self.assertEquals(root[u'child1'], child1)
del root[u'child1']
self.assertEquals(root.keys(), [])
# When we delete a parent node, all its child nodes will be
# released as well:
root[u'child2'] = Node()
root[u'child2'][u'subchild'] = Node()
self.assertEquals(
session.query(Node).filter(Node.name == u'subchild').count(), 1)
del root[u'child2']
self.assertEquals(
session.query(Node).filter(Node.name == u'subchild').count(), 0)
# We can pass a tuple as the key to more efficiently reach
# down to child objects:
root[u'child3'] = Node()
subchild33 = Node(name=u'subchild33', parent=root[u'child3'])
session.add(subchild33)
self.assertTrue(
root[u'child3', u'subchild33'] is root[u'child3'][u'subchild33'])
self.assertTrue(
root[(u'child3', u'subchild33')] is subchild33)
self.assertRaises(KeyError, root.__getitem__, (u'child3', u'bad-name'))
del root[u'child3']
# Overwriting an existing Node is an error; first delete manually!
child4 = Node(name=u'child4', parent=root)
session.add(child4)