| Index: remoting/host/pairing_registry_delegate_linux_unittest.cc
|
| diff --git a/remoting/host/pairing_registry_delegate_linux_unittest.cc b/remoting/host/pairing_registry_delegate_linux_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4387f643ce4fafe07a2e34c71ba76e0312d3730c
|
| --- /dev/null
|
| +++ b/remoting/host/pairing_registry_delegate_linux_unittest.cc
|
| @@ -0,0 +1,76 @@
|
| +// Copyright 2013 The Chromium 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 "remoting/host/pairing_registry_delegate_linux.h"
|
| +
|
| +#include "base/file_util.h"
|
| +#include "base/message_loop.h"
|
| +#include "base/run_loop.h"
|
| +#include "base/task_runner.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| +#include "base/timer.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace remoting {
|
| +
|
| +using protocol::PairingRegistry;
|
| +
|
| +class PairingRegistryDelegateLinuxTest : public testing::Test {
|
| + public:
|
| + void SaveComplete(PairingRegistry::Delegate* delegate,
|
| + const std::string& expected_json,
|
| + bool success) {
|
| + EXPECT_TRUE(success);
|
| + // Load the pairings again to make sure we get what we've just written.
|
| + delegate->Load(
|
| + base::Bind(&PairingRegistryDelegateLinuxTest::VerifyLoad,
|
| + base::Unretained(this),
|
| + expected_json));
|
| + }
|
| +
|
| + void VerifyLoad(const std::string& expected,
|
| + const std::string& actual) {
|
| + EXPECT_EQ(actual, expected);
|
| + base::MessageLoop::current()->Quit();
|
| + }
|
| +};
|
| +
|
| +TEST_F(PairingRegistryDelegateLinuxTest, SaveAndLoad) {
|
| + base::MessageLoop message_loop;
|
| + base::RunLoop run_loop;
|
| +
|
| + // Create a temporary directory in order to get a unique name and use a
|
| + // subdirectory to ensure that the AddPairing method creates the parent
|
| + // directory if it doesn't exist.
|
| + base::FilePath temp_dir;
|
| + file_util::CreateNewTempDirectory("chromoting-test", &temp_dir);
|
| + base::FilePath temp_file = temp_dir.Append("dir").Append("registry.json");
|
| +
|
| + scoped_refptr<base::TaskRunner> task_runner =
|
| + base::ThreadTaskRunnerHandle::Get();
|
| + scoped_ptr<PairingRegistryDelegateLinux> save_delegate(
|
| + new PairingRegistryDelegateLinux(task_runner));
|
| + scoped_ptr<PairingRegistryDelegateLinux> load_delegate(
|
| + new PairingRegistryDelegateLinux(task_runner));
|
| + save_delegate->SetFilenameForTesting(temp_file);
|
| + load_delegate->SetFilenameForTesting(temp_file);
|
| +
|
| + // Save the pairings, then load them using a different delegate to ensure
|
| + // that the test isn't passing due to cached values. Note that the delegate
|
| + // doesn't require that the strings it loads and saves are valid JSON, so
|
| + // we can simplify the test a bit.
|
| + std::string test_data = "test data";
|
| + save_delegate->Save(
|
| + test_data,
|
| + base::Bind(&PairingRegistryDelegateLinuxTest::SaveComplete,
|
| + base::Unretained(this),
|
| + load_delegate.get(),
|
| + test_data));
|
| +
|
| + run_loop.Run();
|
| +
|
| + file_util::Delete(temp_dir, true);
|
| +};
|
| +
|
| +} // namespace remoting
|
|
|