blob: a3cfe3740eee2411b9dd6b1758427c0b3aac7d24 [file] [log] [blame]
// Copyright 2021 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::*,
fidl_fuchsia_update_installer_ext::{PrepareFailureReason, State},
pretty_assertions::assert_eq,
};
/// When epoch.json is in an unexpected format, we should expect to fail with the Internal reason.
#[fasync::run_singlethreaded(test)]
async fn invalid_epoch() {
let env = TestEnv::builder().build();
env.resolver
.register_package("update", "upd4t3")
.add_file("packages.json", make_packages_json([]))
.add_file(
"epoch.json",
json!({
"version": "1",
// -1 is not a valid u64.
"epoch": -1,
})
.to_string(),
);
let mut attempt = env.start_update().await.unwrap();
assert_eq!(attempt.next().await.unwrap().unwrap(), State::Prepare);
assert_eq!(
attempt.next().await.unwrap().unwrap(),
State::FailPrepare(PrepareFailureReason::Internal)
);
}
// When target epoch < current epoch, we should fail with the UnsupportedDowngrade reason.
// Note: at this point, we can't yet integration test unsupported downgrades because the current
// epoch is zero and the target epoch in update package cannot be lower than zero. Once we bump the
// epoch, we can uncomment out this test.
// TODO(fxbug.dev/72117): use this test.
// ########################## BEGIN: CODE INTENTIONALLY COMMENTED OUT ##############################
// #[fasync::run_singlethreaded(test)]
// async fn unsupported_downgrade() {
// 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 - 1));
// let mut attempt = env.start_update().await.unwrap();
// assert_eq!(attempt.next().await.unwrap().unwrap(), State::Prepare);
// assert_eq!(
// attempt.next().await.unwrap().unwrap(),
// State::FailPrepare(PrepareFailureReason::UnsupportedDowngrade)
// );
// }
// ########################## END: CODE INTENTIONALLY COMMENTED OUT ################################