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

Side by Side Diff: extensions/common/permissions/api_permission_set_unittest.cc

Issue 141743005: Extensions: Make it possible for permission parsing code to return a detailed error message. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 6 years, 10 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
OLDNEW
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 "base/pickle.h" 5 #include "base/pickle.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "chrome/common/extensions/extension_messages.h" 7 #include "chrome/common/extensions/extension_messages.h"
8 #include "extensions/common/permissions/api_permission_set.h" 8 #include "extensions/common/permissions/api_permission_set.h"
9 #include "extensions/common/permissions/permissions_info.h" 9 #include "extensions/common/permissions/permissions_info.h"
10 #include "ipc/ipc_message.h" 10 #include "ipc/ipc_message.h"
(...skipping 30 matching lines...) Expand all
41 APIPermissionSet result; 41 APIPermissionSet result;
42 42
43 const APIPermissionInfo* permission_info = 43 const APIPermissionInfo* permission_info =
44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
45 permission = permission_info->CreateAPIPermission(); 45 permission = permission_info->CreateAPIPermission();
46 { 46 {
47 scoped_ptr<base::ListValue> value(new base::ListValue()); 47 scoped_ptr<base::ListValue> value(new base::ListValue());
48 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 48 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
49 value->Append(new base::StringValue("udp-bind::8080")); 49 value->Append(new base::StringValue("udp-bind::8080"));
50 value->Append(new base::StringValue("udp-send-to::8888")); 50 value->Append(new base::StringValue("udp-send-to::8888"));
51 if (!permission->FromValue(value.get())) { 51 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
52 NOTREACHED();
53 }
54 } 52 }
55 53
56 // Union with an empty set. 54 // Union with an empty set.
57 apis1.insert(APIPermission::kTab); 55 apis1.insert(APIPermission::kTab);
58 apis1.insert(APIPermission::kBackground); 56 apis1.insert(APIPermission::kBackground);
59 apis1.insert(permission->Clone()); 57 apis1.insert(permission->Clone());
60 expected_apis.insert(APIPermission::kTab); 58 expected_apis.insert(APIPermission::kTab);
61 expected_apis.insert(APIPermission::kBackground); 59 expected_apis.insert(APIPermission::kBackground);
62 expected_apis.insert(permission); 60 expected_apis.insert(permission);
63 61
(...skipping 12 matching lines...) Expand all
76 apis2.insert(APIPermission::kTab); 74 apis2.insert(APIPermission::kTab);
77 apis2.insert(APIPermission::kProxy); 75 apis2.insert(APIPermission::kProxy);
78 apis2.insert(APIPermission::kClipboardWrite); 76 apis2.insert(APIPermission::kClipboardWrite);
79 apis2.insert(APIPermission::kPlugin); 77 apis2.insert(APIPermission::kPlugin);
80 78
81 permission = permission_info->CreateAPIPermission(); 79 permission = permission_info->CreateAPIPermission();
82 { 80 {
83 scoped_ptr<base::ListValue> value(new base::ListValue()); 81 scoped_ptr<base::ListValue> value(new base::ListValue());
84 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 82 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
85 value->Append(new base::StringValue("udp-send-to::8899")); 83 value->Append(new base::StringValue("udp-send-to::8899"));
86 if (!permission->FromValue(value.get())) { 84 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
87 NOTREACHED();
88 }
89 } 85 }
90 apis2.insert(permission); 86 apis2.insert(permission);
91 87
92 expected_apis.insert(APIPermission::kTab); 88 expected_apis.insert(APIPermission::kTab);
93 expected_apis.insert(APIPermission::kProxy); 89 expected_apis.insert(APIPermission::kProxy);
94 expected_apis.insert(APIPermission::kClipboardWrite); 90 expected_apis.insert(APIPermission::kClipboardWrite);
95 expected_apis.insert(APIPermission::kPlugin); 91 expected_apis.insert(APIPermission::kPlugin);
96 92
97 permission = permission_info->CreateAPIPermission(); 93 permission = permission_info->CreateAPIPermission();
98 { 94 {
99 scoped_ptr<base::ListValue> value(new base::ListValue()); 95 scoped_ptr<base::ListValue> value(new base::ListValue());
100 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 96 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
101 value->Append(new base::StringValue("udp-bind::8080")); 97 value->Append(new base::StringValue("udp-bind::8080"));
102 value->Append(new base::StringValue("udp-send-to::8888")); 98 value->Append(new base::StringValue("udp-send-to::8888"));
103 value->Append(new base::StringValue("udp-send-to::8899")); 99 value->Append(new base::StringValue("udp-send-to::8899"));
104 if (!permission->FromValue(value.get())) { 100 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
105 NOTREACHED();
106 }
107 } 101 }
108 // Insert a new socket permission which will replace the old one. 102 // Insert a new socket permission which will replace the old one.
109 expected_apis.insert(permission); 103 expected_apis.insert(permission);
110 104
111 APIPermissionSet::Union(apis1, apis2, &result); 105 APIPermissionSet::Union(apis1, apis2, &result);
112 106
113 EXPECT_FALSE(apis1.Contains(apis2)); 107 EXPECT_FALSE(apis1.Contains(apis2));
114 EXPECT_FALSE(apis1.Contains(result)); 108 EXPECT_FALSE(apis1.Contains(result));
115 EXPECT_FALSE(apis2.Contains(apis1)); 109 EXPECT_FALSE(apis2.Contains(apis1));
116 EXPECT_FALSE(apis2.Contains(result)); 110 EXPECT_FALSE(apis2.Contains(result));
(...skipping 16 matching lines...) Expand all
133 127
134 // Intersection with an empty set. 128 // Intersection with an empty set.
135 apis1.insert(APIPermission::kTab); 129 apis1.insert(APIPermission::kTab);
136 apis1.insert(APIPermission::kBackground); 130 apis1.insert(APIPermission::kBackground);
137 permission = permission_info->CreateAPIPermission(); 131 permission = permission_info->CreateAPIPermission();
138 { 132 {
139 scoped_ptr<base::ListValue> value(new base::ListValue()); 133 scoped_ptr<base::ListValue> value(new base::ListValue());
140 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 134 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
141 value->Append(new base::StringValue("udp-bind::8080")); 135 value->Append(new base::StringValue("udp-bind::8080"));
142 value->Append(new base::StringValue("udp-send-to::8888")); 136 value->Append(new base::StringValue("udp-send-to::8888"));
143 if (!permission->FromValue(value.get())) { 137 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
144 NOTREACHED();
145 }
146 } 138 }
147 apis1.insert(permission); 139 apis1.insert(permission);
148 140
149 APIPermissionSet::Intersection(apis1, apis2, &result); 141 APIPermissionSet::Intersection(apis1, apis2, &result);
150 EXPECT_TRUE(apis1.Contains(result)); 142 EXPECT_TRUE(apis1.Contains(result));
151 EXPECT_TRUE(apis2.Contains(result)); 143 EXPECT_TRUE(apis2.Contains(result));
152 EXPECT_TRUE(apis1.Contains(apis2)); 144 EXPECT_TRUE(apis1.Contains(apis2));
153 EXPECT_FALSE(apis2.Contains(apis1)); 145 EXPECT_FALSE(apis2.Contains(apis1));
154 EXPECT_FALSE(result.Contains(apis1)); 146 EXPECT_FALSE(result.Contains(apis1));
155 EXPECT_TRUE(result.Contains(apis2)); 147 EXPECT_TRUE(result.Contains(apis2));
156 148
157 EXPECT_TRUE(result.empty()); 149 EXPECT_TRUE(result.empty());
158 EXPECT_EQ(expected_apis, result); 150 EXPECT_EQ(expected_apis, result);
159 151
160 // Now use a real second set. 152 // Now use a real second set.
161 apis2.insert(APIPermission::kTab); 153 apis2.insert(APIPermission::kTab);
162 apis2.insert(APIPermission::kProxy); 154 apis2.insert(APIPermission::kProxy);
163 apis2.insert(APIPermission::kClipboardWrite); 155 apis2.insert(APIPermission::kClipboardWrite);
164 apis2.insert(APIPermission::kPlugin); 156 apis2.insert(APIPermission::kPlugin);
165 permission = permission_info->CreateAPIPermission(); 157 permission = permission_info->CreateAPIPermission();
166 { 158 {
167 scoped_ptr<base::ListValue> value(new base::ListValue()); 159 scoped_ptr<base::ListValue> value(new base::ListValue());
168 value->Append(new base::StringValue("udp-bind::8080")); 160 value->Append(new base::StringValue("udp-bind::8080"));
169 value->Append(new base::StringValue("udp-send-to::8888")); 161 value->Append(new base::StringValue("udp-send-to::8888"));
170 value->Append(new base::StringValue("udp-send-to::8899")); 162 value->Append(new base::StringValue("udp-send-to::8899"));
171 if (!permission->FromValue(value.get())) { 163 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
172 NOTREACHED();
173 }
174 } 164 }
175 apis2.insert(permission); 165 apis2.insert(permission);
176 166
177 expected_apis.insert(APIPermission::kTab); 167 expected_apis.insert(APIPermission::kTab);
178 permission = permission_info->CreateAPIPermission(); 168 permission = permission_info->CreateAPIPermission();
179 { 169 {
180 scoped_ptr<base::ListValue> value(new base::ListValue()); 170 scoped_ptr<base::ListValue> value(new base::ListValue());
181 value->Append(new base::StringValue("udp-bind::8080")); 171 value->Append(new base::StringValue("udp-bind::8080"));
182 value->Append(new base::StringValue("udp-send-to::8888")); 172 value->Append(new base::StringValue("udp-send-to::8888"));
183 if (!permission->FromValue(value.get())) { 173 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
184 NOTREACHED();
185 }
186 } 174 }
187 expected_apis.insert(permission); 175 expected_apis.insert(permission);
188 176
189 APIPermissionSet::Intersection(apis1, apis2, &result); 177 APIPermissionSet::Intersection(apis1, apis2, &result);
190 178
191 EXPECT_TRUE(apis1.Contains(result)); 179 EXPECT_TRUE(apis1.Contains(result));
192 EXPECT_TRUE(apis2.Contains(result)); 180 EXPECT_TRUE(apis2.Contains(result));
193 EXPECT_FALSE(apis1.Contains(apis2)); 181 EXPECT_FALSE(apis1.Contains(apis2));
194 EXPECT_FALSE(apis2.Contains(apis1)); 182 EXPECT_FALSE(apis2.Contains(apis1));
195 EXPECT_FALSE(result.Contains(apis1)); 183 EXPECT_FALSE(result.Contains(apis1));
(...skipping 15 matching lines...) Expand all
211 199
212 // Difference with an empty set. 200 // Difference with an empty set.
213 apis1.insert(APIPermission::kTab); 201 apis1.insert(APIPermission::kTab);
214 apis1.insert(APIPermission::kBackground); 202 apis1.insert(APIPermission::kBackground);
215 permission = permission_info->CreateAPIPermission(); 203 permission = permission_info->CreateAPIPermission();
216 { 204 {
217 scoped_ptr<base::ListValue> value(new base::ListValue()); 205 scoped_ptr<base::ListValue> value(new base::ListValue());
218 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 206 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
219 value->Append(new base::StringValue("udp-bind::8080")); 207 value->Append(new base::StringValue("udp-bind::8080"));
220 value->Append(new base::StringValue("udp-send-to::8888")); 208 value->Append(new base::StringValue("udp-send-to::8888"));
221 if (!permission->FromValue(value.get())) { 209 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
222 NOTREACHED();
223 }
224 } 210 }
225 apis1.insert(permission); 211 apis1.insert(permission);
226 212
227 APIPermissionSet::Difference(apis1, apis2, &result); 213 APIPermissionSet::Difference(apis1, apis2, &result);
228 214
229 EXPECT_EQ(apis1, result); 215 EXPECT_EQ(apis1, result);
230 216
231 // Now use a real second set. 217 // Now use a real second set.
232 apis2.insert(APIPermission::kTab); 218 apis2.insert(APIPermission::kTab);
233 apis2.insert(APIPermission::kProxy); 219 apis2.insert(APIPermission::kProxy);
234 apis2.insert(APIPermission::kClipboardWrite); 220 apis2.insert(APIPermission::kClipboardWrite);
235 apis2.insert(APIPermission::kPlugin); 221 apis2.insert(APIPermission::kPlugin);
236 permission = permission_info->CreateAPIPermission(); 222 permission = permission_info->CreateAPIPermission();
237 { 223 {
238 scoped_ptr<base::ListValue> value(new base::ListValue()); 224 scoped_ptr<base::ListValue> value(new base::ListValue());
239 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 225 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
240 value->Append(new base::StringValue("udp-send-to::8899")); 226 value->Append(new base::StringValue("udp-send-to::8899"));
241 if (!permission->FromValue(value.get())) { 227 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
242 NOTREACHED();
243 }
244 } 228 }
245 apis2.insert(permission); 229 apis2.insert(permission);
246 230
247 expected_apis.insert(APIPermission::kBackground); 231 expected_apis.insert(APIPermission::kBackground);
248 permission = permission_info->CreateAPIPermission(); 232 permission = permission_info->CreateAPIPermission();
249 { 233 {
250 scoped_ptr<base::ListValue> value(new base::ListValue()); 234 scoped_ptr<base::ListValue> value(new base::ListValue());
251 value->Append(new base::StringValue("udp-bind::8080")); 235 value->Append(new base::StringValue("udp-bind::8080"));
252 value->Append(new base::StringValue("udp-send-to::8888")); 236 value->Append(new base::StringValue("udp-send-to::8888"));
253 if (!permission->FromValue(value.get())) { 237 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
254 NOTREACHED();
255 }
256 } 238 }
257 expected_apis.insert(permission); 239 expected_apis.insert(permission);
258 240
259 APIPermissionSet::Difference(apis1, apis2, &result); 241 APIPermissionSet::Difference(apis1, apis2, &result);
260 242
261 EXPECT_TRUE(apis1.Contains(result)); 243 EXPECT_TRUE(apis1.Contains(result));
262 EXPECT_FALSE(apis2.Contains(result)); 244 EXPECT_FALSE(apis2.Contains(result));
263 245
264 EXPECT_EQ(expected_apis, result); 246 EXPECT_EQ(expected_apis, result);
265 247
(...skipping 13 matching lines...) Expand all
279 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 261 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
280 262
281 apis.insert(APIPermission::kTab); 263 apis.insert(APIPermission::kTab);
282 apis.insert(APIPermission::kBackground); 264 apis.insert(APIPermission::kBackground);
283 permission = permission_info->CreateAPIPermission(); 265 permission = permission_info->CreateAPIPermission();
284 { 266 {
285 scoped_ptr<base::ListValue> value(new base::ListValue()); 267 scoped_ptr<base::ListValue> value(new base::ListValue());
286 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 268 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
287 value->Append(new base::StringValue("udp-bind::8080")); 269 value->Append(new base::StringValue("udp-bind::8080"));
288 value->Append(new base::StringValue("udp-send-to::8888")); 270 value->Append(new base::StringValue("udp-send-to::8888"));
289 if (!permission->FromValue(value.get())) { 271 ASSERT_TRUE(permission->FromValue(value.get(), NULL));
290 NOTREACHED();
291 }
292 } 272 }
293 apis.insert(permission); 273 apis.insert(permission);
294 274
295 EXPECT_NE(apis, expected_apis); 275 EXPECT_NE(apis, expected_apis);
296 276
297 IPC::Message m; 277 IPC::Message m;
298 WriteParam(&m, apis); 278 WriteParam(&m, apis);
299 PickleIterator iter(m); 279 PickleIterator iter(m);
300 CHECK(ReadParam(&m, &iter, &expected_apis)); 280 CHECK(ReadParam(&m, &iter, &expected_apis));
301 EXPECT_EQ(apis, expected_apis); 281 EXPECT_EQ(apis, expected_apis);
(...skipping 22 matching lines...) Expand all
324 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(), 304 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(),
325 APIPermission::kFileSystemWrite); 305 APIPermission::kFileSystemWrite);
326 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(), 306 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(),
327 APIPermission::kFileSystemDirectory); 307 APIPermission::kFileSystemDirectory);
328 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(), 308 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(),
329 APIPermission::kFileSystemWriteDirectory); 309 APIPermission::kFileSystemWriteDirectory);
330 EXPECT_EQ(apis.size(), 3u); 310 EXPECT_EQ(apis.size(), 3u);
331 } 311 }
332 312
333 } // namespace extensions 313 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/permissions/api_permission_set.cc ('k') | extensions/common/permissions/permissions_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698