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

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

Issue 553153005: Move extensions APIPermissionSet tests to extensions_unittests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: (api-permissions) cleanup Created 6 years, 3 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
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 "extensions/common/extension_messages.h" 7 #include "extensions/common/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"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace extensions { 13 namespace extensions {
14 14
15 TEST(APIPermissionSetTest, General) { 15 TEST(APIPermissionSetTest, General) {
16 APIPermissionSet apis; 16 APIPermissionSet apis;
17 apis.insert(APIPermission::kTab); 17 apis.insert(APIPermission::kAudioCapture);
18 apis.insert(APIPermission::kBackground); 18 apis.insert(APIPermission::kDns);
19 apis.insert(APIPermission::kProxy); 19 apis.insert(APIPermission::kHid);
20 apis.insert(APIPermission::kClipboardWrite); 20 apis.insert(APIPermission::kPower);
21 apis.insert(APIPermission::kPlugin); 21 apis.insert(APIPermission::kSerial);
22 22
23 EXPECT_EQ(apis.find(APIPermission::kProxy)->id(), APIPermission::kProxy); 23 EXPECT_EQ(apis.find(APIPermission::kPower)->id(), APIPermission::kPower);
24 EXPECT_TRUE(apis.find(APIPermission::kSocket) == apis.end()); 24 EXPECT_TRUE(apis.find(APIPermission::kSocket) == apis.end());
25 25
26 EXPECT_EQ(apis.size(), 5u); 26 EXPECT_EQ(apis.size(), 5u);
27 27
28 EXPECT_EQ(apis.erase(APIPermission::kTab), 1u); 28 EXPECT_EQ(apis.erase(APIPermission::kAudioCapture), 1u);
29 EXPECT_EQ(apis.size(), 4u); 29 EXPECT_EQ(apis.size(), 4u);
30 30
31 EXPECT_EQ(apis.erase(APIPermission::kTab), 0u); 31 EXPECT_EQ(apis.erase(APIPermission::kAudioCapture), 0u);
32 EXPECT_EQ(apis.size(), 4u); 32 EXPECT_EQ(apis.size(), 4u);
33 } 33 }
34 34
35 TEST(APIPermissionSetTest, CreateUnion) { 35 TEST(APIPermissionSetTest, CreateUnion) {
36 APIPermission* permission = NULL; 36 APIPermission* permission = NULL;
37 37
38 APIPermissionSet apis1; 38 APIPermissionSet apis1;
39 APIPermissionSet apis2; 39 APIPermissionSet apis2;
40 APIPermissionSet expected_apis; 40 APIPermissionSet expected_apis;
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 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 51 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
52 } 52 }
53 53
54 // Union with an empty set. 54 // Union with an empty set.
55 apis1.insert(APIPermission::kTab); 55 apis1.insert(APIPermission::kAudioCapture);
56 apis1.insert(APIPermission::kBackground); 56 apis1.insert(APIPermission::kDns);
57 apis1.insert(permission->Clone()); 57 apis1.insert(permission->Clone());
58 expected_apis.insert(APIPermission::kTab); 58 expected_apis.insert(APIPermission::kAudioCapture);
59 expected_apis.insert(APIPermission::kBackground); 59 expected_apis.insert(APIPermission::kDns);
60 expected_apis.insert(permission); 60 expected_apis.insert(permission);
61 61
62 ASSERT_TRUE(apis2.empty());
62 APIPermissionSet::Union(apis1, apis2, &result); 63 APIPermissionSet::Union(apis1, apis2, &result);
63 64
64 EXPECT_TRUE(apis1.Contains(apis2)); 65 EXPECT_TRUE(apis1.Contains(apis2));
65 EXPECT_TRUE(apis1.Contains(result)); 66 EXPECT_TRUE(apis1.Contains(result));
66 EXPECT_FALSE(apis2.Contains(apis1)); 67 EXPECT_FALSE(apis2.Contains(apis1));
67 EXPECT_FALSE(apis2.Contains(result)); 68 EXPECT_FALSE(apis2.Contains(result));
68 EXPECT_TRUE(result.Contains(apis1)); 69 EXPECT_TRUE(result.Contains(apis1));
69 EXPECT_TRUE(result.Contains(apis2)); 70 EXPECT_TRUE(result.Contains(apis2));
70 71
71 EXPECT_EQ(expected_apis, result); 72 EXPECT_EQ(expected_apis, result);
72 73
73 // Now use a real second set. 74 // Now use a real second set.
74 apis2.insert(APIPermission::kTab); 75 apis2.insert(APIPermission::kAudioCapture);
75 apis2.insert(APIPermission::kProxy); 76 apis2.insert(APIPermission::kHid);
76 apis2.insert(APIPermission::kClipboardWrite); 77 apis2.insert(APIPermission::kPower);
77 apis2.insert(APIPermission::kPlugin); 78 apis2.insert(APIPermission::kSerial);
78 79
79 permission = permission_info->CreateAPIPermission(); 80 permission = permission_info->CreateAPIPermission();
80 { 81 {
81 scoped_ptr<base::ListValue> value(new base::ListValue()); 82 scoped_ptr<base::ListValue> value(new base::ListValue());
82 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 83 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
83 value->Append(new base::StringValue("udp-send-to::8899")); 84 value->Append(new base::StringValue("udp-send-to::8899"));
84 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 85 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
85 } 86 }
86 apis2.insert(permission); 87 apis2.insert(permission);
87 88
88 expected_apis.insert(APIPermission::kTab); 89 expected_apis.insert(APIPermission::kAudioCapture);
89 expected_apis.insert(APIPermission::kProxy); 90 expected_apis.insert(APIPermission::kHid);
90 expected_apis.insert(APIPermission::kClipboardWrite); 91 expected_apis.insert(APIPermission::kPower);
91 expected_apis.insert(APIPermission::kPlugin); 92 expected_apis.insert(APIPermission::kSerial);
92 93
93 permission = permission_info->CreateAPIPermission(); 94 permission = permission_info->CreateAPIPermission();
94 { 95 {
95 scoped_ptr<base::ListValue> value(new base::ListValue()); 96 scoped_ptr<base::ListValue> value(new base::ListValue());
96 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 97 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
97 value->Append(new base::StringValue("udp-bind::8080")); 98 value->Append(new base::StringValue("udp-bind::8080"));
98 value->Append(new base::StringValue("udp-send-to::8888")); 99 value->Append(new base::StringValue("udp-send-to::8888"));
99 value->Append(new base::StringValue("udp-send-to::8899")); 100 value->Append(new base::StringValue("udp-send-to::8899"));
100 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 101 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
101 } 102 }
(...skipping 17 matching lines...) Expand all
119 120
120 APIPermissionSet apis1; 121 APIPermissionSet apis1;
121 APIPermissionSet apis2; 122 APIPermissionSet apis2;
122 APIPermissionSet expected_apis; 123 APIPermissionSet expected_apis;
123 APIPermissionSet result; 124 APIPermissionSet result;
124 125
125 const APIPermissionInfo* permission_info = 126 const APIPermissionInfo* permission_info =
126 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 127 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
127 128
128 // Intersection with an empty set. 129 // Intersection with an empty set.
129 apis1.insert(APIPermission::kTab); 130 apis1.insert(APIPermission::kAudioCapture);
130 apis1.insert(APIPermission::kBackground); 131 apis1.insert(APIPermission::kDns);
131 permission = permission_info->CreateAPIPermission(); 132 permission = permission_info->CreateAPIPermission();
132 { 133 {
133 scoped_ptr<base::ListValue> value(new base::ListValue()); 134 scoped_ptr<base::ListValue> value(new base::ListValue());
134 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 135 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
135 value->Append(new base::StringValue("udp-bind::8080")); 136 value->Append(new base::StringValue("udp-bind::8080"));
136 value->Append(new base::StringValue("udp-send-to::8888")); 137 value->Append(new base::StringValue("udp-send-to::8888"));
137 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 138 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
138 } 139 }
139 apis1.insert(permission); 140 apis1.insert(permission);
140 141
142 ASSERT_TRUE(apis2.empty());
141 APIPermissionSet::Intersection(apis1, apis2, &result); 143 APIPermissionSet::Intersection(apis1, apis2, &result);
144
142 EXPECT_TRUE(apis1.Contains(result)); 145 EXPECT_TRUE(apis1.Contains(result));
143 EXPECT_TRUE(apis2.Contains(result)); 146 EXPECT_TRUE(apis2.Contains(result));
144 EXPECT_TRUE(apis1.Contains(apis2)); 147 EXPECT_TRUE(apis1.Contains(apis2));
145 EXPECT_FALSE(apis2.Contains(apis1)); 148 EXPECT_FALSE(apis2.Contains(apis1));
146 EXPECT_FALSE(result.Contains(apis1)); 149 EXPECT_FALSE(result.Contains(apis1));
147 EXPECT_TRUE(result.Contains(apis2)); 150 EXPECT_TRUE(result.Contains(apis2));
148 151
149 EXPECT_TRUE(result.empty()); 152 EXPECT_TRUE(result.empty());
150 EXPECT_EQ(expected_apis, result); 153 EXPECT_EQ(expected_apis, result);
151 154
152 // Now use a real second set. 155 // Now use a real second set.
153 apis2.insert(APIPermission::kTab); 156 apis2.insert(APIPermission::kAudioCapture);
154 apis2.insert(APIPermission::kProxy); 157 apis2.insert(APIPermission::kHid);
155 apis2.insert(APIPermission::kClipboardWrite); 158 apis2.insert(APIPermission::kPower);
156 apis2.insert(APIPermission::kPlugin); 159 apis2.insert(APIPermission::kSerial);
157 permission = permission_info->CreateAPIPermission(); 160 permission = permission_info->CreateAPIPermission();
158 { 161 {
159 scoped_ptr<base::ListValue> value(new base::ListValue()); 162 scoped_ptr<base::ListValue> value(new base::ListValue());
160 value->Append(new base::StringValue("udp-bind::8080")); 163 value->Append(new base::StringValue("udp-bind::8080"));
161 value->Append(new base::StringValue("udp-send-to::8888")); 164 value->Append(new base::StringValue("udp-send-to::8888"));
162 value->Append(new base::StringValue("udp-send-to::8899")); 165 value->Append(new base::StringValue("udp-send-to::8899"));
163 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 166 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
164 } 167 }
165 apis2.insert(permission); 168 apis2.insert(permission);
166 169
167 expected_apis.insert(APIPermission::kTab); 170 expected_apis.insert(APIPermission::kAudioCapture);
168 permission = permission_info->CreateAPIPermission(); 171 permission = permission_info->CreateAPIPermission();
169 { 172 {
170 scoped_ptr<base::ListValue> value(new base::ListValue()); 173 scoped_ptr<base::ListValue> value(new base::ListValue());
171 value->Append(new base::StringValue("udp-bind::8080")); 174 value->Append(new base::StringValue("udp-bind::8080"));
172 value->Append(new base::StringValue("udp-send-to::8888")); 175 value->Append(new base::StringValue("udp-send-to::8888"));
173 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 176 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
174 } 177 }
175 expected_apis.insert(permission); 178 expected_apis.insert(permission);
176 179
177 APIPermissionSet::Intersection(apis1, apis2, &result); 180 APIPermissionSet::Intersection(apis1, apis2, &result);
(...skipping 13 matching lines...) Expand all
191 194
192 APIPermissionSet apis1; 195 APIPermissionSet apis1;
193 APIPermissionSet apis2; 196 APIPermissionSet apis2;
194 APIPermissionSet expected_apis; 197 APIPermissionSet expected_apis;
195 APIPermissionSet result; 198 APIPermissionSet result;
196 199
197 const APIPermissionInfo* permission_info = 200 const APIPermissionInfo* permission_info =
198 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 201 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
199 202
200 // Difference with an empty set. 203 // Difference with an empty set.
201 apis1.insert(APIPermission::kTab); 204 apis1.insert(APIPermission::kAudioCapture);
202 apis1.insert(APIPermission::kBackground); 205 apis1.insert(APIPermission::kDns);
203 permission = permission_info->CreateAPIPermission(); 206 permission = permission_info->CreateAPIPermission();
204 { 207 {
205 scoped_ptr<base::ListValue> value(new base::ListValue()); 208 scoped_ptr<base::ListValue> value(new base::ListValue());
206 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 209 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
207 value->Append(new base::StringValue("udp-bind::8080")); 210 value->Append(new base::StringValue("udp-bind::8080"));
208 value->Append(new base::StringValue("udp-send-to::8888")); 211 value->Append(new base::StringValue("udp-send-to::8888"));
209 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 212 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
210 } 213 }
211 apis1.insert(permission); 214 apis1.insert(permission);
212 215
216 ASSERT_TRUE(apis2.empty());
213 APIPermissionSet::Difference(apis1, apis2, &result); 217 APIPermissionSet::Difference(apis1, apis2, &result);
214 218
215 EXPECT_EQ(apis1, result); 219 EXPECT_EQ(apis1, result);
216 220
217 // Now use a real second set. 221 // Now use a real second set.
218 apis2.insert(APIPermission::kTab); 222 apis2.insert(APIPermission::kAudioCapture);
219 apis2.insert(APIPermission::kProxy); 223 apis2.insert(APIPermission::kHid);
220 apis2.insert(APIPermission::kClipboardWrite); 224 apis2.insert(APIPermission::kPower);
221 apis2.insert(APIPermission::kPlugin); 225 apis2.insert(APIPermission::kSerial);
222 permission = permission_info->CreateAPIPermission(); 226 permission = permission_info->CreateAPIPermission();
223 { 227 {
224 scoped_ptr<base::ListValue> value(new base::ListValue()); 228 scoped_ptr<base::ListValue> value(new base::ListValue());
225 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 229 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
226 value->Append(new base::StringValue("udp-send-to::8899")); 230 value->Append(new base::StringValue("udp-send-to::8899"));
227 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 231 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
228 } 232 }
229 apis2.insert(permission); 233 apis2.insert(permission);
230 234
231 expected_apis.insert(APIPermission::kBackground); 235 expected_apis.insert(APIPermission::kDns);
232 permission = permission_info->CreateAPIPermission(); 236 permission = permission_info->CreateAPIPermission();
233 { 237 {
234 scoped_ptr<base::ListValue> value(new base::ListValue()); 238 scoped_ptr<base::ListValue> value(new base::ListValue());
235 value->Append(new base::StringValue("udp-bind::8080")); 239 value->Append(new base::StringValue("udp-bind::8080"));
236 value->Append(new base::StringValue("udp-send-to::8888")); 240 value->Append(new base::StringValue("udp-send-to::8888"));
237 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 241 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
238 } 242 }
239 expected_apis.insert(permission); 243 expected_apis.insert(permission);
240 244
241 APIPermissionSet::Difference(apis1, apis2, &result); 245 APIPermissionSet::Difference(apis1, apis2, &result);
(...skipping 11 matching lines...) Expand all
253 257
254 TEST(APIPermissionSetTest, IPC) { 258 TEST(APIPermissionSetTest, IPC) {
255 APIPermission* permission = NULL; 259 APIPermission* permission = NULL;
256 260
257 APIPermissionSet apis; 261 APIPermissionSet apis;
258 APIPermissionSet expected_apis; 262 APIPermissionSet expected_apis;
259 263
260 const APIPermissionInfo* permission_info = 264 const APIPermissionInfo* permission_info =
261 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); 265 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket);
262 266
263 apis.insert(APIPermission::kTab); 267 apis.insert(APIPermission::kAudioCapture);
264 apis.insert(APIPermission::kBackground); 268 apis.insert(APIPermission::kDns);
265 permission = permission_info->CreateAPIPermission(); 269 permission = permission_info->CreateAPIPermission();
266 { 270 {
267 scoped_ptr<base::ListValue> value(new base::ListValue()); 271 scoped_ptr<base::ListValue> value(new base::ListValue());
268 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); 272 value->Append(new base::StringValue("tcp-connect:*.example.com:80"));
269 value->Append(new base::StringValue("udp-bind::8080")); 273 value->Append(new base::StringValue("udp-bind::8080"));
270 value->Append(new base::StringValue("udp-send-to::8888")); 274 value->Append(new base::StringValue("udp-send-to::8888"));
271 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); 275 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL));
272 } 276 }
273 apis.insert(permission); 277 apis.insert(permission);
274 278
275 EXPECT_NE(apis, expected_apis); 279 EXPECT_NE(apis, expected_apis);
276 280
277 IPC::Message m; 281 IPC::Message m;
278 WriteParam(&m, apis); 282 WriteParam(&m, apis);
279 PickleIterator iter(m); 283 PickleIterator iter(m);
280 CHECK(ReadParam(&m, &iter, &expected_apis)); 284 CHECK(ReadParam(&m, &iter, &expected_apis));
281 EXPECT_EQ(apis, expected_apis); 285 EXPECT_EQ(apis, expected_apis);
282 } 286 }
283 287
284 TEST(APIPermissionSetTest, ImplicitPermissions) {
285 APIPermissionSet apis;
286 apis.insert(APIPermission::kFileSystemWrite);
287 apis.AddImpliedPermissions();
288
289 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(),
290 APIPermission::kFileSystemWrite);
291 EXPECT_EQ(apis.size(), 1u);
292
293 apis.erase(APIPermission::kFileSystemWrite);
294 apis.insert(APIPermission::kFileSystemDirectory);
295 apis.AddImpliedPermissions();
296
297 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(),
298 APIPermission::kFileSystemDirectory);
299 EXPECT_EQ(apis.size(), 1u);
300
301 apis.insert(APIPermission::kFileSystemWrite);
302 apis.AddImpliedPermissions();
303
304 EXPECT_EQ(apis.find(APIPermission::kFileSystemWrite)->id(),
305 APIPermission::kFileSystemWrite);
306 EXPECT_EQ(apis.find(APIPermission::kFileSystemDirectory)->id(),
307 APIPermission::kFileSystemDirectory);
308 EXPECT_EQ(apis.find(APIPermission::kFileSystemWriteDirectory)->id(),
309 APIPermission::kFileSystemWriteDirectory);
310 EXPECT_EQ(apis.size(), 3u);
311 }
312
313 } // namespace extensions 288 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698