def setUp(self): super(RunnerPermissionsResolverTestCase, self).setUp() # Create some mock users user_1_db = UserDB(name='custom_role_runner_view_grant') user_1_db = User.add_or_update(user_1_db) self.users['custom_role_runner_view_grant'] = user_1_db user_2_db = UserDB(name='custom_role_runner_modify_grant') user_2_db = User.add_or_update(user_2_db) self.users['custom_role_runner_modify_grant'] = user_2_db # Create some mock resources on which permissions can be granted runner_1_db = RunnerTypeDB(name='runner_1') self.resources['runner_1'] = runner_1_db runner_2_db = RunnerTypeDB(name='runner_2') self.resources['runner_2'] = runner_2_db # Create some mock roles with associated permission grants # Custom role - "runner_view" grant on runner_1 grant_db = PermissionGrantDB( resource_uid=self.resources['runner_1'].get_uid(), resource_type=ResourceType.RUNNER, permission_types=[PermissionType.RUNNER_VIEW]) grant_db = PermissionGrant.add_or_update(grant_db) permission_grants = [str(grant_db.id)] role_db = RoleDB(name='custom_role_runner_view_grant', permission_grants=permission_grants) role_db = Role.add_or_update(role_db) self.roles['custom_role_runner_view_grant'] = role_db # Custom role - "runner_modify" grant on runner_2 grant_db = PermissionGrantDB( resource_uid=self.resources['runner_2'].get_uid(), resource_type=ResourceType.RUNNER, permission_types=[PermissionType.RUNNER_MODIFY]) grant_db = PermissionGrant.add_or_update(grant_db) permission_grants = [str(grant_db.id)] role_db = RoleDB(name='custom_role_runner_modify_grant', permission_grants=permission_grants) role_db = Role.add_or_update(role_db) self.roles['custom_role_runner_modify_grant'] = role_db # Create some mock role assignments user_db = self.users['custom_role_runner_view_grant'] role_assignment_db = UserRoleAssignmentDB( user=user_db.name, role=self.roles['custom_role_runner_view_grant'].name, source='assignments/%s.yaml' % user_db.name) UserRoleAssignment.add_or_update(role_assignment_db) user_db = self.users['custom_role_runner_modify_grant'] role_assignment_db = UserRoleAssignmentDB( user=user_db.name, role=self.roles['custom_role_runner_modify_grant'].name, source='assignments/%s.yaml' % user_db.name) UserRoleAssignment.add_or_update(role_assignment_db)
def test_get_runner_module_fail(self): runnertype_db = RunnerTypeDB() runnertype_db.runner_module = 'absent.module' runner = None try: runner = get_runner(runnertype_db.runner_module) except ActionRunnerCreateError: pass self.assertFalse(runner, 'TestRunner must be valid.')
def _create_save_runnertype(metadata=False): created = RunnerTypeDB() created.name = 'python' created.description = '' created.enabled = True if not metadata: created.runner_parameters = {'r1': None, 'r2': None} else: created.runner_parameters = { 'r1': {'type': 'object', 'properties': {'r1a': {'type': 'string'}}}, 'r2': {'type': 'string', 'required': True} } created.runner_module = 'nomodule' return RunnerType.add_or_update(created)
try: import simplejson as json except ImportError: import json import jsonschema import mock import st2actions.bootstrap.actionsregistrar as actions_registrar from st2common.persistence.action import Action import st2common.validators.api.action as action_validator from st2common.models.db.action import RunnerTypeDB import st2tests.base as tests_base import st2tests.fixturesloader as fixtures_loader MOCK_RUNNER_TYPE_DB = RunnerTypeDB() MOCK_RUNNER_TYPE_DB.name = 'run-local' MOCK_RUNNER_TYPE_DB.runner_module = 'st2.runners.local' class ActionsRegistrarTest(tests_base.DbTestCase): @mock.patch.object(action_validator, '_is_valid_pack', mock.MagicMock(return_value=True)) @mock.patch.object(action_validator, '_get_runner_model', mock.MagicMock(return_value=MOCK_RUNNER_TYPE_DB)) def test_register_all_actions(self): try: packs_base_path = fixtures_loader.get_fixtures_base_path() all_actions_in_db = Action.get_all() actions_registrar.register_actions(packs_base_paths=[packs_base_path]) except Exception as e: print(str(e))
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import jsonschema import mock import yaml import st2actions.bootstrap.actionsregistrar as actions_registrar from st2common.persistence.action import Action import st2common.validators.api.action as action_validator from st2common.models.db.action import RunnerTypeDB import st2tests.base as tests_base import st2tests.fixturesloader as fixtures_loader MOCK_RUNNER_TYPE_DB = RunnerTypeDB() MOCK_RUNNER_TYPE_DB.name = 'run-local' MOCK_RUNNER_TYPE_DB.runner_module = 'st2.runners.local' class ActionsRegistrarTest(tests_base.DbTestCase): @mock.patch.object(action_validator, '_is_valid_pack', mock.MagicMock(return_value=True)) @mock.patch.object(action_validator, '_get_runner_model', mock.MagicMock(return_value=MOCK_RUNNER_TYPE_DB)) def test_register_all_actions(self): try: packs_base_path = fixtures_loader.get_fixtures_base_path() all_actions_in_db = Action.get_all() actions_registrar.register_actions(packs_base_paths=[packs_base_path]) except Exception as e: print(str(e))