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

  deps = [
    "//sdk/fidl/fuchsia.auth",
    "//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:fxl_printers",
    "//peridot/lib/rapidjson",
    "//third_party/googletest:gtest",
  ]
}
