# 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")

package("token_manager_factory") {

  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_unittests") {
  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"
    },
    {
      name = "account_handler_bin_test"
    },
    {
      name = "dev_auth_provider_bin_test"
    },
    {
      name = "dev_auth_provider_iotid_bin_test"
    },
  ]
}
