Roll WebRTC 5699->5721.
[chromium-blink-merge.git] / remoting / host / pairing_registry_delegate_linux_unittest.cc
blob5ca9c94f91aabf79fd4f6e4555ec894109ecef6d
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "remoting/host/pairing_registry_delegate_linux.h"
7 #include "base/file_util.h"
8 #include "base/timer/timer.h"
9 #include "base/values.h"
10 #include "testing/gtest/include/gtest/gtest.h"
12 namespace remoting {
14 using protocol::PairingRegistry;
16 class PairingRegistryDelegateLinuxTest : public testing::Test {
17 public:
18 virtual void SetUp() OVERRIDE {
19 // Create a temporary directory in order to get a unique name and use a
20 // subdirectory to ensure that PairingRegistryDelegateLinux::Save() creates
21 // the parent directory if it doesn't exist.
22 base::CreateNewTempDirectory("chromoting-test", &temp_dir_);
23 temp_registry_ = temp_dir_.Append("paired-clients");
26 virtual void TearDown() OVERRIDE {
27 base::DeleteFile(temp_dir_, true);
30 protected:
31 base::FilePath temp_dir_;
32 base::FilePath temp_registry_;
35 TEST_F(PairingRegistryDelegateLinuxTest, SaveAndLoad) {
36 scoped_ptr<PairingRegistryDelegateLinux> delegate(
37 new PairingRegistryDelegateLinux());
38 delegate->SetRegistryPathForTesting(temp_registry_);
40 // Check that registry is initially empty.
41 EXPECT_TRUE(delegate->LoadAll()->empty());
43 // Add a couple of pairings.
44 PairingRegistry::Pairing pairing1(base::Time::Now(), "xxx", "xxx", "xxx");
45 PairingRegistry::Pairing pairing2(base::Time::Now(), "yyy", "yyy", "yyy");
46 EXPECT_TRUE(delegate->Save(pairing1));
47 EXPECT_TRUE(delegate->Save(pairing2));
49 // Verify that there are two pairings in the store now.
50 EXPECT_EQ(delegate->LoadAll()->GetSize(), 2u);
52 // Verify that they can be retrieved.
53 EXPECT_EQ(delegate->Load(pairing1.client_id()), pairing1);
54 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2);
56 // Delete the first pairing.
57 EXPECT_TRUE(delegate->Delete(pairing1.client_id()));
59 // Verify that there is only one pairing left.
60 EXPECT_EQ(delegate->Load(pairing1.client_id()), PairingRegistry::Pairing());
61 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2);
63 // Verify that the only value that left is |pairing2|.
64 EXPECT_EQ(delegate->LoadAll()->GetSize(), 1u);
65 scoped_ptr<base::ListValue> pairings = delegate->LoadAll();
66 base::DictionaryValue* json;
67 EXPECT_TRUE(pairings->GetDictionary(0, &json));
68 EXPECT_EQ(PairingRegistry::Pairing::CreateFromValue(*json), pairing2);
70 // Delete the rest and verify.
71 EXPECT_TRUE(delegate->DeleteAll());
72 EXPECT_TRUE(delegate->LoadAll()->empty());
75 // Verifies that the delegate is stateless by using two different instances.
76 TEST_F(PairingRegistryDelegateLinuxTest, Stateless) {
77 scoped_ptr<PairingRegistryDelegateLinux> save_delegate(
78 new PairingRegistryDelegateLinux());
79 scoped_ptr<PairingRegistryDelegateLinux> load_delegate(
80 new PairingRegistryDelegateLinux());
81 save_delegate->SetRegistryPathForTesting(temp_registry_);
82 load_delegate->SetRegistryPathForTesting(temp_registry_);
84 PairingRegistry::Pairing pairing(base::Time::Now(), "xxx", "xxx", "xxx");
85 EXPECT_TRUE(save_delegate->Save(pairing));
86 EXPECT_EQ(load_delegate->Load(pairing.client_id()), pairing);
89 } // namespace remoting