# 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 = basic_envs
    },
    {
      name = "account_manager_bin_test"
      environments = basic_envs
    },
    {
      name = "dev_auth_provider_bin_test"
      environments = basic_envs
    },
    {
      name = "dev_authenticator_bin_test"
      environments = basic_envs
    },
    {
      name = "google_auth_provider_bin_test"
      environments = basic_envs
    },
  ]
}

# Modular is included in products based on the modular framework. This is a
# transitional set that will shrink to empty as Identity is disentangled from
# modular.
group("modular") {
  public_deps = [
    "account_handler",
    "account_manager",
  ]
}

# 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",
  ]
}
