From: Jacob Bachmeyer Date: Fri, 28 Apr 2023 23:30:25 +0000 (-0500) Subject: Add direct serials file database checks to timestamp ratchet tests X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=855bade8fe05cf197b391c7b3ce412642a571f48;p=gatekeeper.git Add direct serials file database checks to timestamp ratchet tests --- diff --git a/testsuite/gatekeeper.all/11_ratchet.exp b/testsuite/gatekeeper.all/11_ratchet.exp index 899aac8..bd2912f 100644 --- a/testsuite/gatekeeper.all/11_ratchet.exp +++ b/testsuite/gatekeeper.all/11_ratchet.exp @@ -1,6 +1,6 @@ # Tests for timestamp ratchet -# Copyright (C) 2022 Jacob Bachmeyer +# Copyright (C) 2022, 2023 Jacob Bachmeyer # # This file is part of a testsuite for the GNU FTP upload system. # @@ -30,6 +30,7 @@ proc check_ratchet_handling { desc args } { register_test_packages $tenv $setup(packages) + array set serials {} foreach {zone filelist} $setup(files) { foreach {file sig} $filelist { file mkdir [file dirname [file join $tenv $zone $file]] @@ -40,6 +41,8 @@ proc check_ratchet_handling { desc args } { [sign_test_file [file tail $file] \ [eval [list make_test_signature] $sig]] age_file [file join $tenv $zone "${file}.sig"] "10 minutes ago" + set serials($file,name) $file + set serials($file,timestamp) "20 minutes ago" } } } @@ -50,13 +53,19 @@ proc check_ratchet_handling { desc args } { verbose -log [exec ln -sv $target [file join $tenv $zone $link]] } } + set serials_list [list] + foreach {key value} [array get serials *,name] { + lappend serials_list \ + [list $serials($key) $serials($serials($key),timestamp)] + } + write_serials_v0 [file join $tenv state serials] $serials_list foreach {round} $data(rounds) { array set step { upload {} check {} } array set step $round array set check { - email-to {} log {} file-tree {} + email-to {} log {} file-tree {} serials unchanged } array set check $step(check) @@ -67,7 +76,7 @@ proc check_ratchet_handling { desc args } { if { [llength $check(log)] > 0 } { append log_items $check(log) } foreach {tag case} $step(upload) { - make_test_case $tenv [list $tag $case] + make_test_case $tenv [list $tag $case] serials } start_test_services $tenv @@ -82,6 +91,17 @@ proc check_ratchet_handling { desc args } { $zones $mode $items } } + + if { $check(serials) eq "updated" } { + # only expect serials file to change if so indicated + set serials_list [list] + foreach {key value} [array get serials *,name] { + lappend serials_list \ + [list $serials($key) $serials($serials($key),timestamp)] + } + } + check_serials_v0 "ratchet:: $desc" \ + [file join $tenv state serials] $serials_list } close_test_environment $tenv @@ -108,6 +128,7 @@ check_ratchet_handling "simple replay of new upload" setup { file { test } fsig { good 01 1000 "Oct 20 18:50:42 CDT 2022" } } } check { + serials updated file-tree { { inbox scratch stage archive } empty {} { pub } files { @@ -173,6 +194,7 @@ check_ratchet_handling "replace new upload" setup { file { test } fsig { good 01 1000 "Oct 20 18:50:42 CDT 2022" } } } check { + serials updated file-tree { { inbox scratch stage archive } empty {} { pub } files { @@ -199,6 +221,7 @@ check_ratchet_handling "replace new upload" setup { file { test } fsig { good 03 1000 "Oct 20 18:52:42 CDT 2022" } } } check { + serials updated file-tree { { inbox scratch stage } empty {} { archive } archived-files { @@ -239,6 +262,7 @@ check_ratchet_handling "replay replaced upload" setup { file { test } fsig { good 01 1000 "Oct 20 18:50:42 CDT 2022" } } } check { + serials updated file-tree { { inbox scratch stage archive } empty {} { pub } files { @@ -265,6 +289,7 @@ check_ratchet_handling "replay replaced upload" setup { file { test } fsig { good 03 1000 "Oct 20 18:52:42 CDT 2022" } } } check { + serials updated file-tree { { inbox scratch stage } empty {} { archive } archived-files {