// Copyright 2019 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.

#ifndef SMBFS_TEST_FILESYSTEM_H_
#define SMBFS_TEST_FILESYSTEM_H_

#include <sys/types.h>

#include <memory>
#include <string>

#include <base/callback.h>
#include <base/macros.h>

#include "smbfs/filesystem.h"

namespace smbfs {

// Test/fake filesystem for integration testing.
class TestFilesystem : public Filesystem {
 public:
  TestFilesystem(uid_t uid, gid_t gid);
  TestFilesystem(const TestFilesystem&) = delete;
  TestFilesystem& operator=(const TestFilesystem&) = delete;

  void Lookup(std::unique_ptr<EntryRequest> request,
              fuse_ino_t parent_inode,
              const std::string& name) override;
  void GetAttr(std::unique_ptr<AttrRequest> request, fuse_ino_t inode) override;

 private:
  const uid_t uid_;
  const gid_t gid_;
};

}  // namespace smbfs

#endif  // SMBFS_TEST_FILESYSTEM_H_
