// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "patchpanel/system.h"

#include <base/logging.h>
#include <gtest/gtest.h>

namespace patchpanel {
namespace {

TEST(SystemTest, SysNetPath) {
  System system;

  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv4Forward),
            "/proc/sys/net/ipv4/ip_forward");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv4RouteLocalnet, "eth0"),
            "/proc/sys/net/ipv4/conf/eth0/route_localnet");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6AcceptRA, "eth0"),
            "/proc/sys/net/ipv6/conf/eth0/accept_ra");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6Forward),
            "/proc/sys/net/ipv6/conf/all/forwarding");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kConntrackHelper),
            "/proc/sys/net/netfilter/nf_conntrack_helper");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6Disable),
            "/proc/sys/net/ipv6/conf/all/disable_ipv6");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6ProxyNDP),
            "/proc/sys/net/ipv6/conf/all/proxy_ndp");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6HopLimit, "eth0"),
            "/proc/sys/net/ipv6/conf/eth0/hop_limit");

  // Failure cases.
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv4RouteLocalnet, ""), "");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6AcceptRA, ""), "");
  EXPECT_EQ(system.SysNetPath(System::SysNet::kIPv6HopLimit, ""), "");
}

}  // namespace
}  // namespace patchpanel
