// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "run_oci/container_config_parser.h"

#include <vector>

#include <base/files/file_path.h>
#include <base/files/file_util.h>
#include <base/files/scoped_temp_dir.h>
#include <gtest/gtest.h>

#include "run_oci/run_oci_utils.h"

namespace {

TEST(OciUtilsTest, TestGetMountpointsUnder) {
  base::ScopedTempDir temp_dir;
  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());

  constexpr char kSelfProcMountsData[] = R"(
/dev/root / ext2 rw 0 0
devtmpfs /dev devtmpfs rw 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
none /sys/fs/selinux selinuxfs rw,nosuid,noexec,relatime 0 0
tmp /tmp tmpfs rw,seclabel,nodev,relatime 0 0
run /run tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,mode=755 0 0
/dev/loop1 /run/containers/android-master-33lymv/rootfs/root squashfs ro 0 0
/dev/loop2 /run/containers/android-master-33lymv/vendor squashfs ro 0 0
tmpfs /run/containers/android-master-33lymv/rootfs/root/dev tmpfs rw 0 0
debugfs /run/sync_export debugfs rw 0 0
  )";
  base::FilePath mounts = temp_dir.path().Append("mounts");
  EXPECT_EQ(
      base::WriteFile(mounts, kSelfProcMountsData, sizeof(kSelfProcMountsData)),
      sizeof(kSelfProcMountsData));

  std::vector<base::FilePath> mountpoints = run_oci::GetMountpointsUnder(
      base::FilePath("/run/containers/android-master-33lymv"), mounts);

  EXPECT_EQ(
      mountpoints,
      (std::vector<base::FilePath>{
          base::FilePath("/run/containers/android-master-33lymv/rootfs/root"),
          base::FilePath("/run/containers/android-master-33lymv/vendor"),
          base::FilePath(
              "/run/containers/android-master-33lymv/rootfs/root/dev"),
      }));
}

}  // namespace
