def test_cli_sync_perm(self, dagbag_mock, mock_cached_app):
        dags = [
            DAG('has_access_control',
                access_control={'Public': {permissions.ACTION_CAN_READ}}),
            DAG('no_access_control'),
        ]

        collect_dags_from_db_mock = mock.Mock()
        dagbag = mock.Mock()

        dagbag.dags = {dag.dag_id: dag for dag in dags}
        dagbag.collect_dags_from_db = collect_dags_from_db_mock
        dagbag_mock.return_value = dagbag

        appbuilder = mock_cached_app.return_value.appbuilder
        appbuilder.sm = mock.Mock()

        args = self.parser.parse_args(['sync-perm'])
        sync_perm_command.sync_perm(args)

        assert appbuilder.sm.sync_roles.call_count == 1

        dagbag_mock.assert_called_once_with(read_dags_from_db=True)
        collect_dags_from_db_mock.assert_called_once_with()
        assert 2 == len(appbuilder.sm.sync_perm_for_dag.mock_calls)
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'has_access_control', {'Public': {permissions.ACTION_CAN_READ}})
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'no_access_control',
            None,
        )
        appbuilder.add_permissions.assert_called_once_with(update_perms=True)
Example #2
0
    def test_cli_sync_perm(self, dagbag_mock, mock_cached_app):
        self.expect_dagbag_contains([
            DAG('has_access_control',
                access_control={
                    'Public': {'can_read'}
                }),
            DAG('no_access_control')
        ], dagbag_mock)
        appbuilder = mock_cached_app.return_value.appbuilder
        appbuilder.sm = mock.Mock()

        args = self.parser.parse_args([
            'sync-perm'
        ])
        sync_perm_command.sync_perm(args)

        assert appbuilder.sm.sync_roles.call_count == 1

        dagbag_mock.assert_called_once_with(store_serialized_dags=True)
        self.assertEqual(2, len(appbuilder.sm.sync_perm_for_dag.mock_calls))
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'has_access_control',
            {'Public': {'can_read'}}
        )
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'no_access_control',
            None,
        )
    def test_cli_sync_perm(self, dagbag_mock, mock_cached_app):
        self.expect_dagbag_contains(
            [
                DAG('has_access_control',
                    access_control={'Public': {permissions.ACTION_CAN_READ}}),
                DAG('no_access_control'),
            ],
            dagbag_mock,
        )
        appbuilder = mock_cached_app.return_value.appbuilder
        appbuilder.sm = mock.Mock()

        args = self.parser.parse_args(['sync-perm'])
        sync_perm_command.sync_perm(args)

        assert appbuilder.sm.sync_roles.call_count == 1

        dagbag_mock.assert_called_once_with(read_dags_from_db=True)
        self.assertEqual(2, len(appbuilder.sm.sync_perm_for_dag.mock_calls))
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'has_access_control', {'Public': {permissions.ACTION_CAN_READ}})
        appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'no_access_control',
            None,
        )
    def test_cli_sync_perm_include_dags(self, mock_cached_app):
        appbuilder = mock_cached_app.return_value.appbuilder
        appbuilder.sm = mock.Mock()

        args = self.parser.parse_args(['sync-perm', '--include-dags'])
        sync_perm_command.sync_perm(args)

        appbuilder.add_permissions.assert_called_once_with(update_perms=True)
        appbuilder.sm.sync_roles.assert_called_once_with()
        appbuilder.sm.create_dag_specific_permissions.assert_called_once_with()
    def test_cli_sync_perm(self, dagbag_mock):
        self.expect_dagbag_contains([
            DAG('has_access_control',
                access_control={'Public': {'can_dag_read'}}),
            DAG('no_access_control')
        ], dagbag_mock)
        self.appbuilder.sm = mock.Mock()

        args = self.parser.parse_args(['sync_perm'])
        sync_perm_command.sync_perm(args)

        assert self.appbuilder.sm.sync_roles.call_count == 1

        self.assertEqual(2,
                         len(self.appbuilder.sm.sync_perm_for_dag.mock_calls))
        self.appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'has_access_control', {'Public': {'can_dag_read'}})
        self.appbuilder.sm.sync_perm_for_dag.assert_any_call(
            'no_access_control',
            None,
        )