Whitespaces
[tails.git] / features / usb_upgrade.feature
blob8ad2e453ac00940bc22aa29f4837262b9f4b5c63
1 @product
2 Feature: Upgrading an old Tails USB installation
3   As a Tails user
4   If I have an old version of Tails installed on a USB device
5   and the USB device has a Persistent Storage
6   I want to upgrade Tails on it
7   and keep my Persistent Storage in the process
9   # An issue with this feature is that scenarios depend on each
10   # other. When editing this feature, make sure you understand these
11   # dependencies (which are documented below).
13   # Installation method inspired by the usb-install-tails-greeter
14   # checkpoint, variations are using the old Tails USB image and a
15   # different device name ("old" instead of "__internal")
16   #
17   # Boot the system to make sure resizing has happened, and to check
18   # the system is sane (safe access rights, no persistence, etc.); end
19   # with unplugging to get both a clean state and a stopped machine.
20   Scenario: Installing an old version of Tails to a pristine USB drive
21     Given a computer
22     And I create a 7200 MiB disk named "old"
23     And I plug USB drive "old"
24     And I write an old version of the Tails USB image to disk "old"
25     When I start Tails from USB drive "old" with network unplugged
26     Then the boot device has safe access rights
27     And Tails is running from USB drive "old"
28     And there is no persistence partition on USB drive "old"
29     And process "udev-watchdog" is running
30     And udev-watchdog is monitoring the correct device
31     And I unplug USB drive "old"
33   # Depends on scenario: Installing an old version of Tails to a pristine USB drive
34   Scenario: Creating a persistent partition with the old Tails USB installation
35     Given a computer
36     And I start Tails from USB drive "old" with network unplugged and I login
37     Then Tails is running from USB drive "old"
38     And I create a persistent partition
39     And I take note of which tps features are available
40     Then a Tails persistence partition exists on USB drive "old"
41     And I shutdown Tails and wait for the computer to power off
43   # Depends on scenario: Creating a persistent partition with the old Tails USB installation
44   Scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation
45     Given a computer
46     And I start Tails from USB drive "old" with network unplugged and I login with persistence enabled
47     Then Tails is running from USB drive "old"
48     And all tps features are active
49     When I write some files expected to persist
50     # Verify that our baseline for the next scenarios is sane
51     And all persistent filesystems have safe access rights
52     And all persistence configuration files have safe access rights
53     And all persistent directories from the old Tails version have safe access rights
54     And I take note of which tps features are available
55     And I shutdown Tails and wait for the computer to power off
56     # XXX: how does guestfs work vs snapshots?
57     Then only the expected files are present on the persistence partition on USB drive "old"
59   # Depends on scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation
60   Scenario: Upgrading an old Tails USB installation from another Tails USB drive
61     Given I have started Tails without network from a USB drive without a persistent partition and stopped at Tails Greeter's login screen
62     And I log in to a new session
63     And I clone USB drive "old" to a new USB drive "to_upgrade"
64     And I plug USB drive "to_upgrade"
65     When I upgrade Tails to USB drive "to_upgrade" by cloning
66     Then the running Tails is installed on USB drive "to_upgrade"
67     And I unplug USB drive "to_upgrade"
68     And I unplug USB drive "__internal"
70   # Depends on scenario: Upgrading an old Tails USB installation from another Tails USB drive
71   Scenario: Booting Tails from a USB drive upgraded from USB with persistence enabled
72     Given a computer
73     And I start Tails from USB drive "to_upgrade" with network unplugged and I login with persistence enabled
74     Then all tps features from the old Tails version are active
75     And Tails is running from USB drive "to_upgrade"
76     And the boot device has safe access rights
77     And the expected persistent files created with the old Tails version are present in the filesystem
78     And all persistent directories from the old Tails version have safe access rights
80   @automatic_upgrade
81   Scenario: Upgrading an initial Tails installation with an incremental upgrade
82     Given I have started Tails without network from a USB drive with a persistent partition enabled and logged in
83     And no SquashFS delta is installed
84     And Tails is fooled to think that version 6.0~testoverlayfs was initially installed
85     And Tails is fooled to think it is running version 6.0~testoverlayfs
86     And the file system changes introduced in version 6.2~testoverlayfs are not present
87     And the file system changes introduced in version 6.3~testoverlayfs are not present
88     When the network is plugged
89     And Tor is ready
90     Then I am proposed to install an incremental upgrade to version 6.2~testoverlayfs
91     And I can successfully install the incremental upgrade to version 6.2~testoverlayfs
92     Given I shutdown Tails and wait for the computer to power off
93     When I start Tails from USB drive "__internal" with network unplugged and I login with persistence enabled
94     Then Tails is running version 6.2~testoverlayfs
95     And all tps features are active
96     And the file system changes introduced in version 6.2~testoverlayfs are present
97     And only the 6.2~testoverlayfs SquashFS delta is installed
98     # Our IUK sets a release date that can make Tor bootstrapping impossible
99     Given Tails system time is magically synchronized
100     # We'll really install Tails_amd64_6.0~testoverlayfs_to_6.3~testoverlayfs.iuk
101     # but we need some way to force upgrading a second time in a row
102     # even if only the initially installed version is considered
103     And Tails is fooled to think that version 6.1~testoverlayfs was initially installed
104     When the network is plugged
105     And Tor is ready
106     Then I am proposed to install an incremental upgrade to version 6.3~testoverlayfs
107     And I can successfully install the incremental upgrade to version 6.3~testoverlayfs
108     Given I shutdown Tails and wait for the computer to power off
109     When I start Tails from USB drive "__internal" with network unplugged and I login with persistence enabled
110     Then Tails is running version 6.3~testoverlayfs
111     And all tps features are active
112     And the file system changes introduced in version 6.3~testoverlayfs are present
113     And only the 6.3~testoverlayfs SquashFS delta is installed
114     # Regression test for #17425 (i.e. the Upgrader would propose
115     # upgrading to the version that's already running)
116     Given Tails system time is magically synchronized
117     And Tails is fooled to think that version 6.1~testoverlayfs was initially installed
118     When the network is plugged
119     And Tor is ready
120     Then the Upgrader considers the system as up-to-date
121     # Regression test on #8158 (i.e. the IUK's filesystem is not part of the Unsafe Browser's chroot)
122     And I successfully start the Unsafe Browser
123     And the file system changes introduced in version 6.3~testoverlayfs are present in the Unsafe Browser's chroot
125   @automatic_upgrade
126   Scenario: Upgrading a Tails whose signing key is outdated
127     Given I have started Tails without network from a USB drive with a persistent partition enabled and logged in
128     And Tails is fooled to think that version 6.0~testoverlayfs was initially installed
129     And Tails is fooled to think it is running version 6.0~testoverlayfs
130     And the signing key used by the Upgrader is outdated
131     But a current signing key is available on our website
132     When the network is plugged
133     And Tor is ready
134     Then I am proposed to install an incremental upgrade to version 6.2~testoverlayfs