# 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/package.gni")

source_set("oauth") {
  sources = [
    "oauth_request_builder.cc",
    "oauth_request_builder.h",
    "oauth_response.cc",
    "oauth_response.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.auth",
    "//sdk/fidl/fuchsia.net.oldhttp",
  ]
  deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/network_wrapper",
    "//peridot/lib/rapidjson",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "oauth_request_builder_unittest.cc",
    "oauth_response_unittest.cc",
  ]

  deps = [
    ":oauth",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/fxl:printers",
    "//peridot/lib/rapidjson",
    "//third_party/googletest:gtest",
  ]
}
