Add direct serials file database checks to timestamp ratchet tests
authorJacob Bachmeyer <jcb@gnu.org>
Fri, 28 Apr 2023 23:30:25 +0000 (18:30 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Fri, 28 Apr 2023 23:30:25 +0000 (18:30 -0500)
testsuite/gatekeeper.all/11_ratchet.exp

index 899aac83357e6342e08f0595ede6e5b15e2cc0b7..bd2912f9b767ae3b9b10a577c2cbfcc3f10cc7a1 100644 (file)
@@ -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 {