# 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("lib") {
  testonly = true
  deps = [
    ":identity_lib_unittests",
  ]
}

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

test_package("identity_lib_unittests") {
  deps = [
    "account_common:account_common_test",
    "identity_common:identity_common_test",
    "oauth:oauth_unittests",
    "token_cache:token_cache_test",
    "token_store:token_store_test",
    "token_manager:token_manager_test",
  ]

  tests = [
    {
      name = "account_common_lib_test"
      environments = basic_envs
    },
    {
      name = "identity_common_lib_test"
      environments = basic_envs
    },
    {
      name = "token_cache_lib_test"
      environments = basic_envs
    },
    {
      name = "token_store_lib_test"
      environments = basic_envs
    },
    {
      name = "oauth_unittests"
      environments = basic_envs
    },
    {
      name = "token_manager_lib_test"
      environments = basic_envs
    }
  ]
}
