| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/host/pairing_registry_delegate_win.h" | 5 #include "remoting/host/pairing_registry_delegate_win.h" |
| 6 | 6 |
| 7 #include <shlwapi.h> | 7 #include <shlwapi.h> |
| 8 | 8 |
| 9 #include "base/guid.h" | 9 #include "base/guid.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 base::UTF8ToWide(key_name_).c_str()) == ERROR_SUCCESS); | 40 base::UTF8ToWide(key_name_).c_str()) == ERROR_SUCCESS); |
| 41 } | 41 } |
| 42 | 42 |
| 43 protected: | 43 protected: |
| 44 std::string key_name_; | 44 std::string key_name_; |
| 45 base::win::RegKey privileged_; | 45 base::win::RegKey privileged_; |
| 46 base::win::RegKey unprivileged_; | 46 base::win::RegKey unprivileged_; |
| 47 }; | 47 }; |
| 48 | 48 |
| 49 TEST_F(PairingRegistryDelegateWinTest, SaveAndLoad) { | 49 TEST_F(PairingRegistryDelegateWinTest, SaveAndLoad) { |
| 50 scoped_ptr<PairingRegistryDelegateWin> delegate( | 50 std::unique_ptr<PairingRegistryDelegateWin> delegate( |
| 51 new PairingRegistryDelegateWin()); | 51 new PairingRegistryDelegateWin()); |
| 52 delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); | 52 delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); |
| 53 | 53 |
| 54 // Check that registry is initially empty. | 54 // Check that registry is initially empty. |
| 55 EXPECT_TRUE(delegate->LoadAll()->empty()); | 55 EXPECT_TRUE(delegate->LoadAll()->empty()); |
| 56 | 56 |
| 57 // Add a couple of pairings. | 57 // Add a couple of pairings. |
| 58 PairingRegistry::Pairing pairing1(base::Time::Now(), "xxx", "xxx", "xxx"); | 58 PairingRegistry::Pairing pairing1(base::Time::Now(), "xxx", "xxx", "xxx"); |
| 59 PairingRegistry::Pairing pairing2(base::Time::Now(), "yyy", "yyy", "yyy"); | 59 PairingRegistry::Pairing pairing2(base::Time::Now(), "yyy", "yyy", "yyy"); |
| 60 EXPECT_TRUE(delegate->Save(pairing1)); | 60 EXPECT_TRUE(delegate->Save(pairing1)); |
| 61 EXPECT_TRUE(delegate->Save(pairing2)); | 61 EXPECT_TRUE(delegate->Save(pairing2)); |
| 62 | 62 |
| 63 // Verify that there are two pairings in the store now. | 63 // Verify that there are two pairings in the store now. |
| 64 EXPECT_EQ(delegate->LoadAll()->GetSize(), 2u); | 64 EXPECT_EQ(delegate->LoadAll()->GetSize(), 2u); |
| 65 | 65 |
| 66 // Verify that they can be retrieved. | 66 // Verify that they can be retrieved. |
| 67 EXPECT_EQ(delegate->Load(pairing1.client_id()), pairing1); | 67 EXPECT_EQ(delegate->Load(pairing1.client_id()), pairing1); |
| 68 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2); | 68 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2); |
| 69 | 69 |
| 70 // Delete the first pairing. | 70 // Delete the first pairing. |
| 71 EXPECT_TRUE(delegate->Delete(pairing1.client_id())); | 71 EXPECT_TRUE(delegate->Delete(pairing1.client_id())); |
| 72 | 72 |
| 73 // Verify that there is only one pairing left. | 73 // Verify that there is only one pairing left. |
| 74 EXPECT_EQ(delegate->Load(pairing1.client_id()), PairingRegistry::Pairing()); | 74 EXPECT_EQ(delegate->Load(pairing1.client_id()), PairingRegistry::Pairing()); |
| 75 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2); | 75 EXPECT_EQ(delegate->Load(pairing2.client_id()), pairing2); |
| 76 | 76 |
| 77 // Verify that the only remaining value is |pairing2|. | 77 // Verify that the only remaining value is |pairing2|. |
| 78 EXPECT_EQ(delegate->LoadAll()->GetSize(), 1u); | 78 EXPECT_EQ(delegate->LoadAll()->GetSize(), 1u); |
| 79 scoped_ptr<base::ListValue> pairings = delegate->LoadAll(); | 79 std::unique_ptr<base::ListValue> pairings = delegate->LoadAll(); |
| 80 base::DictionaryValue* json; | 80 base::DictionaryValue* json; |
| 81 EXPECT_TRUE(pairings->GetDictionary(0, &json)); | 81 EXPECT_TRUE(pairings->GetDictionary(0, &json)); |
| 82 EXPECT_EQ(PairingRegistry::Pairing::CreateFromValue(*json), pairing2); | 82 EXPECT_EQ(PairingRegistry::Pairing::CreateFromValue(*json), pairing2); |
| 83 | 83 |
| 84 // Delete the rest and verify. | 84 // Delete the rest and verify. |
| 85 EXPECT_TRUE(delegate->DeleteAll()); | 85 EXPECT_TRUE(delegate->DeleteAll()); |
| 86 EXPECT_TRUE(delegate->LoadAll()->empty()); | 86 EXPECT_TRUE(delegate->LoadAll()->empty()); |
| 87 } | 87 } |
| 88 | 88 |
| 89 // Verifies that the delegate is stateless by using two different instances. | 89 // Verifies that the delegate is stateless by using two different instances. |
| 90 TEST_F(PairingRegistryDelegateWinTest, Stateless) { | 90 TEST_F(PairingRegistryDelegateWinTest, Stateless) { |
| 91 scoped_ptr<PairingRegistryDelegateWin> load_delegate( | 91 std::unique_ptr<PairingRegistryDelegateWin> load_delegate( |
| 92 new PairingRegistryDelegateWin()); | 92 new PairingRegistryDelegateWin()); |
| 93 load_delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); | 93 load_delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); |
| 94 scoped_ptr<PairingRegistryDelegateWin> save_delegate( | 94 std::unique_ptr<PairingRegistryDelegateWin> save_delegate( |
| 95 new PairingRegistryDelegateWin()); | 95 new PairingRegistryDelegateWin()); |
| 96 save_delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); | 96 save_delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); |
| 97 | 97 |
| 98 PairingRegistry::Pairing pairing(base::Time::Now(), "xxx", "xxx", "xxx"); | 98 PairingRegistry::Pairing pairing(base::Time::Now(), "xxx", "xxx", "xxx"); |
| 99 EXPECT_TRUE(save_delegate->Save(pairing)); | 99 EXPECT_TRUE(save_delegate->Save(pairing)); |
| 100 EXPECT_EQ(load_delegate->Load(pairing.client_id()), pairing); | 100 EXPECT_EQ(load_delegate->Load(pairing.client_id()), pairing); |
| 101 } | 101 } |
| 102 | 102 |
| 103 TEST_F(PairingRegistryDelegateWinTest, Unprivileged) { | 103 TEST_F(PairingRegistryDelegateWinTest, Unprivileged) { |
| 104 scoped_ptr<PairingRegistryDelegateWin> delegate( | 104 std::unique_ptr<PairingRegistryDelegateWin> delegate( |
| 105 new PairingRegistryDelegateWin()); | 105 new PairingRegistryDelegateWin()); |
| 106 delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); | 106 delegate->SetRootKeys(privileged_.Handle(), unprivileged_.Handle()); |
| 107 | 107 |
| 108 PairingRegistry::Pairing pairing(base::Time::Now(), "xxx", "xxx", "xxx"); | 108 PairingRegistry::Pairing pairing(base::Time::Now(), "xxx", "xxx", "xxx"); |
| 109 EXPECT_TRUE(delegate->Save(pairing)); | 109 EXPECT_TRUE(delegate->Save(pairing)); |
| 110 EXPECT_EQ(delegate->Load(pairing.client_id()), pairing); | 110 EXPECT_EQ(delegate->Load(pairing.client_id()), pairing); |
| 111 | 111 |
| 112 // Strip the delegate from write access and validate that it still can be used | 112 // Strip the delegate from write access and validate that it still can be used |
| 113 // to read the pairings. | 113 // to read the pairings. |
| 114 delegate.reset(new PairingRegistryDelegateWin()); | 114 delegate.reset(new PairingRegistryDelegateWin()); |
| 115 delegate->SetRootKeys(nullptr, unprivileged_.Handle()); | 115 delegate->SetRootKeys(nullptr, unprivileged_.Handle()); |
| 116 | 116 |
| 117 PairingRegistry::Pairing unprivileged_pairing = | 117 PairingRegistry::Pairing unprivileged_pairing = |
| 118 delegate->Load(pairing.client_id()); | 118 delegate->Load(pairing.client_id()); |
| 119 EXPECT_EQ(pairing.client_id(), unprivileged_pairing.client_id()); | 119 EXPECT_EQ(pairing.client_id(), unprivileged_pairing.client_id()); |
| 120 EXPECT_EQ(pairing.client_name(), unprivileged_pairing.client_name()); | 120 EXPECT_EQ(pairing.client_name(), unprivileged_pairing.client_name()); |
| 121 EXPECT_EQ(pairing.created_time(), unprivileged_pairing.created_time()); | 121 EXPECT_EQ(pairing.created_time(), unprivileged_pairing.created_time()); |
| 122 | 122 |
| 123 // Verify that the shared secret if not available. | 123 // Verify that the shared secret if not available. |
| 124 EXPECT_TRUE(unprivileged_pairing.shared_secret().empty()); | 124 EXPECT_TRUE(unprivileged_pairing.shared_secret().empty()); |
| 125 | 125 |
| 126 // Verify that a pairing cannot be saved. | 126 // Verify that a pairing cannot be saved. |
| 127 EXPECT_FALSE(delegate->Save(pairing)); | 127 EXPECT_FALSE(delegate->Save(pairing)); |
| 128 } | 128 } |
| 129 | 129 |
| 130 } // namespace remoting | 130 } // namespace remoting |
| OLD | NEW |