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

group("bin") {
  testonly = true
  deps = [
    ":identity_bin_unittests",
    "account_handler",
    "account_manager",
    "dev_auth_provider",
    "dev_authenticator",
    "google_auth_provider",
    "token_manager_factory",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":identity_bin_unittests" ]
}

test_package("identity_bin_unittests") {
  deps = [
    "account_handler:bin_test",
    "account_manager:bin_test",
    "dev_auth_provider:bin_test",
    "dev_authenticator:bin_test",
    "google_auth_provider:bin_test",
  ]

  tests = [
    {
      name = "account_handler_bin_test"
      environments = [ emu_env ]
    },
    {
      name = "account_manager_bin_test"
      environments = [ emu_env ]
    },
    {
      name = "dev_auth_provider_bin_test"
      environments = [ emu_env ]
    },
    {
      name = "dev_authenticator_bin_test"
      environments = [ emu_env ]
    },
    {
      name = "google_auth_provider_bin_test"
      environments = [ emu_env ]
    },
  ]
}

# Tier 1 should be included in products that only require token management
# without support for platform-level accounts or authentication.
group("tier_1") {
  public_deps = [
    "google_auth_provider",
    "token_manager_factory",
  ]
}

# Tier 2 should be included in products that require platform-level accounts
# (i.e. representations of the people using the Fuchsia device). It provides
# authentication, data isolation, and token management for these accounts.
group("tier_2") {
  public_deps = [
    "account_handler",
    "account_manager",
    "account_manager:account_manager_auth_providers",
  ]
}
