From 485ab31f2254ee2bfb9095673c6411c818f67344 Mon Sep 17 00:00:00 2001 From: Patrick McCarty Date: Wed, 23 Aug 2017 14:45:38 -0700 Subject: [PATCH] Add functional tests for verify format mismatch and override Signed-off-by: Patrick McCarty --- Makefile.am | 2 + .../format-mismatch-override/lines-checked | 16 +++++++ .../target-dir/usr/lib/os-release | 1 + .../verify/format-mismatch-override/test.bats | 43 +++++++++++++++++++ .../web-dir/10/Manifest.MoM | 8 ++++ .../web-dir/10/Manifest.os-core | 8 ++++ .../.gitignore | 4 ++ .../web-dir/20/Manifest.MoM | 8 ++++ .../web-dir/20/Manifest.os-core | 8 ++++ .../.gitignore | 4 ++ .../web-dir/version/format1/latest | 1 + .../web-dir/version/format2/latest | 1 + .../verify/format-mismatch/lines-checked | 5 +++ .../target-dir/usr/lib/os-release | 1 + .../verify/format-mismatch/test.bats | 42 ++++++++++++++++++ .../format-mismatch/web-dir/10/Manifest.MoM | 8 ++++ .../web-dir/10/Manifest.os-core | 8 ++++ .../.gitignore | 4 ++ .../format-mismatch/web-dir/20/Manifest.MoM | 8 ++++ .../web-dir/20/Manifest.os-core | 8 ++++ .../.gitignore | 4 ++ .../web-dir/version/format1/latest | 1 + .../web-dir/version/format2/latest | 1 + 23 files changed, 194 insertions(+) create mode 100644 test/functional/verify/format-mismatch-override/lines-checked create mode 100644 test/functional/verify/format-mismatch-override/target-dir/usr/lib/os-release create mode 100755 test/functional/verify/format-mismatch-override/test.bats create mode 100644 test/functional/verify/format-mismatch-override/web-dir/10/Manifest.MoM create mode 100644 test/functional/verify/format-mismatch-override/web-dir/10/Manifest.os-core create mode 100644 test/functional/verify/format-mismatch-override/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore create mode 100644 test/functional/verify/format-mismatch-override/web-dir/20/Manifest.MoM create mode 100644 test/functional/verify/format-mismatch-override/web-dir/20/Manifest.os-core create mode 100644 test/functional/verify/format-mismatch-override/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore create mode 100644 test/functional/verify/format-mismatch-override/web-dir/version/format1/latest create mode 100644 test/functional/verify/format-mismatch-override/web-dir/version/format2/latest create mode 100644 test/functional/verify/format-mismatch/lines-checked create mode 100644 test/functional/verify/format-mismatch/target-dir/usr/lib/os-release create mode 100755 test/functional/verify/format-mismatch/test.bats create mode 100644 test/functional/verify/format-mismatch/web-dir/10/Manifest.MoM create mode 100644 test/functional/verify/format-mismatch/web-dir/10/Manifest.os-core create mode 100644 test/functional/verify/format-mismatch/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore create mode 100644 test/functional/verify/format-mismatch/web-dir/20/Manifest.MoM create mode 100644 test/functional/verify/format-mismatch/web-dir/20/Manifest.os-core create mode 100644 test/functional/verify/format-mismatch/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore create mode 100644 test/functional/verify/format-mismatch/web-dir/version/format1/latest create mode 100644 test/functional/verify/format-mismatch/web-dir/version/format2/latest diff --git a/Makefile.am b/Makefile.am index 17f1495d..627033cf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -194,6 +194,8 @@ dist_check_SCRIPTS = \ test/functional/verify/check-missing-directory/test.bats \ test/functional/verify/directory-tree-deleted/test.bats \ test/functional/verify/empty-dir-deleted/test.bats \ + test/functional/verify/format-mismatch/test.bats \ + test/functional/verify/format-mismatch-override/test.bats \ test/functional/verify/install-directory/test.bats \ test/functional/verify/install-latest-directory/test.bats \ test/functional/verify/latest-missing/test.bats diff --git a/test/functional/verify/format-mismatch-override/lines-checked b/test/functional/verify/format-mismatch-override/lines-checked new file mode 100644 index 00000000..abf86ad0 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/lines-checked @@ -0,0 +1,16 @@ +Verifying version 20 +Attempting to download version string to memory +WARNING: the force option is specified; ignoring format mismatch for verify +Starting download of remaining update content. This may take a while... +File /usr/bin was not in a pack +Finishing download of update content... +Adding any missing files +REGEXP:^Missing file: .+/target-dir/usr/bin$ + fixed +Fixing modified files +Inspected 1 files + 1 files were missing + 1 of 1 missing files were replaced + 0 of 1 missing files were not replaced + 0 files found which should be deleted +Fix successful diff --git a/test/functional/verify/format-mismatch-override/target-dir/usr/lib/os-release b/test/functional/verify/format-mismatch-override/target-dir/usr/lib/os-release new file mode 100644 index 00000000..b01f31ec --- /dev/null +++ b/test/functional/verify/format-mismatch-override/target-dir/usr/lib/os-release @@ -0,0 +1 @@ +VERSION_ID=10 diff --git a/test/functional/verify/format-mismatch-override/test.bats b/test/functional/verify/format-mismatch-override/test.bats new file mode 100755 index 00000000..33d2e303 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/test.bats @@ -0,0 +1,43 @@ +#!/usr/bin/env bats + +load "../../swupdlib" + +targetfile=6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e + +setup() { + clean_test_dir + + create_manifest_tar 10 MoM + sign_manifest_mom 10 + create_manifest_tar 10 os-core + create_fullfile_tar 10 $targetfile + + create_manifest_tar 20 MoM + sign_manifest_mom 20 + create_manifest_tar 20 os-core + create_fullfile_tar 20 $targetfile +} + +teardown() { + clean_tars 10 + clean_tars 10 files + + clean_tars 20 + clean_tars 20 files + + revert_chown_root "$DIR/web-dir/10/files/$targetfile" + revert_chown_root "$DIR/web-dir/20/files/$targetfile" + + # test should succeed and therefore install this dir + sudo rmdir "$DIR/target-dir/usr/bin/" +} + +@test "verify format mismatch override" { + # the -x option bypasses the fatal error + run sudo sh -c "$SWUPD verify --fix -F 1 -m 20 -x $SWUPD_OPTS_NO_FMT" + + [ $status -eq 0 ] + check_lines "$output" +} + +# vi: ft=sh ts=8 sw=2 sts=2 et tw=80 diff --git a/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.MoM b/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.MoM new file mode 100644 index 00000000..914615dc --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.MoM @@ -0,0 +1,8 @@ +MANIFEST 1 +version: 10 +previous: 0 +filecount: 1 +timestamp: 1451940175 +contentsize: 13805671819 + +M... 15d53310ea1d80c7d0045b76081f5334afb99e53efd81579e07ef869b7ab790e 10 os-core diff --git a/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.os-core b/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.os-core new file mode 100644 index 00000000..1043b2a6 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/10/Manifest.os-core @@ -0,0 +1,8 @@ +MANIFEST 1 +version: 10 +previous: 0 +filecount: 1 +timestamp: 1451936779 +contentsize: 17929151 + +D... 6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e 10 /usr/bin diff --git a/test/functional/verify/format-mismatch-override/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore b/test/functional/verify/format-mismatch-override/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.MoM b/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.MoM new file mode 100644 index 00000000..3915fc53 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.MoM @@ -0,0 +1,8 @@ +MANIFEST 2 +version: 20 +previous: 10 +filecount: 1 +timestamp: 1451940175 +contentsize: 13805671819 + +M... 3ba369029c1bbfd5888d090e107ce0f5cd7ed074143e466c171ca16064532dcc 20 os-core diff --git a/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.os-core b/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.os-core new file mode 100644 index 00000000..3e305184 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/20/Manifest.os-core @@ -0,0 +1,8 @@ +MANIFEST 2 +version: 20 +previous: 10 +filecount: 1 +timestamp: 1451936779 +contentsize: 17929151 + +D... 6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e 20 /usr/bin diff --git a/test/functional/verify/format-mismatch-override/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore b/test/functional/verify/format-mismatch-override/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/test/functional/verify/format-mismatch-override/web-dir/version/format1/latest b/test/functional/verify/format-mismatch-override/web-dir/version/format1/latest new file mode 100644 index 00000000..f599e28b --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/version/format1/latest @@ -0,0 +1 @@ +10 diff --git a/test/functional/verify/format-mismatch-override/web-dir/version/format2/latest b/test/functional/verify/format-mismatch-override/web-dir/version/format2/latest new file mode 100644 index 00000000..209e3ef4 --- /dev/null +++ b/test/functional/verify/format-mismatch-override/web-dir/version/format2/latest @@ -0,0 +1 @@ +20 diff --git a/test/functional/verify/format-mismatch/lines-checked b/test/functional/verify/format-mismatch/lines-checked new file mode 100644 index 00000000..c641acee --- /dev/null +++ b/test/functional/verify/format-mismatch/lines-checked @@ -0,0 +1,5 @@ +Verifying version 20 +Attempting to download version string to memory +ERROR: Mismatching formats detected when verifying 20 (expected: 1; actual: 2) +Latest supported version to verify: 10 +Error: Fix did not fully succeed diff --git a/test/functional/verify/format-mismatch/target-dir/usr/lib/os-release b/test/functional/verify/format-mismatch/target-dir/usr/lib/os-release new file mode 100644 index 00000000..b01f31ec --- /dev/null +++ b/test/functional/verify/format-mismatch/target-dir/usr/lib/os-release @@ -0,0 +1 @@ +VERSION_ID=10 diff --git a/test/functional/verify/format-mismatch/test.bats b/test/functional/verify/format-mismatch/test.bats new file mode 100755 index 00000000..cad5c893 --- /dev/null +++ b/test/functional/verify/format-mismatch/test.bats @@ -0,0 +1,42 @@ +#!/usr/bin/env bats + +load "../../swupdlib" + +targetfile=6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e + +setup() { + clean_test_dir + + create_manifest_tar 10 MoM + sign_manifest_mom 10 + create_manifest_tar 10 os-core + create_fullfile_tar 10 $targetfile + + create_manifest_tar 20 MoM + sign_manifest_mom 20 + create_manifest_tar 20 os-core + create_fullfile_tar 20 $targetfile +} + +teardown() { + clean_tars 10 + clean_tars 10 files + + clean_tars 20 + clean_tars 20 files + + revert_chown_root "$DIR/web-dir/10/files/$targetfile" + revert_chown_root "$DIR/web-dir/20/files/$targetfile" + + #sudo rmdir "$DIR/target-dir/usr/bin/" +} + +@test "verify format mismatch enforcement" { + run sudo sh -c "$SWUPD verify --fix -F 1 -m 20 $SWUPD_OPTS_NO_FMT" + + # 14 = EMANIFEST_LOAD + [ $status -eq 14 ] + check_lines "$output" +} + +# vi: ft=sh ts=8 sw=2 sts=2 et tw=80 diff --git a/test/functional/verify/format-mismatch/web-dir/10/Manifest.MoM b/test/functional/verify/format-mismatch/web-dir/10/Manifest.MoM new file mode 100644 index 00000000..914615dc --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/10/Manifest.MoM @@ -0,0 +1,8 @@ +MANIFEST 1 +version: 10 +previous: 0 +filecount: 1 +timestamp: 1451940175 +contentsize: 13805671819 + +M... 15d53310ea1d80c7d0045b76081f5334afb99e53efd81579e07ef869b7ab790e 10 os-core diff --git a/test/functional/verify/format-mismatch/web-dir/10/Manifest.os-core b/test/functional/verify/format-mismatch/web-dir/10/Manifest.os-core new file mode 100644 index 00000000..1043b2a6 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/10/Manifest.os-core @@ -0,0 +1,8 @@ +MANIFEST 1 +version: 10 +previous: 0 +filecount: 1 +timestamp: 1451936779 +contentsize: 17929151 + +D... 6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e 10 /usr/bin diff --git a/test/functional/verify/format-mismatch/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore b/test/functional/verify/format-mismatch/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/10/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/test/functional/verify/format-mismatch/web-dir/20/Manifest.MoM b/test/functional/verify/format-mismatch/web-dir/20/Manifest.MoM new file mode 100644 index 00000000..3915fc53 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/20/Manifest.MoM @@ -0,0 +1,8 @@ +MANIFEST 2 +version: 20 +previous: 10 +filecount: 1 +timestamp: 1451940175 +contentsize: 13805671819 + +M... 3ba369029c1bbfd5888d090e107ce0f5cd7ed074143e466c171ca16064532dcc 20 os-core diff --git a/test/functional/verify/format-mismatch/web-dir/20/Manifest.os-core b/test/functional/verify/format-mismatch/web-dir/20/Manifest.os-core new file mode 100644 index 00000000..3e305184 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/20/Manifest.os-core @@ -0,0 +1,8 @@ +MANIFEST 2 +version: 20 +previous: 10 +filecount: 1 +timestamp: 1451936779 +contentsize: 17929151 + +D... 6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e 20 /usr/bin diff --git a/test/functional/verify/format-mismatch/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore b/test/functional/verify/format-mismatch/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/20/files/6c27df6efcd6fc401ff1bc67c970b83eef115f6473db4fb9d57e5de317eba96e/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/test/functional/verify/format-mismatch/web-dir/version/format1/latest b/test/functional/verify/format-mismatch/web-dir/version/format1/latest new file mode 100644 index 00000000..f599e28b --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/version/format1/latest @@ -0,0 +1 @@ +10 diff --git a/test/functional/verify/format-mismatch/web-dir/version/format2/latest b/test/functional/verify/format-mismatch/web-dir/version/format2/latest new file mode 100644 index 00000000..209e3ef4 --- /dev/null +++ b/test/functional/verify/format-mismatch/web-dir/version/format2/latest @@ -0,0 +1 @@ +20