# 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.

import("//build/components.gni")
import("//build/rust/rustc_test.gni")

rustc_test("driver") {
  name = "password_authenticator_integration_test"
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.device:fuchsia.device-rustc",
    "//sdk/fidl/fuchsia.driver.test:fuchsia.driver.test-rustc",
    "//sdk/fidl/fuchsia.hardware.block.encrypted:fuchsia.hardware.block.encrypted-rustc",
    "//sdk/fidl/fuchsia.hardware.block.partition:fuchsia.hardware.block.partition-rustc",
    "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume-rustc",
    "//sdk/fidl/fuchsia.identity.account:fuchsia.identity.account-rustc",
    "//sdk/fidl/fuchsia.identity.credential:fuchsia.identity.credential-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.tpm.cr50:fuchsia.tpm.cr50-rustc",
    "//sdk/lib/driver_test_realm/realm_builder/rust",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-component-test",
    "//src/lib/fuchsia-fs",
    "//src/lib/storage/ramdevice_client",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/storage/testing/rust:storage-isolated-driver-manager",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
  ]

  source_root = "src/account_manager.rs"
  sources = [
    "src/account_manager.rs",
    "src/mock_cr50_agent.rs",
    "src/pinweaver.rs",
    "src/scrypt.rs",
  ]

  # For fvm_init()
  non_rust_deps = [ "//src/lib/storage/fs_management/c" ]
}

fuchsia_component("password-authenticator-integration-test") {
  testonly = true
  manifest = "meta/password-authenticator-integration-test.cml"
  deps = [
    ":driver",
    "//src/devices/bus/drivers/platform",
    "//src/storage/testing:storage_drivers",
  ]
}

fuchsia_test_package("password-authenticator-integration-tests") {
  # isolated devmgr sometimes logs at error level when its processes are torn
  # down in unlucky orders, and there's no way to tear them down
  # deterministically, so I guess we tolerate ERROR level log messages
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }

  test_components = [ ":password-authenticator-integration-test" ]
  deps = [
    ":password-authenticator-integration-test",
    "//src/identity/bin/credential_manager:component",
    "//src/identity/bin/password_authenticator:component",
    "//src/identity/bin/password_authenticator:config",
    "//src/storage/bin/minfs",
  ]
}

group("password_authenticator_integration") {
  testonly = true
  public_deps = [ ":password-authenticator-integration-tests" ]
}
