#!/bin/bash
# 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.

### Test fx flash

BT_FILE_DEPS=(
  "scripts/fx"
  "tools/devshell/flash"
  "tools/devshell/lib/fx-cmd-locator.sh"
  "tools/devshell/lib/fx-flash.sh"
  "tools/devshell/lib/fx-optional-features.sh"
  "tools/devshell/lib/image_build_vars.sh"
  "tools/devshell/lib/platform.sh"
  "tools/devshell/lib/vars.sh"
)

declare fx fastboot_mock flash_script

BT_SET_UP() {
  source "${BT_TEMP_DIR}/tools/devshell/lib/vars.sh"
  source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh"
  fx="$(btf::setup_fx)"
  flash_script="${BT_TEMP_DIR}/out/default/flash.sh"

  btf::make_mock "$flash_script"
  btf::make_mock "${BT_TEMP_DIR}/out/default/image_paths.sh"
  btf::make_mock "${BT_TEMP_DIR}/tools/devshell/list-build-artifacts"

  btf::make_installed_hosttools_mock "device-finder" >/dev/null

  fastboot_mock="$(btf::make_mock_binary "fastboot")"

  echo '[[ "$4" == "fastboot" ]] && echo ' "${fastboot_mock}" \
    > "${BT_TEMP_DIR}/tools/devshell/list-build-artifacts.mock_side_effects"
}

TEST_fx_flash_ssh() {
  cat >"${fastboot_mock}.mock_side_effects" <<INPUT
if [[ "\$1" == "devices" ]]; then
  echo "97300YCABZZ5AA	fastboot"
fi
INPUT
  BT_EXPECT ${fx} flash
  source "${flash_script}.mock_state"
  BT_EXPECT [[ "${BT_MOCK_ARGS[1]}" == "--ssh-key="*".ssh/fuchsia_authorized_keys" ]]
}

TEST_fx_flash_ssh_falls_back_to_recovery_if_not_exist() {
  # Remove the ssh key file
  rm "${BT_TEMP_DIR}/.ssh/fuchsia_authorized_keys"
  cat >"${fastboot_mock}.mock_side_effects" <<INPUT
if [[ "\$1" == "devices" ]]; then
  echo "97300YCABZZ5AA	fastboot"
fi
INPUT
  BT_EXPECT ${fx} flash 2>/dev/null
  source "${flash_script}.mock_state"
  btf::expect-mock-args "${flash_script}" --recovery
}

TEST_fx_flash_with_serial() {
  BT_EXPECT ${fx} flash -s 12345
  source "${flash_script}.mock_state"
  btf::expect-mock-args "${flash_script}" \
    "--ssh-key=${BT_TEMP_DIR}/.ssh/fuchsia_authorized_keys" \
    -s 12345
}

BT_RUN_TESTS "$@"
