예제 #1
0
 def _add_write_operation_to_queue(self, cli, write_fun, cmd_format_str,
                                   **kwargs_dict):
     cli.do_reset('')
     cli.do_allowaccess('test_subject_1 write')
     cli.do_allowaccess('test_subject_3 changePermission')
     cli.do_preferrep('preferred-mn-2')
     cli.do_blockrep('blocked-mn-1')
     cli.do_blockrep('blocked-mn-2')
     cli.do_numberrep('42')
     cli.do_set('authoritative-mn urn:node:myTestMN')
     cli.do_set('rights-holder test-rights-holder-subject')
     cli.do_set('format-id test-format-id')
     cli.do_set('cn-url {}'.format(d1_test.d1_test_case.MOCK_CN_BASE_URL))
     cli.do_set('mn-url {}'.format(d1_test.d1_test_case.MOCK_MN_BASE_URL))
     pid_str = 'test_pid_{}'.format(
         d1_test.instance_generator.random_data.random_3_words())
     with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
         tmp_file.write('sciobj_for_{}'.format(pid_str).encode('utf-8'))
     # Add a create task to the queue.
     kwargs_dict.update({
         'pid': pid_str,
         'tmp_file_path': tmp_file.name,
     })
     with d1_test.d1_test_case.capture_std():
         write_fun(cmd_format_str.format(**kwargs_dict))
     yield pid_str
     os.unlink(tmp_file.name)
예제 #2
0
 def test_1170(self, cn_client_v2):
     """do_denyaccess(): Subject without permissions raises InvalidArguments"""
     cli = d1_cli.impl.cli.CLI()
     cli.do_allowaccess('test_subject_1 write')
     cli.do_allowaccess('test_subject_2 write')
     cli.do_allowaccess('test_subject_3 changePermission')
     with pytest.raises(cli_exceptions.InvalidArguments):
         cli.do_denyaccess('unknown_subject', )
예제 #3
0
 def test_1190(self, cn_client_v2):
     """do_clearaccess(): Removes all subjects"""
     cli = d1_cli.impl.cli.CLI()
     cli.do_allowaccess('test_subject_1 write')
     cli.do_allowaccess('test_subject_2 write')
     cli.do_allowaccess('test_subject_3 changePermission')
     cli.do_clearaccess('')
     with d1_test.d1_test_case.capture_std() as (out_stream, err_stream):
         cli.do_set('')
     env_str = out_stream.getvalue()
     assert 'test_subject_1: write' not in env_str
     assert 'test_subject_2: write' not in env_str
     assert 'test_subject_3: changePermission' not in env_str
예제 #4
0
 def test_1160(self, cn_client_v2):
     """do_allowaccess(): Correctly sets access control"""
     cli = d1_cli.impl.cli.CLI()
     with d1_test.d1_test_case.capture_std() as (out_stream, err_stream):
         cli.do_allowaccess('test_subject_1 write')
         cli.do_allowaccess('test_subject_2 write')
         cli.do_allowaccess('test_subject_3 changePermission')
         access_pyxb = cli._command_processor.get_session(
         ).get_access_control()
         check_cnt = 0
         for allow_pyxb in access_pyxb.allow:
             if allow_pyxb in ('test_subject_1', 'test_subject_2',
                               'test_subject_3'):
                 check_cnt += 1
     assert check_cnt == 3
     assert 'Set changePermission access for subject "test_subject_3"' in out_stream.getvalue(
     )
예제 #5
0
 def test_1180(self, cn_client_v2):
     """do_denyaccess(): Subject with permissions is removed"""
     cli = d1_cli.impl.cli.CLI()
     cli.do_allowaccess('test_subject_1 write')
     cli.do_allowaccess('test_subject_2 write')
     cli.do_allowaccess('test_subject_3 changePermission')
     with d1_test.d1_test_case.capture_std() as (out_stream, err_stream):
         cli.do_set('')
     env_str = out_stream.getvalue()
     assert 'test_subject_3: changePermission' in env_str
     with d1_test.d1_test_case.capture_std() as (out_stream, err_stream):
         cli.do_denyaccess('test_subject_3')
     assert 'Removed subject "test_subject_3"' in out_stream.getvalue()
     with d1_test.d1_test_case.capture_std() as (out_stream, err_stream):
         cli.do_set('')
     env_str = out_stream.getvalue()
     assert 'test_subject_1: write' in env_str
     assert 'test_subject_2: write' in env_str
     assert 'test_subject_3: changePermission' not in env_str