# 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.
#
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]]
[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"
}
}
}
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)
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
$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
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 {
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 {
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 {
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 {
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 {