| // Copyright 2018 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 USB_BOUNCER_ENTRY_MANAGER_TEST_UTIL_H_ |
| #define USB_BOUNCER_ENTRY_MANAGER_TEST_UTIL_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include <base/files/file_path.h> |
| #include <base/files/scoped_temp_dir.h> |
| |
| #include "usb_bouncer/entry_manager.h" |
| |
| namespace usb_bouncer { |
| |
| constexpr char kDefaultRule[] = |
| "allow id 046d:c31c serial \"\" name \"USB Keyboard\" hash " |
| "\"eqf7n/3rlMr5be7CI8RRr3PAT41/67nSG7TO4oyXBKQ=\" with-interface " |
| "{ 03:01:01 03:00:00 }"; |
| |
| constexpr char kDefaultDevpath[] = "/devices/pci0000:00/0000:00:00.0/usb1/1-0"; |
| |
| constexpr char kUserdbDir[] = |
| "run/daemon-store/usb_bouncer/0000000000000000000000000000000000000000/"; |
| |
| class EntryManagerTestUtil { |
| public: |
| EntryManagerTestUtil(); |
| |
| EntryManager* Get(); |
| |
| void RefreshDB(bool include_user_db, bool new_db); |
| |
| void ReplaceDB(const RuleDB& replacement); |
| |
| void SetUserDBReadOnly(bool user_db_read_only); |
| |
| void SetIsGuestSession(bool is_guest_session); |
| |
| void ExpireEntry(bool expect_user, |
| const std::string& devpath, |
| const std::string& rule); |
| |
| size_t GarbageCollectInternal(bool global_only); |
| |
| bool GlobalDBContainsEntry(const std::string& devpath, |
| const std::string& rule); |
| |
| bool GlobalTrashContainsEntry(const std::string& devpath, |
| const std::string& rule); |
| |
| bool UserDBContainsEntry(const std::string& rule); |
| |
| private: |
| base::FilePath CreateTestDir(const std::string& dir, bool force_empty); |
| void RecreateEntryManager(const base::FilePath& userdb_dir); |
| |
| std::unique_ptr<EntryManager> entry_manager_; |
| base::ScopedTempDir scoped_temp_dir_; |
| base::FilePath temp_dir_; |
| }; |
| |
| } // namespace usb_bouncer |
| |
| #endif // USB_BOUNCER_ENTRY_MANAGER_TEST_UTIL_H_ |