Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: chrome/installer/util/set_reg_value_work_item_unittest.cc

Issue 6090006: Regkey functions return error code instead of bool (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/installer/util/set_reg_value_work_item.cc ('k') | chrome/installer/util/shell_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <windows.h> 5 #include <windows.h>
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/win/registry.h" 10 #include "base/win/registry.h"
11 #include "chrome/installer/util/set_reg_value_work_item.h" 11 #include "chrome/installer/util/set_reg_value_work_item.h"
12 #include "chrome/installer/util/work_item.h" 12 #include "chrome/installer/util/work_item.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 using base::win::RegKey; 15 using base::win::RegKey;
16 16
17 namespace { 17 namespace {
18 18
19 wchar_t test_root[] = L"TempTemp"; 19 wchar_t test_root[] = L"TempTemp";
20 wchar_t data_str_1[] = L"data_111"; 20 wchar_t data_str_1[] = L"data_111";
21 wchar_t data_str_2[] = L"data_222"; 21 wchar_t data_str_2[] = L"data_222";
22 DWORD dword1 = 0; 22 DWORD dword1 = 0;
23 DWORD dword2 = 1; 23 DWORD dword2 = 1;
24 class SetRegValueWorkItemTest : public testing::Test { 24 class SetRegValueWorkItemTest : public testing::Test {
25 protected: 25 protected:
26 virtual void SetUp() { 26 virtual void SetUp() {
27 // Create a temporary key for testing 27 // Create a temporary key for testing
28 RegKey key(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS); 28 RegKey key(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS);
29 key.DeleteKey(test_root); 29 key.DeleteKey(test_root);
30 ASSERT_FALSE(key.Open(HKEY_CURRENT_USER, test_root, KEY_READ)); 30 ASSERT_NE(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, test_root, KEY_READ));
31 ASSERT_TRUE(key.Create(HKEY_CURRENT_USER, test_root, KEY_READ)); 31 ASSERT_EQ(ERROR_SUCCESS,
32 key.Create(HKEY_CURRENT_USER, test_root, KEY_READ));
32 } 33 }
33 virtual void TearDown() { 34 virtual void TearDown() {
34 logging::CloseLogFile(); 35 logging::CloseLogFile();
35 // Clean up the temporary key 36 // Clean up the temporary key
36 RegKey key(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS); 37 RegKey key(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS);
37 ASSERT_TRUE(key.DeleteKey(test_root)); 38 ASSERT_EQ(ERROR_SUCCESS, key.DeleteKey(test_root));
38 } 39 }
39 }; 40 };
40 41
41 } // namespace 42 } // namespace
42 43
43 // Write a new value without overwrite flag. The value should be set. 44 // Write a new value without overwrite flag. The value should be set.
44 TEST_F(SetRegValueWorkItemTest, WriteNewNonOverwrite) { 45 TEST_F(SetRegValueWorkItemTest, WriteNewNonOverwrite) {
45 RegKey key; 46 RegKey key;
46 47
47 std::wstring parent_key(test_root); 48 std::wstring parent_key(test_root);
48 file_util::AppendToPath(&parent_key, L"WriteNewNonOverwrite"); 49 file_util::AppendToPath(&parent_key, L"WriteNewNonOverwrite");
49 ASSERT_TRUE(key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); 50 ASSERT_EQ(ERROR_SUCCESS,
51 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ));
50 52
51 std::wstring name_str(L"name_str"); 53 std::wstring name_str(L"name_str");
52 std::wstring data_str(data_str_1); 54 std::wstring data_str(data_str_1);
53 scoped_ptr<SetRegValueWorkItem> work_item1( 55 scoped_ptr<SetRegValueWorkItem> work_item1(
54 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 56 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
55 name_str, data_str, false)); 57 name_str, data_str, false));
56 58
57 std::wstring name_dword(L"name_dword"); 59 std::wstring name_dword(L"name_dword");
58 scoped_ptr<SetRegValueWorkItem> work_item2( 60 scoped_ptr<SetRegValueWorkItem> work_item2(
59 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 61 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
60 name_dword, dword1, false)); 62 name_dword, dword1, false));
61 63
62 EXPECT_TRUE(work_item1->Do()); 64 EXPECT_TRUE(work_item1->Do());
63 EXPECT_TRUE(work_item2->Do()); 65 EXPECT_TRUE(work_item2->Do());
64 66
65 std::wstring read_out; 67 std::wstring read_out;
66 DWORD read_dword; 68 DWORD read_dword;
67 EXPECT_TRUE(key.ReadValue(name_str.c_str(), &read_out)); 69 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out));
68 EXPECT_TRUE(key.ReadValueDW(name_dword.c_str(), &read_dword)); 70 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword));
69 EXPECT_EQ(read_out, data_str_1); 71 EXPECT_EQ(read_out, data_str_1);
70 EXPECT_EQ(read_dword, dword1); 72 EXPECT_EQ(read_dword, dword1);
71 73
72 work_item1->Rollback(); 74 work_item1->Rollback();
73 work_item2->Rollback(); 75 work_item2->Rollback();
74 76
75 // Rollback should delete the value. 77 // Rollback should delete the value.
76 EXPECT_FALSE(key.ValueExists(name_str.c_str())); 78 EXPECT_FALSE(key.ValueExists(name_str.c_str()));
77 EXPECT_FALSE(key.ValueExists(name_dword.c_str())); 79 EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
78 } 80 }
79 81
80 // Write a new value with overwrite flag. The value should be set. 82 // Write a new value with overwrite flag. The value should be set.
81 TEST_F(SetRegValueWorkItemTest, WriteNewOverwrite) { 83 TEST_F(SetRegValueWorkItemTest, WriteNewOverwrite) {
82 RegKey key; 84 RegKey key;
83 85
84 std::wstring parent_key(test_root); 86 std::wstring parent_key(test_root);
85 file_util::AppendToPath(&parent_key, L"WriteNewOverwrite"); 87 file_util::AppendToPath(&parent_key, L"WriteNewOverwrite");
86 ASSERT_TRUE(key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ)); 88 ASSERT_EQ(ERROR_SUCCESS,
89 key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ));
87 90
88 std::wstring name_str(L"name_str"); 91 std::wstring name_str(L"name_str");
89 std::wstring data_str(data_str_1); 92 std::wstring data_str(data_str_1);
90 scoped_ptr<SetRegValueWorkItem> work_item1( 93 scoped_ptr<SetRegValueWorkItem> work_item1(
91 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 94 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
92 name_str, data_str, true)); 95 name_str, data_str, true));
93 96
94 std::wstring name_dword(L"name_dword"); 97 std::wstring name_dword(L"name_dword");
95 scoped_ptr<SetRegValueWorkItem> work_item2( 98 scoped_ptr<SetRegValueWorkItem> work_item2(
96 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 99 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
97 name_dword, dword1, true)); 100 name_dword, dword1, true));
98 101
99 EXPECT_TRUE(work_item1->Do()); 102 EXPECT_TRUE(work_item1->Do());
100 EXPECT_TRUE(work_item2->Do()); 103 EXPECT_TRUE(work_item2->Do());
101 104
102 std::wstring read_out; 105 std::wstring read_out;
103 DWORD read_dword; 106 DWORD read_dword;
104 EXPECT_TRUE(key.ReadValue(name_str.c_str(), &read_out)); 107 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name_str.c_str(), &read_out));
105 EXPECT_TRUE(key.ReadValueDW(name_dword.c_str(), &read_dword)); 108 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name_dword.c_str(), &read_dword));
106 EXPECT_EQ(read_out, data_str_1); 109 EXPECT_EQ(read_out, data_str_1);
107 EXPECT_EQ(read_dword, dword1); 110 EXPECT_EQ(read_dword, dword1);
108 111
109 work_item1->Rollback(); 112 work_item1->Rollback();
110 work_item2->Rollback(); 113 work_item2->Rollback();
111 114
112 // Rollback should delete the value. 115 // Rollback should delete the value.
113 EXPECT_FALSE(key.ValueExists(name_str.c_str())); 116 EXPECT_FALSE(key.ValueExists(name_str.c_str()));
114 EXPECT_FALSE(key.ValueExists(name_dword.c_str())); 117 EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
115 } 118 }
116 119
117 // Write to an existing value without overwrite flag. There should be 120 // Write to an existing value without overwrite flag. There should be
118 // no change. 121 // no change.
119 TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) { 122 TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) {
120 RegKey key; 123 RegKey key;
121 124
122 std::wstring parent_key(test_root); 125 std::wstring parent_key(test_root);
123 file_util::AppendToPath(&parent_key, L"WriteExistingNonOverwrite"); 126 file_util::AppendToPath(&parent_key, L"WriteExistingNonOverwrite");
124 ASSERT_TRUE(key.Create(HKEY_CURRENT_USER, parent_key.c_str(), 127 ASSERT_EQ(ERROR_SUCCESS,
125 KEY_READ | KEY_SET_VALUE)); 128 key.Create(HKEY_CURRENT_USER, parent_key.c_str(),
129 KEY_READ | KEY_SET_VALUE));
126 130
127 // First test REG_SZ value. 131 // First test REG_SZ value.
128 // Write data to the value we are going to set. 132 // Write data to the value we are going to set.
129 std::wstring name(L"name_str"); 133 std::wstring name(L"name_str");
130 ASSERT_TRUE(key.WriteValue(name.c_str(), data_str_1)); 134 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), data_str_1));
131 135
132 std::wstring data(data_str_2); 136 std::wstring data(data_str_2);
133 scoped_ptr<SetRegValueWorkItem> work_item( 137 scoped_ptr<SetRegValueWorkItem> work_item(
134 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 138 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
135 name, data, false)); 139 name, data, false));
136 EXPECT_TRUE(work_item->Do()); 140 EXPECT_TRUE(work_item->Do());
137 141
138 std::wstring read_out; 142 std::wstring read_out;
139 EXPECT_TRUE(key.ReadValue(name.c_str(), &read_out)); 143 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
140 EXPECT_EQ(0, read_out.compare(data_str_1)); 144 EXPECT_EQ(0, read_out.compare(data_str_1));
141 145
142 work_item->Rollback(); 146 work_item->Rollback();
143 EXPECT_TRUE(key.ValueExists(name.c_str())); 147 EXPECT_TRUE(key.ValueExists(name.c_str()));
144 EXPECT_TRUE(key.ReadValue(name.c_str(), &read_out)); 148 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
145 EXPECT_EQ(read_out, data_str_1); 149 EXPECT_EQ(read_out, data_str_1);
146 150
147 // Now test REG_DWORD value. 151 // Now test REG_DWORD value.
148 // Write data to the value we are going to set. 152 // Write data to the value we are going to set.
149 name.assign(L"name_dword"); 153 name.assign(L"name_dword");
150 ASSERT_TRUE(key.WriteValue(name.c_str(), dword1)); 154 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1));
151 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, 155 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
152 parent_key, name, dword2, false)); 156 parent_key, name, dword2, false));
153 EXPECT_TRUE(work_item->Do()); 157 EXPECT_TRUE(work_item->Do());
154 158
155 DWORD read_dword; 159 DWORD read_dword;
156 EXPECT_TRUE(key.ReadValueDW(name.c_str(), &read_dword)); 160 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
157 EXPECT_EQ(read_dword, dword1); 161 EXPECT_EQ(read_dword, dword1);
158 162
159 work_item->Rollback(); 163 work_item->Rollback();
160 EXPECT_TRUE(key.ValueExists(name.c_str())); 164 EXPECT_TRUE(key.ValueExists(name.c_str()));
161 EXPECT_TRUE(key.ReadValueDW(name.c_str(), &read_dword)); 165 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
162 EXPECT_EQ(read_dword, dword1); 166 EXPECT_EQ(read_dword, dword1);
163 } 167 }
164 168
165 // Write to an existing value with overwrite flag. The value should be 169 // Write to an existing value with overwrite flag. The value should be
166 // overwritten. 170 // overwritten.
167 TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) { 171 TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) {
168 RegKey key; 172 RegKey key;
169 173
170 std::wstring parent_key(test_root); 174 std::wstring parent_key(test_root);
171 file_util::AppendToPath(&parent_key, L"WriteExistingOverwrite"); 175 file_util::AppendToPath(&parent_key, L"WriteExistingOverwrite");
172 ASSERT_TRUE(key.Create(HKEY_CURRENT_USER, parent_key.c_str(), 176 ASSERT_EQ(ERROR_SUCCESS,
173 KEY_READ | KEY_SET_VALUE)); 177 key.Create(HKEY_CURRENT_USER, parent_key.c_str(),
178 KEY_READ | KEY_SET_VALUE));
174 179
175 // First test REG_SZ value. 180 // First test REG_SZ value.
176 // Write data to the value we are going to set. 181 // Write data to the value we are going to set.
177 std::wstring name(L"name_str"); 182 std::wstring name(L"name_str");
178 ASSERT_TRUE(key.WriteValue(name.c_str(), data_str_1)); 183 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), data_str_1));
179 184
180 std::wstring data(data_str_2); 185 std::wstring data(data_str_2);
181 scoped_ptr<SetRegValueWorkItem> work_item( 186 scoped_ptr<SetRegValueWorkItem> work_item(
182 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 187 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
183 name, data, true)); 188 name, data, true));
184 EXPECT_TRUE(work_item->Do()); 189 EXPECT_TRUE(work_item->Do());
185 190
186 std::wstring read_out; 191 std::wstring read_out;
187 EXPECT_TRUE(key.ReadValue(name.c_str(), &read_out)); 192 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
188 EXPECT_EQ(0, read_out.compare(data_str_2)); 193 EXPECT_EQ(0, read_out.compare(data_str_2));
189 194
190 work_item->Rollback(); 195 work_item->Rollback();
191 EXPECT_TRUE(key.ValueExists(name.c_str())); 196 EXPECT_TRUE(key.ValueExists(name.c_str()));
192 EXPECT_TRUE(key.ReadValue(name.c_str(), &read_out)); 197 EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
193 EXPECT_EQ(read_out, data_str_1); 198 EXPECT_EQ(read_out, data_str_1);
194 199
195 // Now test REG_DWORD value. 200 // Now test REG_DWORD value.
196 // Write data to the value we are going to set. 201 // Write data to the value we are going to set.
197 name.assign(L"name_dword"); 202 name.assign(L"name_dword");
198 ASSERT_TRUE(key.WriteValue(name.c_str(), dword1)); 203 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name.c_str(), dword1));
199 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, 204 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
200 parent_key, name, dword2, true)); 205 parent_key, name, dword2, true));
201 EXPECT_TRUE(work_item->Do()); 206 EXPECT_TRUE(work_item->Do());
202 207
203 DWORD read_dword; 208 DWORD read_dword;
204 EXPECT_TRUE(key.ReadValueDW(name.c_str(), &read_dword)); 209 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
205 EXPECT_EQ(read_dword, dword2); 210 EXPECT_EQ(read_dword, dword2);
206 211
207 work_item->Rollback(); 212 work_item->Rollback();
208 EXPECT_TRUE(key.ValueExists(name.c_str())); 213 EXPECT_TRUE(key.ValueExists(name.c_str()));
209 EXPECT_TRUE(key.ReadValueDW(name.c_str(), &read_dword)); 214 EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
210 EXPECT_EQ(read_dword, dword1); 215 EXPECT_EQ(read_dword, dword1);
211 } 216 }
212 217
213 // Write a value to a non-existing key. This should fail. 218 // Write a value to a non-existing key. This should fail.
214 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) { 219 TEST_F(SetRegValueWorkItemTest, WriteNonExistingKey) {
215 RegKey key; 220 RegKey key;
216 221
217 std::wstring parent_key(test_root); 222 std::wstring parent_key(test_root);
218 file_util::AppendToPath(&parent_key, L"WriteNonExistingKey"); 223 file_util::AppendToPath(&parent_key, L"WriteNonExistingKey");
219 224
220 std::wstring name(L"name"); 225 std::wstring name(L"name");
221 std::wstring data(data_str_1); 226 std::wstring data(data_str_1);
222 scoped_ptr<SetRegValueWorkItem> work_item( 227 scoped_ptr<SetRegValueWorkItem> work_item(
223 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key, 228 WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
224 name, data, false)); 229 name, data, false));
225 EXPECT_FALSE(work_item->Do()); 230 EXPECT_FALSE(work_item->Do());
226 231
227 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER, 232 work_item.reset(WorkItem::CreateSetRegValueWorkItem(HKEY_CURRENT_USER,
228 parent_key, name, dword1, false)); 233 parent_key, name, dword1, false));
229 EXPECT_FALSE(work_item->Do()); 234 EXPECT_FALSE(work_item->Do());
230 } 235 }
OLDNEW
« no previous file with comments | « chrome/installer/util/set_reg_value_work_item.cc ('k') | chrome/installer/util/shell_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698