]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-apt-update-rollback
Use Acquire::Allow{InsecureRepositories,DowngradeToInsecureRepositories}
[apt.git] / test / integration / test-apt-update-rollback
index cd28f1f1fd6545237c44b601b9778f45245fb7ba..ee8bc69264c9f3a7447151f58764bf64728fa2c5 100755 (executable)
@@ -44,7 +44,8 @@ test_inrelease_to_new_inrelease() {
     testequal "old/unstable 1.0 all" apt list -q
 
     add_new_package
     testequal "old/unstable 1.0 all" apt list -q
 
     add_new_package
-    testsuccess aptget update
+
+    testsuccess aptget update -o Debug::Acquire::Transaction=1
 
     testequal "new/unstable 1.0 all
 old/unstable 1.0 all" apt list -q
 
     testequal "new/unstable 1.0 all
 old/unstable 1.0 all" apt list -q
@@ -58,11 +59,7 @@ test_inrelease_to_broken_hash_reverts_all() {
     break_repository_sources_index
 
     # test the error condition
     break_repository_sources_index
 
     # test the error condition
-    testequal "W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease  
-
-W: Failed to fetch copy:${APTARCHIVE}/dists/unstable/main/source/Sources  Hash Sum mismatch
-
-W: Failed to fetch copy:${APTARCHIVE}/dists/unstable/main/binary-i386/Packages  
+    testequal "W: Failed to fetch file:${APTARCHIVE}/dists/unstable/main/source/Sources  Hash Sum mismatch
 
 E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
     # ensure that the Packages file is also rolled back
 
 E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
     # ensure that the Packages file is also rolled back
@@ -78,15 +75,14 @@ test_inreleae_to_valid_release() {
     rm $APTARCHIVE/dists/unstable/Release.gpg
     avoid_ims_hit
 
     rm $APTARCHIVE/dists/unstable/Release.gpg
     avoid_ims_hit
 
-    # update works
-    testsuccess aptget update -o Debug::Acquire::Transaction=1
+    # update fails
+    testequal "E: The repository 'file: unstable Release.gpg' is no longer signed." aptget update -qq
 
     # test that we can install the new packages but do no longer have a sig
     testsuccess aptget install old -s
 
     # test that we can install the new packages but do no longer have a sig
     testsuccess aptget install old -s
-    testsuccess aptget install new -s
-    testfailure ls $ROOTDIR/var/lib/apt/lists/*_InRelease
-    testfailure ls $ROOTDIR/var/lib/apt/lists/*_Release.gpg
-    testsuccess ls $ROOTDIR/var/lib/apt/lists/*_Release
+    testfailure aptget install new -s
+    testsuccess ls $ROOTDIR/var/lib/apt/lists/*_InRelease
+    testfailure ls $ROOTDIR/var/lib/apt/lists/*_Release
 }
 
 test_inreleae_to_release_reverts_all() {
 }
 
 test_inreleae_to_release_reverts_all() {
@@ -101,17 +97,7 @@ test_inreleae_to_release_reverts_all() {
     break_repository_sources_index
 
     # ensure error
     break_repository_sources_index
 
     # ensure error
-    testequal "W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease  
-
-W: Failed to fetch file:$APTARCHIVE/dists/unstable/Release  
-
-W: Failed to fetch file:$APTARCHIVE/dists/unstable/Release.gpg  
-
-W: Failed to fetch copy:$APTARCHIVE/dists/unstable/main/source/Sources  Hash Sum mismatch
-
-W: Failed to fetch copy:$APTARCHIVE/dists/unstable/main/binary-i386/Packages  
-
-E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq # -o Debug::acquire::transaction=1
+    testequal "E: The repository 'file: unstable Release.gpg' is no longer signed." aptget update -qq # -o Debug::acquire::transaction=1
 
     # ensure that the Packages file is also rolled back
     testsuccess aptget install old -s
 
     # ensure that the Packages file is also rolled back
     testsuccess aptget install old -s
@@ -123,11 +109,12 @@ E: Some index files failed to download. They have been ignored, or old ones used
 test_unauthenticated_to_invalid_inrelease() {
     msgmsg "Test UnAuthenticated to invalid InRelease reverts everything"
     create_fresh_archive
 test_unauthenticated_to_invalid_inrelease() {
     msgmsg "Test UnAuthenticated to invalid InRelease reverts everything"
     create_fresh_archive
+    rm -rf rootdir/var/lib/apt/lists/*
     rm $APTARCHIVE/dists/unstable/InRelease
     rm $APTARCHIVE/dists/unstable/Release.gpg
     avoid_ims_hit
     
     rm $APTARCHIVE/dists/unstable/InRelease
     rm $APTARCHIVE/dists/unstable/Release.gpg
     avoid_ims_hit
     
-    testsuccess aptget update -qq
+    testsuccess aptget update -qq --allow-insecure-repositories
     testequal "WARNING: The following packages cannot be authenticated!
   old
 E: There are problems and -y was used without --force-yes" aptget install -qq -y old
     testequal "WARNING: The following packages cannot be authenticated!
   old
 E: There are problems and -y was used without --force-yes" aptget install -qq -y old
@@ -136,10 +123,7 @@ E: There are problems and -y was used without --force-yes" aptget install -qq -y
     add_new_package
     break_repository_sources_index
 
     add_new_package
     break_repository_sources_index
 
-    testequal "W: Hashsum mismatch $ROOTDIR/var/lib/apt/lists/${APTARCHIVE_LISTS}_dists_unstable_main_source_Sources
-W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease  
-W: Failed to fetch copy:$APTARCHIVE/dists/unstable/main/source/Sources  Hash Sum mismatch
+    testequal "W: Failed to fetch file:$APTARCHIVE/dists/unstable/main/source/Sources  Hash Sum mismatch
 
 E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
 
 
 E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
 
@@ -149,6 +133,34 @@ E: Some index files failed to download. They have been ignored, or old ones used
 E: There are problems and -y was used without --force-yes" aptget install -qq -y old
 }
 
 E: There are problems and -y was used without --force-yes" aptget install -qq -y old
 }
 
+test_inrelease_to_unauth_inrelease() {
+    msgmsg "Test InRelease to InRelease without sig"
+    create_fresh_archive
+    signreleasefiles 'Marvin Paranoid'
+    avoid_ims_hit
+    
+    testequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file: unstable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E8525D47528144E2
+
+W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease  
+
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+    testsuccess ls rootdir/var/lib/apt/lists/*_InRelease
+}
+
+test_inrelease_to_broken_gzip() {
+    msgmsg "Test InRelease to broken gzip"
+    create_fresh_archive
+    # append junk at the end of the gzip, this
+    echo "lala" >> $APTARCHIVE/dists/unstable/main/source/Sources.gz
+    # remove uncompressed file, otherwise apt will just fallback fetching
+    # that
+    rm $APTARCHIVE/dists/unstable/main/source/Sources
+    avoid_ims_hit
+
+    testfailure aptget update
+}
+
 TESTDIR=$(readlink -f $(dirname $0))
 . $TESTDIR/framework
 
 TESTDIR=$(readlink -f $(dirname $0))
 . $TESTDIR/framework
 
@@ -171,10 +183,14 @@ APTARCHIVE_LISTS="$(echo $APTARCHIVE | tr "/" "_" )"
 # going from Release/Release.gpg -> InRelease and vice versa
 # - unauthenticated -> invalid InRelease
 
 # going from Release/Release.gpg -> InRelease and vice versa
 # - unauthenticated -> invalid InRelease
 
+# stuff to do:
+# - ims-hit 
+# - gzip-index tests
+
 test_inrelease_to_new_inrelease
 test_inrelease_to_broken_hash_reverts_all
 test_inrelease_to_new_inrelease
 test_inrelease_to_broken_hash_reverts_all
-
 test_inreleae_to_valid_release
 test_inreleae_to_release_reverts_all
 test_inreleae_to_valid_release
 test_inreleae_to_release_reverts_all
-
-#test_unauthenticated_to_invalid_inrelease
+test_unauthenticated_to_invalid_inrelease
+test_inrelease_to_unauth_inrelease
+test_inrelease_to_broken_gzip