# Copyright 2017 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/package.gni")
import("//build/testing/environments.gni")

group("auth") {
  testonly = true

  deps = [
    ":account_handler",
    ":account_manager",
    ":auth_bin_tests",
    ":token_manager_factory",
  ]
}

package("token_manager_factory") {
  deprecated_global_persistent_storage = "//build"
  deps = [
    "//garnet/bin/auth/token_manager_factory:token_manager_factory",
  ]

  binary = "rust_crates/token_manager_factory"

  meta = [
    {
      path = rebase_path("meta/token_manager_factory.cmx")
      dest = "token_manager_factory.cmx"
    },
  ]
}

package("account_manager") {
  deps = [
    "//garnet/bin/auth/account_manager:account_manager",
  ]

  binary = "rust_crates/account_manager"

  meta = [
    {
      path = rebase_path("meta/account_manager.cmx")
      dest = "account_manager.cmx"
    },
  ]
}

package("account_handler") {
  deps = [
    "//garnet/bin/auth/account_handler:account_handler",
  ]

  binary = "rust_crates/account_handler"

  meta = [
    {
      path = rebase_path("meta/account_handler.cmx")
      dest = "account_handler.cmx"
    },
  ]
}

package("auth_bin_tests") {
  testonly = true

  deps = [
    "account_handler:account_handler",
    "account_manager:account_manager",
    "testing/dev_auth_provider:dev_auth_provider",
    "testing/dev_auth_provider_iotid:dev_auth_provider_iotid",
  ]

  tests = [
    {
      name = "account_manager_bin_test"
      environments = basic_envs
    },
    {
      name = "account_handler_bin_test"
      environments = basic_envs
    },
    {
      name = "dev_auth_provider_bin_test"
      environments = basic_envs
    },
    {
      name = "dev_auth_provider_iotid_bin_test"
      environments = basic_envs
    },
  ]
}
