[pkg] Use new MockPaver Hooks.

This replaces usage of the `config_hook`, `config_status_hook`,
`firmware_hook`, and `read_hook` methods of MockPaver with equivalent
calls to the `insert_hook` method introduced in fxrev.dev/448895.

Change-Id: Id9d2651a230cb3b7ad2076ed9f616540700b6931
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/450134
Reviewed-by: Ben Keller <galbanum@google.com>
Testability-Review: Ben Keller <galbanum@google.com>
Commit-Queue: Hunter Freyer <hjfreyer@google.com>
diff --git a/src/sys/pkg/bin/system-updater/src/update/history/version.rs b/src/sys/pkg/bin/system-updater/src/update/history/version.rs
index e443c72..02d534a 100644
--- a/src/sys/pkg/bin/system-updater/src/update/history/version.rs
+++ b/src/sys/pkg/bin/system-updater/src/update/history/version.rs
@@ -246,7 +246,7 @@
         fidl_fuchsia_paver::Configuration,
         fuchsia_pkg_testing::TestUpdatePackage,
         fuchsia_zircon::Vmo,
-        mock_paver::{MockPaverServiceBuilder, PaverEvent},
+        mock_paver::{hooks as mphooks, MockPaverServiceBuilder},
         pretty_assertions::assert_eq,
         std::sync::Arc,
     };
