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

group("token_manager_integration") {
  testonly = true
  deps = [
    ":token_manager_integration_test_pkg",
    "//src/identity/bin/dev_auth_provider",
  ]
}

executable("bin") {
  output_name = "token_manager_integration_test"
  testonly = true

  sources = [ "dev_token_mgr_test.cc" ]

  public_deps = [ "//sdk/lib/sys/cpp" ]

  deps = [
    "//garnet/public/lib/gtest",
    "//sdk/fidl/fuchsia.auth",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/callback",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/rapidjson",
  ]
}

test_package("token_manager_integration_test_pkg") {
  deps = [ ":bin" ]

  tests = [
    {
      name = "token_manager_integration_test"
      environments = basic_envs
    },
  ]
}
