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
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
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
- 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() {
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
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
- 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
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: 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
# 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_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