# 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.

visibility = [
  "//peridot/bin/*",
  "//peridot/lib/*",
  "//src/ledger/*",
]

source_set("testing") {
  testonly = true

  sources = [
    "fake_token_manager.cc",
    "fake_token_manager.h",
    "test_firebase_auth.cc",
    "test_firebase_auth.h",
    "test_token_manager.cc",
    "test_token_manager.h",
  ]

  public_deps = [
    "//peridot/lib/rng",
    "//sdk/fidl/fuchsia.auth",
    "//src/ledger/lib/firebase_auth",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//peridot/lib/convert",
    "//src/lib/fxl",
  ]

  configs += [ "//src/ledger:ledger_config" ]
}

source_set("service_account_provider") {
  testonly = true

  sources = [
    "service_account_token_manager.cc",
    "service_account_token_manager.h",
    "service_account_token_minter.cc",
    "service_account_token_minter.h",
  ]

  public_deps = [
    ":service_account",
    "//garnet/public/lib/callback",
    "//garnet/public/lib/network_wrapper",
    "//sdk/fidl/fuchsia.auth",
    "//src/lib/fxl",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/rapidjson_utils",
    "//peridot/lib/base64url",
    "//peridot/lib/convert",
    "//third_party/boringssl",
    "//third_party/rapidjson",
  ]
}

source_set("service_account") {
  testonly = true

  sources = [
    "credentials.cc",
    "credentials.h",
  ]

  public_deps = [
    "//src/lib/fxl",
    "//third_party/boringssl",
    "//third_party/rapidjson",
  ]

  deps = [
    "//garnet/public/lib/rapidjson_utils",
  ]
}

source_set("service_account_test_constants") {
  testonly = true

  sources = [
    "service_account_test_constants.h",
  ]

  public_deps = [
    "//src/lib/fxl",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "credentials_unittest.cc",
    "service_account_test_util.cc",
    "service_account_test_util.h",
    "service_account_token_manager_unittest.cc",
    "service_account_token_minter_unittest.cc",
  ]

  deps = [
    ":service_account",
    ":service_account_provider",
    ":service_account_test_constants",
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/network_wrapper:fake",
    "//garnet/public/lib/rapidjson_utils",
    "//third_party/googletest:gtest",
    "//third_party/rapidjson",
  ]
}
