| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| use super::*; |
| |
| #[fasync::run_singlethreaded(test)] |
| async fn promotes_target_channel_as_current_channel() { |
| let env = TestEnv::builder().build(); |
| |
| env.set_target_channel("target-channel"); |
| |
| env.resolver |
| .register_package("update", "upd4t3") |
| .add_file("packages.json", make_packages_json([])) |
| .add_file("epoch.json", make_epoch_json(SOURCE_EPOCH)) |
| .add_file("zbi", "fake zbi"); |
| |
| env.run_update().await.unwrap(); |
| |
| env.verify_current_channel(Some(b"target-channel")); |
| |
| // even if current channel already exists. |
| |
| env.set_target_channel("target-channel-2"); |
| |
| env.run_update().await.unwrap(); |
| |
| env.verify_current_channel(Some(b"target-channel-2")); |
| } |
| |
| #[fasync::run_singlethreaded(test)] |
| async fn succeeds_even_if_target_channel_does_not_exist() { |
| let env = TestEnv::builder().build(); |
| |
| env.resolver |
| .register_package("update", "upd4t3") |
| .add_file("packages.json", make_packages_json([])) |
| .add_file("epoch.json", make_epoch_json(SOURCE_EPOCH)) |
| .add_file("zbi", "fake zbi"); |
| |
| env.run_update().await.unwrap(); |
| |
| env.verify_current_channel(None); |
| } |
| |
| #[fasync::run_singlethreaded(test)] |
| async fn does_not_promote_target_channel_on_failure() { |
| let env = TestEnv::builder() |
| .paver_service(|builder| builder.insert_hook(mphooks::return_error(|_| Status::INTERNAL))) |
| .build(); |
| |
| env.set_target_channel("target-channel"); |
| |
| env.resolver |
| .register_package("update", "upd4t3") |
| .add_file("packages.json", make_packages_json([])) |
| .add_file("zbi", "fake zbi"); |
| |
| let result = env.run_update().await; |
| assert!(result.is_err(), "system updater succeeded when it should fail"); |
| |
| env.verify_current_channel(None); |
| } |