| 
														
															@@ -15,7 +15,7 @@ from ...manifest import Manifest, MandatoryFeatureUnsupported 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from ...remote import RemoteRepository, PathNotAllowed 
														 | 
														
														 | 
														
															 from ...remote import RemoteRepository, PathNotAllowed 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from ...repository import Repository 
														 | 
														
														 | 
														
															 from ...repository import Repository 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from .. import llfuse 
														 | 
														
														 | 
														
															 from .. import llfuse 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-from .. import changedir, environment_variable 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+from .. import changedir 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from . import cmd, _extract_repository_id, open_repository, check_cache, create_test_files, create_src_archive 
														 | 
														
														 | 
														
															 from . import cmd, _extract_repository_id, open_repository, check_cache, create_test_files, create_src_archive 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 from . import _set_repository_id, create_regular_file, assert_creates_file, generate_archiver_tests, RK_ENCRYPTION 
														 | 
														
														 | 
														
															 from . import _set_repository_id, create_regular_file, assert_creates_file, generate_archiver_tests, RK_ENCRYPTION 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -123,7 +123,7 @@ def test_repository_swap_detection2_no_cache(archivers, request): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cmd(archiver, "create", "test.2", "input") 
														 | 
														
														 | 
														
															             cmd(archiver, "create", "test.2", "input") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-def test_repository_swap_detection_repokey_blank_passphrase(archivers, request): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def test_repository_swap_detection_repokey_blank_passphrase(archivers, request, monkeypatch): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
														
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # Check that a repokey repo with a blank passphrase is considered like a plaintext repo. 
														 | 
														
														 | 
														
															     # Check that a repokey repo with a blank passphrase is considered like a plaintext repo. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     create_test_files(archiver.input_path) 
														 | 
														
														 | 
														
															     create_test_files(archiver.input_path) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -132,30 +132,33 @@ def test_repository_swap_detection_repokey_blank_passphrase(archivers, request): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     cmd(archiver, "create", "test", "input") 
														 | 
														
														 | 
														
															     cmd(archiver, "create", "test", "input") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # Attacker replaces it with her own repository, which is encrypted but has no passphrase set 
														 | 
														
														 | 
														
															     # Attacker replaces it with her own repository, which is encrypted but has no passphrase set 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     shutil.rmtree(archiver.repository_path) 
														 | 
														
														 | 
														
															     shutil.rmtree(archiver.repository_path) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    with environment_variable(BORG_PASSPHRASE=""): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        cmd(archiver, "rcreate", RK_ENCRYPTION) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # Delete cache & security database, AKA switch to user perspective 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        cmd(archiver, "rdelete", "--cache-only") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        shutil.rmtree(get_security_directory(archiver.repository_path)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    with environment_variable(BORG_PASSPHRASE=None): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # This is the part were the user would be tricked, e.g. she assumes that BORG_PASSPHRASE 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # is set, while it isn't. Previously this raised no warning, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        # since the repository is, technically, encrypted. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        if archiver.FORK_DEFAULT: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            cmd(archiver, "create", "test.2", "input", exit_code=EXIT_ERROR) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        else: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            with pytest.raises(Cache.CacheInitAbortedError): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                cmd(archiver, "create", "test.2", "input") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-def test_repository_move(archivers, request): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    monkeypatch.setenv("BORG_PASSPHRASE", "") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmd(archiver, "rcreate", RK_ENCRYPTION) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # Delete cache & security database, AKA switch to user perspective 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmd(archiver, "rdelete", "--cache-only") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    shutil.rmtree(get_security_directory(archiver.repository_path)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    monkeypatch.delenv("BORG_PASSPHRASE") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # This is the part were the user would be tricked, e.g. she assumes that BORG_PASSPHRASE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # is set, while it isn't. Previously this raised no warning, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    # since the repository is, technically, encrypted. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if archiver.FORK_DEFAULT: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        cmd(archiver, "create", "test.2", "input", exit_code=EXIT_ERROR) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        with pytest.raises(Cache.CacheInitAbortedError): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cmd(archiver, "create", "test.2", "input") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def test_repository_move(archivers, request, monkeypatch): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
														
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     cmd(archiver, "rcreate", RK_ENCRYPTION) 
														 | 
														
														 | 
														
															     cmd(archiver, "rcreate", RK_ENCRYPTION) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     security_dir = get_security_directory(archiver.repository_path) 
														 | 
														
														 | 
														
															     security_dir = get_security_directory(archiver.repository_path) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     os.replace(archiver.repository_path, archiver.repository_path + "_new") 
														 | 
														
														 | 
														
															     os.replace(archiver.repository_path, archiver.repository_path + "_new") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     archiver.repository_location += "_new" 
														 | 
														
														 | 
														
															     archiver.repository_location += "_new" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    with environment_variable(BORG_RELOCATED_REPO_ACCESS_IS_OK="yes"): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        cmd(archiver, "rinfo") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    monkeypatch.setenv("BORG_RELOCATED_REPO_ACCESS_IS_OK", "yes") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmd(archiver, "rinfo") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    monkeypatch.delenv("BORG_RELOCATED_REPO_ACCESS_IS_OK") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     with open(os.path.join(security_dir, "location")) as fd: 
														 | 
														
														 | 
														
															     with open(os.path.join(security_dir, "location")) as fd: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         location = fd.read() 
														 | 
														
														 | 
														
															         location = fd.read() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assert location == Location(archiver.repository_location).canonical_path() 
														 | 
														
														 | 
														
															         assert location == Location(archiver.repository_location).canonical_path() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -179,7 +182,7 @@ def test_security_dir_compat(archivers, request): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     cmd(archiver, "rinfo") 
														 | 
														
														 | 
														
															     cmd(archiver, "rinfo") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-def test_unknown_unencrypted(archivers, request): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def test_unknown_unencrypted(archivers, request, monkeypatch): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
														
														 | 
														
															     archiver = request.getfixturevalue(archivers) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     cmd(archiver, "rcreate", "--encryption=none") 
														 | 
														
														 | 
														
															     cmd(archiver, "rcreate", "--encryption=none") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # Ok: repository is known 
														 | 
														
														 | 
														
															     # Ok: repository is known 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -196,8 +199,8 @@ def test_unknown_unencrypted(archivers, request): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     else: 
														 | 
														
														 | 
														
															     else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         with pytest.raises(Cache.CacheInitAbortedError): 
														 | 
														
														 | 
														
															         with pytest.raises(Cache.CacheInitAbortedError): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cmd(archiver, "rinfo") 
														 | 
														
														 | 
														
															             cmd(archiver, "rinfo") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    with environment_variable(BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK="yes"): 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        cmd(archiver, "rinfo") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    monkeypatch.setenv("BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK", "yes") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    cmd(archiver, "rinfo") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def test_unknown_feature_on_create(archivers, request): 
														 | 
														
														 | 
														
															 def test_unknown_feature_on_create(archivers, request): 
														 |