From da080c472fc415b0ce918f4dd4a1ab143bb1bca4 Mon Sep 17 00:00:00 2001 From: Philip Hands Date: Mon, 14 Mar 2016 15:36:16 +0100 Subject: rough attempt to grab the good cucumber bits from recent tails --- features/usb_upgrade.feature | 164 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 features/usb_upgrade.feature (limited to 'features/usb_upgrade.feature') diff --git a/features/usb_upgrade.feature b/features/usb_upgrade.feature new file mode 100644 index 00000000..7462489a --- /dev/null +++ b/features/usb_upgrade.feature @@ -0,0 +1,164 @@ +#10720: Tails Installer freezes on Jenkins +@product @fragile +Feature: Upgrading an old Tails USB installation + As a Tails user + If I have an old versoin of Tails installed on a USB device + and the USB device has a persistent partition + I want to upgrade Tails on it + and keep my persistent partition in the process + + # An issue with this feature is that scenarios depend on each + # other. When editing this feature, make sure you understand these + # dependencies (which are documented below). + + Scenario: Try to "Upgrade from ISO" Tails to a pristine USB drive + Given a computer + And I setup a filesystem share containing the Tails ISO + And I start Tails from DVD with network unplugged and I login + And I temporarily create a 4 GiB disk named "pristine" + And I plug USB drive "pristine" + And I start Tails Installer in "Upgrade from ISO" mode + Then a suitable USB device is not found + And I am told that the destination device cannot be upgraded + + Scenario: Try to "Clone & Upgrade" Tails to a pristine USB drive + Given I have started Tails from DVD without network and logged in + And I temporarily create a 4 GiB disk named "pristine" + And I plug USB drive "pristine" + And I start Tails Installer in "Clone & Upgrade" mode + Then a suitable USB device is not found + And I am told that the destination device cannot be upgraded + + Scenario: Try to "Upgrade from ISO" Tails to a USB drive with GPT and a FAT partition + Given a computer + And I setup a filesystem share containing the Tails ISO + And I start Tails from DVD with network unplugged and I login + And I temporarily create a 4 GiB disk named "gptfat" + And I create a gpt partition with a vfat filesystem on disk "gptfat" + And I plug USB drive "gptfat" + And I start Tails Installer in "Upgrade from ISO" mode + Then a suitable USB device is not found + And I am told that the destination device cannot be upgraded + + Scenario: Try to "Clone & Upgrade" Tails to a USB drive with GPT and a FAT partition + Given I have started Tails from DVD without network and logged in + And I temporarily create a 4 GiB disk named "gptfat" + And I create a gpt partition with a vfat filesystem on disk "gptfat" + And I plug USB drive "gptfat" + And I start Tails Installer in "Upgrade from ISO" mode + Then a suitable USB device is not found + And I am told that the destination device cannot be upgraded + + Scenario: Installing an old version of Tails to a pristine USB drive + Given a computer + And the computer is set to boot from the old Tails DVD + And the network is unplugged + And I start the computer + When the computer boots Tails + And I log in to a new session + And the Tails desktop is ready + And all notifications have disappeared + And I create a 4 GiB disk named "old" + And I plug USB drive "old" + And I "Clone & Install" Tails to USB drive "old" + Then the running Tails is installed on USB drive "old" + But there is no persistence partition on USB drive "old" + And I unplug USB drive "old" + + # Depends on scenario: Installing an old version of Tails to a pristine USB drive + Scenario: Creating a persistent partition with the old Tails USB installation + Given a computer + And I start Tails from USB drive "old" with network unplugged and I login + Then Tails is running from USB drive "old" + And I create a persistent partition + And I take note of which persistence presets are available + Then a Tails persistence partition exists on USB drive "old" + And I shutdown Tails and wait for the computer to power off + + # Depends on scenario: Creating a persistent partition with the old Tails USB installation + Scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation + Given a computer + And I start Tails from USB drive "old" with network unplugged and I login with persistence enabled + Then Tails is running from USB drive "old" + And all persistence presets are enabled + And I write some files expected to persist + And all persistent filesystems have safe access rights + And all persistence configuration files have safe access rights + And all persistent directories from the old Tails version have safe access rights + And I take note of which persistence presets are available + And I shutdown Tails and wait for the computer to power off + # XXX: how does guestfs work vs snapshots? + Then only the expected files are present on the persistence partition on USB drive "old" + + # Depends on scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation + Scenario: Upgrading an old Tails USB installation from a Tails DVD + Given I have started Tails from DVD without network and logged in + And I clone USB drive "old" to a new USB drive "to_upgrade" + And I plug USB drive "to_upgrade" + When I "Clone & Upgrade" Tails to USB drive "to_upgrade" + Then the running Tails is installed on USB drive "to_upgrade" + And I unplug USB drive "to_upgrade" + + # Depends on scenario: Upgrading an old Tails USB installation from a Tails DVD + Scenario: Booting Tails from a USB drive upgraded from DVD with persistence enabled + Given a computer + And I start Tails from USB drive "to_upgrade" with network unplugged and I login with persistence enabled + Then all persistence presets from the old Tails version are enabled + And Tails is running from USB drive "to_upgrade" + And the boot device has safe access rights + And the expected persistent files created with the old Tails version are present in the filesystem + And all persistent directories from the old Tails version have safe access rights + + # Depends on scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation + Scenario: Upgrading an old Tails USB installation from another Tails USB drive + Given I have started Tails without network from a USB drive without a persistent partition and stopped at Tails Greeter's login screen + And I log in to a new session + And Tails seems to have booted normally + And I clone USB drive "old" to a new USB drive "to_upgrade" + And I plug USB drive "to_upgrade" + When I "Clone & Upgrade" Tails to USB drive "to_upgrade" + Then the running Tails is installed on USB drive "to_upgrade" + And I unplug USB drive "to_upgrade" + And I unplug USB drive "__internal" + + # Depends on scenario: Upgrading an old Tails USB installation from another Tails USB drive + Scenario: Booting Tails from a USB drive upgraded from USB with persistence enabled + Given a computer + And I start Tails from USB drive "to_upgrade" with network unplugged and I login with persistence enabled + Then all persistence presets from the old Tails version are enabled + And Tails is running from USB drive "to_upgrade" + And the boot device has safe access rights + And the expected persistent files created with the old Tails version are present in the filesystem + And all persistent directories from the old Tails version have safe access rights + + # Depends on scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation + Scenario: Upgrading an old Tails USB installation from an ISO image, running on the old version + Given a computer + And I clone USB drive "old" to a new USB drive "to_upgrade" + And I setup a filesystem share containing the Tails ISO + When I start Tails from USB drive "old" with network unplugged and I login + And I plug USB drive "to_upgrade" + And I do a "Upgrade from ISO" on USB drive "to_upgrade" + Then the ISO's Tails is installed on USB drive "to_upgrade" + And I unplug USB drive "to_upgrade" + + # Depends on scenario: Writing files to a read/write-enabled persistent partition with the old Tails USB installation + Scenario: Upgrading an old Tails USB installation from an ISO image, running on the new version + Given a computer + And I clone USB drive "old" to a new USB drive "to_upgrade" + And I setup a filesystem share containing the Tails ISO + And I start Tails from DVD with network unplugged and I login + And I plug USB drive "to_upgrade" + And I do a "Upgrade from ISO" on USB drive "to_upgrade" + Then the ISO's Tails is installed on USB drive "to_upgrade" + And I unplug USB drive "to_upgrade" + + # Depends on scenario: Upgrading an old Tails USB installation from an ISO image, running on the new version + Scenario: Booting a USB drive upgraded from ISO with persistence enabled + Given a computer + And I start Tails from USB drive "to_upgrade" with network unplugged and I login with persistence enabled + Then all persistence presets from the old Tails version are enabled + And Tails is running from USB drive "to_upgrade" + And the boot device has safe access rights + And the expected persistent files created with the old Tails version are present in the filesystem + And all persistent directories from the old Tails version have safe access rights -- cgit v1.2.3-70-g09d2