@@ -293,18 +293,13 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .active_config(Configuration::A)
-                .read_hook(|event| match event {
-                    PaverEvent::ReadAsset { configuration, asset } => {
-                        assert_eq!(configuration, &Configuration::A);
-                        match asset {
-                            Asset::Kernel => Ok(vec![0x7a, 0x62, 0x69]),
-                            Asset::VerifiedBootMetadata => {
-                                Ok(vec![0x76, 0x62, 0x6d, 0x65, 0x74, 0x61])
-                            }
-                        }
+                .insert_hook(mphooks::read_asset(|configuration, asset| {
+                    assert_eq!(configuration, Configuration::A);
+                    match asset {
+                        Asset::Kernel => Ok(vec![0x7a, 0x62, 0x69]),
+                        Asset::VerifiedBootMetadata => Ok(vec![0x76, 0x62, 0x6d, 0x65, 0x74, 0x61]),
                     }
-                    _ => panic!("Unexpected event: {:?}", event),
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
diff --git a/src/sys/pkg/bin/system-updater/src/update/paver.rs b/src/sys/pkg/bin/system-updater/src/update/paver.rs
index fe49cfe..8619c78 100644
--- a/src/sys/pkg/bin/system-updater/src/update/paver.rs
+++ b/src/sys/pkg/bin/system-updater/src/update/paver.rs
@@ -511,7 +511,7 @@
         super::*,
         fidl_fuchsia_paver::DataSinkMarker,
         matches::assert_matches,
-        mock_paver::{MockPaverServiceBuilder, PaverEvent},
+        mock_paver::{hooks as mphooks, MockPaverServiceBuilder, PaverEvent},
         std::sync::Arc,
     };
 
@@ -639,7 +639,7 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .current_config(current_config)
-                .config_status_hook(move |_| status)
+                .insert_hook(mphooks::config_status(move |_| Ok(status)))
                 .build(),
         );
         let boot_manager = paver.spawn_boot_manager_service();
@@ -788,10 +788,9 @@
     async fn write_image_buffer_ignores_unsupported_firmware() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .firmware_hook(|event| match event {
-                    PaverEvent::WriteFirmware { .. } => WriteFirmwareResult::Unsupported(true),
-                    _ => panic!("Unexpected event: {:?}", event),
-                })
+                .insert_hook(mphooks::write_firmware(|_, _, _| {
+                    WriteFirmwareResult::Unsupported(true)
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -819,12 +818,9 @@
     async fn write_image_buffer_forwards_other_firmware_errors() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .firmware_hook(|event| match event {
-                    PaverEvent::WriteFirmware { .. } => {
-                        WriteFirmwareResult::Status(Status::INTERNAL.into_raw())
-                    }
-                    _ => panic!("Unexpected event: {:?}", event),
-                })
+                .insert_hook(mphooks::write_firmware(|_, _, _| {
+                    WriteFirmwareResult::Status(Status::INTERNAL.into_raw())
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -910,10 +906,10 @@
     async fn write_image_buffer_write_asset_forwards_errors() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .call_hook(|event| match event {
+                .insert_hook(mphooks::return_error(|event| match event {
                     PaverEvent::WriteAsset { .. } => Status::INTERNAL,
                     _ => panic!("Unexpected event: {:?}", event),
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -1066,7 +1062,7 @@
     use {
         super::*,
         matches::assert_matches,
-        mock_paver::{MockPaverServiceBuilder, PaverEvent},
+        mock_paver::{hooks as mphooks, MockPaverServiceBuilder, PaverEvent},
         std::sync::Arc,
     };
 
@@ -1204,14 +1200,14 @@
     async fn write_image_buffer_forwards_config_a_error() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .call_hook(|event| match event {
+                .insert_hook(mphooks::return_error(|event| match event {
                     PaverEvent::WriteAsset {
                         configuration: Configuration::A,
                         asset: Asset::Kernel,
                         payload: _,
                     } => Status::INTERNAL,
                     _ => Status::OK,
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -1241,14 +1237,14 @@
     async fn write_image_buffer_ignores_config_b_not_supported_error() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .call_hook(|event| match event {
+                .insert_hook(mphooks::return_error(|event| match event {
                     PaverEvent::WriteAsset {
                         configuration: Configuration::B,
                         asset: Asset::Kernel,
                         payload: _,
                     } => Status::NOT_SUPPORTED,
                     _ => Status::OK,
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -1283,14 +1279,10 @@
     async fn write_image_buffer_write_firmware_ignores_unsupported_config_b() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .firmware_hook(|event| match event {
-                    PaverEvent::WriteFirmware {
-                        configuration: Configuration::B,
-                        firmware_type: _,
-                        payload: _,
-                    } => WriteFirmwareResult::Unsupported(true),
+                .insert_hook(mphooks::write_firmware(|configuration, _, _| match configuration {
+                    Configuration::B => WriteFirmwareResult::Unsupported(true),
                     _ => WriteFirmwareResult::Status(Status::OK.into_raw()),
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
@@ -1325,14 +1317,14 @@
     async fn write_image_buffer_forwards_other_config_b_errors() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .call_hook(|event| match event {
+                .insert_hook(mphooks::return_error(|event| match event {
                     PaverEvent::WriteAsset {
                         configuration: Configuration::B,
                         asset: Asset::Kernel,
                         ..
                     } => Status::INTERNAL,
                     _ => Status::OK,
-                })
+                }))
                 .build(),
         );
         let data_sink = paver.spawn_data_sink_service();
diff --git a/src/sys/pkg/lib/isolated-swd/src/omaha.rs b/src/sys/pkg/lib/isolated-swd/src/omaha.rs
index b8e4935..f325447 100644
--- a/src/sys/pkg/lib/isolated-swd/src/omaha.rs
+++ b/src/sys/pkg/lib/isolated-swd/src/omaha.rs
@@ -156,7 +156,7 @@
         fuchsia_component::server::{ServiceFs, ServiceObj},
         fuchsia_pkg_testing::PackageBuilder,
         fuchsia_zircon as zx,
-        mock_paver::PaverEvent,
+        mock_paver::{hooks as mphooks, PaverEvent},
         omaha_client::http_request::mock::MockHttpRequest,
         serde_json::json,
     };
@@ -266,7 +266,7 @@
             .context("Building test_package")?;
         let updater = UpdaterBuilder::new()
             .await
-            .paver(|p| p.call_hook(hook))
+            .paver(|p| p.insert_hook(mphooks::return_error(hook)))
             .repo_url(TEST_REPO_URL)
             .add_package(test_package)
             .add_image("zbi.signed", &data)
diff --git a/src/sys/pkg/lib/system-health-check/src/lib.rs b/src/sys/pkg/lib/system-health-check/src/lib.rs
index 4966fc4..8590227 100644
--- a/src/sys/pkg/lib/system-health-check/src/lib.rs
+++ b/src/sys/pkg/lib/system-health-check/src/lib.rs
@@ -180,7 +180,7 @@
         fuchsia_async as fasync,
         fuchsia_zircon::Status,
         matches::assert_matches,
-        mock_paver::{MockPaverServiceBuilder, PaverEvent},
+        mock_paver::{hooks as mphooks, MockPaverServiceBuilder, PaverEvent},
         std::sync::Arc,
     };
 
@@ -191,7 +191,7 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .current_config(current_config)
-                .config_status_hook(|_| paver::ConfigurationStatus::Healthy)
+                .insert_hook(mphooks::config_status(|_| Ok(paver::ConfigurationStatus::Healthy)))
                 .build(),
         );
         check_and_set_system_health(&paver.spawn_boot_manager_service()).await.unwrap();
@@ -224,7 +224,7 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .current_config(current_config)
-                .config_status_hook(|_| paver::ConfigurationStatus::Pending)
+                .insert_hook(mphooks::config_status(|_| Ok(paver::ConfigurationStatus::Pending)))
                 .build(),
         );
         check_and_set_system_health(&paver.spawn_boot_manager_service()).await.unwrap();
@@ -255,7 +255,7 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .current_config(current_config)
-                .config_status_hook(|_| paver::ConfigurationStatus::Unbootable)
+                .insert_hook(mphooks::config_status(|_| Ok(paver::ConfigurationStatus::Unbootable)))
                 .build(),
         );
         assert_matches!(
@@ -299,7 +299,7 @@
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
                 .current_config(Configuration::Recovery)
-                .config_status_hook(|_| paver::ConfigurationStatus::Healthy)
+                .insert_hook(mphooks::config_status(|_| Ok(paver::ConfigurationStatus::Healthy)))
                 .build(),
         );
         check_and_set_system_health(&paver.spawn_boot_manager_service()).await.unwrap();
@@ -310,10 +310,10 @@
     async fn test_fails_when_set_healthy_fails() {
         let paver = Arc::new(
             MockPaverServiceBuilder::new()
-                .call_hook(|e| match e {
+                .insert_hook(mphooks::return_error(|e| match e {
                     PaverEvent::SetConfigurationHealthy { .. } => Status::OUT_OF_RANGE,
                     _ => Status::OK,
-                })
+                }))
                 .build(),
         );
 
diff --git a/src/sys/pkg/testing/mock-paver/src/lib.rs b/src/sys/pkg/testing/mock-paver/src/lib.rs
index 57f61c3..07a6485 100644
--- a/src/sys/pkg/testing/mock-paver/src/lib.rs
+++ b/src/sys/pkg/testing/mock-paver/src/lib.rs
@@ -331,44 +331,6 @@
         self
     }
 
-    /// TODO: Remove and replace with direct calls to insert_hook.
-    pub fn call_hook<F>(self, call_hook: F) -> Self
-    where
-        F: Fn(&PaverEvent) -> Status + Send + Sync + 'static,
-    {
-        self.insert_hook(hooks::return_error(call_hook))
-    }
-
-    /// TODO: Remove and replace with direct calls to insert_hook.
-    pub fn config_status_hook<F>(self, config_status_hook: F) -> Self
-    where
-        F: Fn(&PaverEvent) -> paver::ConfigurationStatus + Send + Sync + 'static,
-    {
-        self.insert_hook(hooks::config_status(move |configuration| {
-            Ok(config_status_hook(&PaverEvent::QueryConfigurationStatus { configuration }))
-        }))
-    }
-
-    /// TODO: Remove and replace with direct calls to insert_hook.
-    pub fn firmware_hook<F>(self, firmware_hook: F) -> Self
-    where
-        F: Fn(&PaverEvent) -> paver::WriteFirmwareResult + Send + Sync + 'static,
-    {
-        self.insert_hook(hooks::write_firmware(move |configuration, firmware_type, payload| {
-            firmware_hook(&PaverEvent::WriteFirmware { configuration, firmware_type, payload })
-        }))
-    }
-
-    /// TODO: Remove and replace with direct calls to insert_hook.
-    pub fn read_hook<F>(self, read_hook: F) -> Self
-    where
-        F: Fn(&PaverEvent) -> Result<Vec<u8>, Status> + Send + Sync + 'static,
-    {
-        self.insert_hook(hooks::read_asset(move |configuration, asset| {
-            read_hook(&PaverEvent::ReadAsset { configuration, asset })
-        }))
-    }
-
     // Provide a callback which will be called for every paver event.
     // Useful for logging or interaction assertions.
     pub fn event_hook<F>(mut self, event_hook: F) -> Self
diff --git a/src/sys/pkg/tests/isolated-ota/src/lib.rs b/src/sys/pkg/tests/isolated-ota/src/lib.rs
index f7331f3..fb29f2f 100644
--- a/src/sys/pkg/tests/isolated-ota/src/lib.rs
+++ b/src/sys/pkg/tests/isolated-ota/src/lib.rs
@@ -22,7 +22,7 @@
     isolated_ota::{download_and_apply_update, OmahaConfig, UpdateError},
     matches::assert_matches,
     mock_omaha_server::{OmahaResponse, OmahaServer},
-    mock_paver::{MockPaverService, MockPaverServiceBuilder, PaverEvent},
+    mock_paver::{hooks as mphooks, MockPaverService, MockPaverServiceBuilder, PaverEvent},
     serde_json::json,
     std::{
         collections::{BTreeSet, HashMap},
@@ -376,7 +376,7 @@
     };
 
     let env = TestEnvBuilder::new()
-        .paver(|p| p.call_hook(paver_hook))
+        .paver(|p| p.insert_hook(mphooks::return_error(paver_hook)))
         .add_package(test_package)
         .add_image("zbi.signed", "FAIL".as_bytes())
         .add_image("fuchsia.vbmeta", "FAIL".as_bytes())
@@ -610,7 +610,7 @@
         .add_package(package)
         .add_image("zbi.signed", "ZBI".as_bytes())
         .blobfs(ClientEnd::from(client))
-        .paver(|p| p.call_hook(paver_hook))
+        .paver(|p| p.insert_hook(mphooks::return_error(paver_hook)))
         .build()
         .await
         .context("Building TestEnv")?;
diff --git a/src/sys/pkg/tests/omaha-client/src/lib.rs b/src/sys/pkg/tests/omaha-client/src/lib.rs
index 286ffd7..0dc1257 100644
--- a/src/sys/pkg/tests/omaha-client/src/lib.rs
+++ b/src/sys/pkg/tests/omaha-client/src/lib.rs
@@ -32,7 +32,7 @@
     matches::assert_matches,
     mock_installer::MockUpdateInstallerService,
     mock_omaha_server::{OmahaResponse, OmahaServer},
-    mock_paver::{MockPaverService, MockPaverServiceBuilder, PaverEvent},
+    mock_paver::{hooks as mphooks, MockPaverService, MockPaverServiceBuilder, PaverEvent},
     mock_reboot::MockRebootService,
     mock_resolver::MockResolverService,
     parking_lot::Mutex,
@@ -366,10 +366,10 @@
     let paver = MockPaverServiceBuilder::new()
         .current_config(Configuration::B)
         .event_hook(move |e| send.unbounded_send(e.to_owned()).expect("channel stayed open"))
-        .call_hook(move |event| match event {
+        .insert_hook(mphooks::return_error(|event| match event {
             PaverEvent::SetConfigurationHealthy { .. } => Status::INTERNAL,
             _ => Status::OK,
-        })
+        }))
         .build();
     let env = TestEnvBuilder::new().paver(paver).build();
 
diff --git a/src/sys/pkg/tests/system-update-checker/src/lib.rs b/src/sys/pkg/tests/system-update-checker/src/lib.rs
index 3cdd74e..0e7eea1e 100644
--- a/src/sys/pkg/tests/system-update-checker/src/lib.rs
+++ b/src/sys/pkg/tests/system-update-checker/src/lib.rs
@@ -20,7 +20,7 @@
     fuchsia_zircon::Status,
     futures::{channel::mpsc, prelude::*},
     mock_installer::MockUpdateInstallerService,
-    mock_paver::{MockPaverService, MockPaverServiceBuilder, PaverEvent},
+    mock_paver::{hooks as mphooks, MockPaverService, MockPaverServiceBuilder, PaverEvent},
     mock_resolver::MockResolverService,
     std::{fs::File, sync::Arc},
     tempfile::TempDir,
@@ -224,7 +224,9 @@
 #[fasync::run_singlethreaded(test)]
 // Test will hang if system-update-checker does not call paver service
 async fn test_channel_provider_get_current_works_after_paver_service_fails() {
-    let env = TestEnvBuilder::new().paver_init(|p| p.call_hook(|_| Status::INTERNAL)).build();
+    let env = TestEnvBuilder::new()
+        .paver_init(|p| p.insert_hook(mphooks::return_error(|_| Status::INTERNAL)))
+        .build();
 
     assert_eq!(
         env.proxies.paver_events.take(1).collect::<Vec<PaverEvent>>().await,
@@ -240,7 +242,9 @@
 #[fasync::run_singlethreaded(test)]
 // Test will hang if system-update-checker does not call paver service
 async fn test_update_manager_check_now_works_after_paver_service_fails() {
-    let env = TestEnvBuilder::new().paver_init(|p| p.call_hook(|_| Status::INTERNAL)).build();
+    let env = TestEnvBuilder::new()
+        .paver_init(|p| p.insert_hook(mphooks::return_error(|_| Status::INTERNAL)))
+        .build();
 
     assert_eq!(
         env.proxies.paver_events.take(1).collect::<Vec<PaverEvent>>().await,
diff --git a/src/sys/pkg/tests/system-updater/src/channel.rs b/src/sys/pkg/tests/system-updater/src/channel.rs
index 95a6f2c..ba619a6 100644
--- a/src/sys/pkg/tests/system-updater/src/channel.rs
+++ b/src/sys/pkg/tests/system-updater/src/channel.rs
@@ -44,8 +44,9 @@
 
 #[fasync::run_singlethreaded(test)]
 async fn does_not_promote_target_channel_on_failure() {
-    let env =
-        TestEnv::builder().paver_service(|builder| builder.call_hook(|_| Status::INTERNAL)).build();
+    let env = TestEnv::builder()
+        .paver_service(|builder| builder.insert_hook(mphooks::return_error(|_| Status::INTERNAL)))
+        .build();
 
     env.set_target_channel("target-channel");
 
diff --git a/src/sys/pkg/tests/system-updater/src/lib.rs b/src/sys/pkg/tests/system-updater/src/lib.rs
index 2b8e099..7f53cf8 100644
--- a/src/sys/pkg/tests/system-updater/src/lib.rs
+++ b/src/sys/pkg/tests/system-updater/src/lib.rs
@@ -21,7 +21,7 @@
     fuchsia_zircon::Status,
     futures::prelude::*,
     matches::assert_matches,
-    mock_paver::{MockPaverService, MockPaverServiceBuilder, PaverEvent},
+    mock_paver::{hooks as mphooks, MockPaverService, MockPaverServiceBuilder, PaverEvent},
     mock_reboot::MockRebootService,
     mock_resolver::MockResolverService,
     parking_lot::Mutex,
@@ -144,8 +144,6 @@
         let system_updater_builder =
             system_updater_app_builder(&data_path, &build_info_path, &misc_path, mount_data);
 
-        // Set up the paver service to push events to our interactions buffer by overriding
-        // call_hook and firmware_hook.
         let interactions_paver_clone = Arc::clone(&interactions);
         let paver_service = Arc::new(
             paver_service_builder
diff --git a/src/sys/pkg/tests/system-updater/src/writes_firmware.rs b/src/sys/pkg/tests/system-updater/src/writes_firmware.rs
index 7ea855d7..a54db87 100644
--- a/src/sys/pkg/tests/system-updater/src/writes_firmware.rs
+++ b/src/sys/pkg/tests/system-updater/src/writes_firmware.rs
@@ -184,7 +184,9 @@
 async fn skips_unsupported_firmware_type() {
     let env = TestEnv::builder()
         .paver_service(|builder| {
-            builder.firmware_hook(|_| paver::WriteFirmwareResult::Unsupported(true))
+            builder.insert_hook(mphooks::write_firmware(|_, _, _| {
+                paver::WriteFirmwareResult::Unsupported(true)
+            }))
         })
         .build();
 
@@ -241,8 +243,9 @@
 async fn fails_on_firmware_write_error() {
     let env = TestEnv::builder()
         .paver_service(|builder| {
-            builder
-                .firmware_hook(|_| paver::WriteFirmwareResult::Status(Status::INTERNAL.into_raw()))
+            builder.insert_hook(mphooks::write_firmware(|_, _, _| {
+                paver::WriteFirmwareResult::Status(Status::INTERNAL.into_raw())
+            }))
         })
         .build();
 
diff --git a/src/sys/pkg/tests/system-updater/src/writes_images.rs b/src/sys/pkg/tests/system-updater/src/writes_images.rs
index d441674..6c7977b 100644
--- a/src/sys/pkg/tests/system-updater/src/writes_images.rs
+++ b/src/sys/pkg/tests/system-updater/src/writes_images.rs
@@ -34,10 +34,10 @@
 async fn fails_on_image_write_error() {
     let env = TestEnv::builder()
         .paver_service(|builder| {
-            builder.call_hook(|event| match event {
+            builder.insert_hook(mphooks::return_error(|event| match event {
                 PaverEvent::WriteAsset { .. } => Status::INTERNAL,
                 _ => Status::OK,
-            })
+            }))
         })
         .build();
 
@@ -199,7 +199,7 @@
     let env = TestEnv::builder()
         .paver_service(|builder| {
             builder
-                .config_status_hook(|_| paver::ConfigurationStatus::Pending)
+                .insert_hook(mphooks::config_status(|_| Ok(paver::ConfigurationStatus::Pending)))
                 .current_config(current_config)
         })
         .build();
@@ -249,10 +249,10 @@
     let env = TestEnv::builder()
         .paver_service(|builder| {
             builder
-                .call_hook(|event| match event {
+                .insert_hook(mphooks::return_error(|event| match event {
                     PaverEvent::SetConfigurationUnbootable { .. } => Status::INTERNAL,
                     _ => Status::OK,
-                })
+                }))
                 .current_config(current_config)
         })
         .build();