📄 authz_tests.py
字号:
svntest.actions.run_and_verify_svn("", None, expected_err, 'ls', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, E_url) # copy a remote file svntest.actions.run_and_verify_svn("", None, [], 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, iota_url, D_url, '-m', 'logmsg') # copy a remote file, source is unreadable: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', lambda_url, D_url) # copy a remote folder svntest.actions.run_and_verify_svn("", None, [], 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, C_url, D_url, '-m', 'logmsg') # copy a remote folder, source is unreadable: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', E_url, D_url)# test whether write access is correctly granted and denieddef authz_write_access(sbox): "test authz for write operations" skip_test_when_no_authz_available() sbox.build("authz_write_access", create_wc = False) write_restrictive_svnserve_conf(svntest.main.current_repo_dir) fp = open(sbox.authz_file, 'w') # For mod_dav_svn's parent path setup we need per-repos permissions in # the authz file... if sbox.repo_url.startswith('http'): fp.write("[authz_write_access:/]\n" + "* = r\n" + "\n" + "[authz_write_access:/A/B]\n" + "* = rw\n" + "\n" + "[authz_write_access:/A/C]\n" + "* = rw") expected_err = ".*403 Forbidden.*" # Otherwise we can just go with the permissions needed for the source # repository. else: fp.write("[/]\n" + "* = r\n" + "[/A/B]\n" + "* = rw\n" + "[/A/C]\n" + "* = rw\n") expected_err = ".*svn: Access denied.*" fp.close() root_url = svntest.main.current_repo_url A_url = root_url + '/A' B_url = A_url + '/B' C_url = A_url + '/C' E_url = B_url + '/E' mu_url = A_url + '/mu' iota_url = root_url + '/iota' lambda_url = B_url + '/lambda' D_url = A_url + '/D' # copy a remote file, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', lambda_url, D_url) # copy a remote folder, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'cp', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', E_url, D_url) # delete a file, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'rm', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', iota_url) # delete a folder, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'rm', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', D_url) # create a folder, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'mkdir', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', A_url+'/newfolder') # move a remote file, source is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'mv', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', mu_url, C_url) # move a remote folder, source is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'mv', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', D_url, C_url) # move a remote file, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'mv', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', lambda_url, D_url) # move a remote folder, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'mv', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'logmsg', B_url, D_url) if sbox.repo_url.startswith('svn'): expected_err = ".*svn: Authorization failed.*" # lock a file, target is readonly: should fail svntest.actions.run_and_verify_svn("", None, expected_err, 'lock', '--username', svntest.main.wc_author, '--password', svntest.main.wc_passwd, '-m', 'lock msg', iota_url)#----------------------------------------------------------------------def authz_checkout_test(sbox): "test authz for checkout" skip_test_when_no_authz_available() sbox.build("authz_checkout_test", create_wc = False) local_dir = sbox.wc_dir write_restrictive_svnserve_conf(svntest.main.current_repo_dir) # 1st part: disable all read access, checkout should fail # write an authz file with *= on / fp = open(sbox.authz_file, 'w') if sbox.repo_url.startswith('http'): fp.write("[authz_checkout_test:/]\n" + "* =\n") expected_err = ".*403 Forbidden.*" else: fp.write("[/]\n" + "* =\n") expected_err = ".*svn: Authorization failed.*" fp.close() # checkout a working copy, should fail svntest.actions.run_and_verify_svn(None, None, expected_err, 'co', sbox.repo_url, local_dir) # 2nd part: now enable read access # write an authz file with *=r on / fp = open(sbox.authz_file, 'w') if sbox.repo_url.startswith('http'): fp.write("[authz_checkout_test:/]\n" + "* = r\n") expected_err = ".*403 Forbidden.*" else: fp.write("[/]\n" + "* = r\n") expected_err = ".*svn: Authorization failed.*" fp.close() # checkout a working copy, should succeed because we have read access expected_output = svntest.main.greek_state.copy() expected_output.wc_dir = local_dir expected_output.tweak(status='A ', contents=None) expected_wc = svntest.main.greek_state svntest.actions.run_and_verify_checkout(sbox.repo_url, local_dir, expected_output, expected_wc)def authz_checkout_and_update_test(sbox): "test authz for checkout and update" skip_test_when_no_authz_available() sbox.build("authz_checkout_and_update_test", create_wc = False) local_dir = sbox.wc_dir write_restrictive_svnserve_conf(svntest.main.current_repo_dir) # 1st part: disable read access on folder A/B, checkout should not # download this folder # write an authz file with *= on /A/B fp = open(sbox.authz_file, 'w') if sbox.repo_url.startswith('http'): fp.write("[authz_checkout_and_update_test:/]\n" + "* = r\n" + "[authz_checkout_and_update_test:/A/B]\n" + "* =\n") else: fp.write("[/]\n" + "* = r\n" + "[/A/B]\n" + "* =\n") fp.close() # checkout a working copy, should not dl /A/B expected_output = svntest.main.greek_state.copy() expected_output.wc_dir = local_dir expected_output.tweak(status='A ', contents=None) expected_output.remove('A/B', 'A/B/lambda', 'A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F') expected_wc = svntest.main.greek_state.copy() expected_wc.remove('A/B', 'A/B/lambda', 'A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F') svntest.actions.run_and_verify_checkout(sbox.repo_url, local_dir, expected_output, expected_wc) # 2nd part: now enable read access # write an authz file with *=r on / fp = open(sbox.authz_file, 'w') if sbox.repo_url.startswith('http'):
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -