diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index 705cd5d059..54326ede83 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -40,7 +40,7 @@ LANGUAGE = "english" STRENGTH = 128 -def for_all(*args, minimum_version=(1, 0, 0)): +def for_all(*args, legacy_minimum_version=(1, 0, 0), core_minimum_version=(2, 0, 0)): if not args: args = ("core", "legacy") @@ -49,6 +49,13 @@ def for_all(*args, minimum_version=(1, 0, 0)): all_params = [] for gen in args: + if gen == "legacy": + minimum_version = legacy_minimum_version + elif gen == "core": + minimum_version = core_minimum_version + else: + raise ValueError + if gen not in enabled_gens: continue try: @@ -164,7 +171,7 @@ def test_upgrade_reset_skip_backup(gen, from_tag, to_tag): assert btc.get_address(emu.client, "Bitcoin", PATH) == address -@for_all(minimum_version=(1, 7, 2)) +@for_all(legacy_minimum_version=(1, 7, 2)) def test_upgrade_reset_no_backup(gen, from_tag, to_tag): def asserts(tag, client): assert not client.features.pin_protection @@ -199,7 +206,7 @@ def test_upgrade_reset_no_backup(gen, from_tag, to_tag): # Although Shamir was introduced in 2.1.2 already, the debug instrumentation was not present until 2.1.9. -@for_all("core", minimum_version=(2, 1, 9)) +@for_all("core", core_minimum_version=(2, 1, 9)) def test_upgrade_shamir_recovery(gen, from_tag, to_tag): with EmulatorWrapper(gen, from_tag) as emu, BackgroundDeviceHandler( emu.client @@ -240,6 +247,24 @@ def test_upgrade_shamir_recovery(gen, from_tag, to_tag): device_handler.check_finalize() +@for_all(legacy_minimum_version=(1, 8, 4), core_minimum_version=(2, 1, 9)) +def test_upgrade_u2f(gen, from_tag, to_tag): + """ + Check U2F counter stayed the same after an upgrade. + """ + with EmulatorWrapper(gen, from_tag) as emu: + success = device.set_u2f_counter(emu.client, 10) + assert "U2F counter set" in success + + counter = device.get_next_u2f_counter(emu.client) + assert counter == 11 + storage = emu.storage() + + with EmulatorWrapper(gen, to_tag, storage=storage) as emu: + counter = device.get_next_u2f_counter(emu.client) + assert counter == 12 + + if __name__ == "__main__": if not ALL_TAGS: print("No versions found. Remember to run download_emulators.sh")