Page MenuHome

test_cli.py
No OneTemporary

File Metadata

Created
Mon, Jan 20, 3:10 PM

test_cli.py

from __future__ import absolute_import
from pillar.tests import AbstractPillarTest
from pillar.tests import common_test_data as ctd
class PatchCommentTest(AbstractPillarTest):
def setUp(self, **kwargs):
AbstractPillarTest.setUp(self, **kwargs)
# Create a project that doesn't reference non-existing files, so that
# Eve can actually PUT it later without validation errors.
self.project_id, self.proj = self.ensure_project_exists(project_overrides={
'picture_square': None,
'picture_header': None,
})
def test_replace_pillar_node_type_schemas(self):
from pillar.api.node_types.group import node_type_group
from pillar.cli import replace_pillar_node_type_schemas
group_perms = {u'group': ctd.EXAMPLE_PROJECT_READONLY_GROUP_ID,
u'methods': [u'POST', u'PUT']}
# Assign some permissions to the node types, so we're sure they don't get overwritten.
with self.app.app_context():
proj_coll = self.app.db()['projects']
proj_coll.update_one(
{'_id': self.project_id,
'node_types.name': 'asset'},
{'$push': {'node_types.$.permissions.groups': group_perms}}
)
# Run the CLI command
with self.app.test_request_context():
replace_pillar_node_type_schemas(proj_url=self.proj['url'])
# Fetch the project again from MongoDB
with self.app.app_context():
proj_coll = self.app.db()['projects']
dbproj = proj_coll.find_one(self.project_id)
# Perform our tests
def nt(node_type_name):
found = [nt for nt in dbproj['node_types']
if nt['name'] == node_type_name]
return found[0]
# Test that the node types were updated
nt_group = nt('group')
self.assertEqual(node_type_group['description'], nt_group['description'])
# Test that the permissions set previously are still there.
nt_asset = nt('asset')
self.assertEqual([group_perms], nt_asset['permissions']['groups'])

Event Timeline