1 // Copyright (c) 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 // These tests make sure MediaGalleriesPermission values are parsed correctly.
7 #include "base/values.h"
8 #include "chrome/common/extensions/permissions/media_galleries_permission.h"
9 #include "chrome/common/extensions/permissions/media_galleries_permission_data.h"
10 #include "extensions/common/permissions/api_permission.h"
11 #include "extensions/common/permissions/permissions_info.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 using content::SocketPermissionRequest;
15 using extensions::SocketPermissionData;
17 namespace extensions {
21 TEST(MediaGalleriesPermissionTest, GoodValues) {
23 const APIPermissionInfo* permission_info =
24 PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
26 scoped_ptr<APIPermission> permission(
27 permission_info->CreateAPIPermission());
29 // access_type + all_detected
30 scoped_ptr<base::ListValue> value(new base::ListValue());
31 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
32 value->AppendString(MediaGalleriesPermission::kReadPermission);
33 EXPECT_TRUE(permission->FromValue(value.get(), &error));
34 EXPECT_TRUE(error.empty());
37 value.reset(new base::ListValue());
38 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
39 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
40 value->AppendString(MediaGalleriesPermission::kReadPermission);
41 value->AppendString(MediaGalleriesPermission::kDeletePermission);
42 EXPECT_TRUE(permission->FromValue(value.get(), &error));
43 EXPECT_TRUE(error.empty());
47 value.reset(new base::ListValue());
48 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
49 EXPECT_TRUE(permission->FromValue(value.get(), &error));
50 EXPECT_TRUE(error.empty());
54 value.reset(new base::ListValue());
55 value->AppendString(MediaGalleriesPermission::kReadPermission);
56 EXPECT_TRUE(permission->FromValue(value.get(), &error));
57 EXPECT_TRUE(error.empty());
60 value.reset(new base::ListValue());
61 value->AppendString(MediaGalleriesPermission::kDeletePermission);
62 value->AppendString(MediaGalleriesPermission::kReadPermission);
63 EXPECT_TRUE(permission->FromValue(value.get(), &error));
64 EXPECT_TRUE(error.empty());
67 value.reset(new base::ListValue());
68 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
69 value->AppendString(MediaGalleriesPermission::kDeletePermission);
70 value->AppendString(MediaGalleriesPermission::kReadPermission);
71 EXPECT_TRUE(permission->FromValue(value.get(), &error));
72 EXPECT_TRUE(error.empty());
75 // Repeats do not make a difference.
76 value.reset(new base::ListValue());
77 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
78 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
79 EXPECT_TRUE(permission->FromValue(value.get(), &error));
80 EXPECT_TRUE(error.empty());
83 value.reset(new base::ListValue());
84 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
85 value->AppendString(MediaGalleriesPermission::kReadPermission);
86 value->AppendString(MediaGalleriesPermission::kReadPermission);
87 value->AppendString(MediaGalleriesPermission::kDeletePermission);
88 value->AppendString(MediaGalleriesPermission::kDeletePermission);
89 value->AppendString(MediaGalleriesPermission::kDeletePermission);
90 EXPECT_TRUE(permission->FromValue(value.get(), &error));
91 EXPECT_TRUE(error.empty());
95 TEST(MediaGalleriesPermissionTest, BadValues) {
97 const APIPermissionInfo* permission_info =
98 PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
100 scoped_ptr<APIPermission> permission(permission_info->CreateAPIPermission());
103 scoped_ptr<base::ListValue> value(new base::ListValue());
104 EXPECT_FALSE(permission->FromValue(value.get(), &error));
105 EXPECT_FALSE(error.empty());
108 // copyTo and delete without read
109 value.reset(new base::ListValue());
110 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
111 EXPECT_FALSE(permission->FromValue(value.get(), &error));
112 EXPECT_FALSE(error.empty());
115 value.reset(new base::ListValue());
116 value->AppendString(MediaGalleriesPermission::kDeletePermission);
117 EXPECT_FALSE(permission->FromValue(value.get(), &error));
118 EXPECT_FALSE(error.empty());
121 value.reset(new base::ListValue());
122 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
123 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
124 value->AppendString(MediaGalleriesPermission::kDeletePermission);
125 EXPECT_FALSE(permission->FromValue(value.get(), &error));
126 EXPECT_FALSE(error.empty());
129 // copyTo without delete
130 value.reset(new base::ListValue());
131 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
132 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
133 value->AppendString(MediaGalleriesPermission::kReadPermission);
134 EXPECT_FALSE(permission->FromValue(value.get(), &error));
135 EXPECT_FALSE(error.empty());
138 // Repeats do not make a difference.
139 value.reset(new base::ListValue());
140 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
141 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
142 EXPECT_FALSE(permission->FromValue(value.get(), &error));
143 EXPECT_FALSE(error.empty());
146 value.reset(new base::ListValue());
147 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
148 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
149 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
150 value->AppendString(MediaGalleriesPermission::kDeletePermission);
151 value->AppendString(MediaGalleriesPermission::kDeletePermission);
152 EXPECT_FALSE(permission->FromValue(value.get(), &error));
153 EXPECT_FALSE(error.empty());
157 TEST(MediaGalleriesPermissionTest, Equal) {
158 const APIPermissionInfo* permission_info =
159 PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
161 scoped_ptr<APIPermission> permission1(
162 permission_info->CreateAPIPermission());
163 scoped_ptr<APIPermission> permission2(
164 permission_info->CreateAPIPermission());
166 scoped_ptr<base::ListValue> value(new base::ListValue());
167 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
168 value->AppendString(MediaGalleriesPermission::kReadPermission);
169 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
171 value.reset(new base::ListValue());
172 value->AppendString(MediaGalleriesPermission::kReadPermission);
173 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
174 ASSERT_TRUE(permission2->FromValue(value.get(), NULL));
175 EXPECT_TRUE(permission1->Equal(permission2.get()));
177 value.reset(new base::ListValue());
178 value->AppendString(MediaGalleriesPermission::kReadPermission);
179 value->AppendString(MediaGalleriesPermission::kReadPermission);
180 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
181 ASSERT_TRUE(permission2->FromValue(value.get(), NULL));
182 EXPECT_TRUE(permission1->Equal(permission2.get()));
184 value.reset(new base::ListValue());
185 value->AppendString(MediaGalleriesPermission::kReadPermission);
186 value->AppendString(MediaGalleriesPermission::kDeletePermission);
187 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
189 value.reset(new base::ListValue());
190 value->AppendString(MediaGalleriesPermission::kDeletePermission);
191 value->AppendString(MediaGalleriesPermission::kReadPermission);
192 ASSERT_TRUE(permission2->FromValue(value.get(), NULL));
193 EXPECT_TRUE(permission1->Equal(permission2.get()));
195 value.reset(new base::ListValue());
196 value->AppendString(MediaGalleriesPermission::kReadPermission);
197 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
198 value->AppendString(MediaGalleriesPermission::kDeletePermission);
199 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
201 value.reset(new base::ListValue());
202 value->AppendString(MediaGalleriesPermission::kDeletePermission);
203 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
204 value->AppendString(MediaGalleriesPermission::kReadPermission);
205 ASSERT_TRUE(permission2->FromValue(value.get(), NULL));
206 EXPECT_TRUE(permission1->Equal(permission2.get()));
209 TEST(MediaGalleriesPermissionTest, NotEqual) {
210 const APIPermissionInfo* permission_info =
211 PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
213 scoped_ptr<APIPermission> permission1(
214 permission_info->CreateAPIPermission());
215 scoped_ptr<APIPermission> permission2(
216 permission_info->CreateAPIPermission());
218 scoped_ptr<base::ListValue> value(new base::ListValue());
219 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
220 value->AppendString(MediaGalleriesPermission::kReadPermission);
221 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
223 value.reset(new base::ListValue());
224 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
225 value->AppendString(MediaGalleriesPermission::kReadPermission);
226 value->AppendString(MediaGalleriesPermission::kDeletePermission);
227 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
228 ASSERT_TRUE(permission2->FromValue(value.get(), NULL));
229 EXPECT_FALSE(permission1->Equal(permission2.get()));
232 TEST(MediaGalleriesPermissionTest, ToFromValue) {
233 const APIPermissionInfo* permission_info =
234 PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
236 scoped_ptr<APIPermission> permission1(
237 permission_info->CreateAPIPermission());
238 scoped_ptr<APIPermission> permission2(
239 permission_info->CreateAPIPermission());
241 scoped_ptr<base::ListValue> value(new base::ListValue());
242 value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
243 value->AppendString(MediaGalleriesPermission::kReadPermission);
244 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
246 scoped_ptr<base::Value> vtmp(permission1->ToValue());
248 ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
249 EXPECT_TRUE(permission1->Equal(permission2.get()));
251 value.reset(new base::ListValue());
252 value->AppendString(MediaGalleriesPermission::kReadPermission);
253 value->AppendString(MediaGalleriesPermission::kDeletePermission);
254 value->AppendString(MediaGalleriesPermission::kCopyToPermission);
255 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
257 vtmp = permission1->ToValue();
259 ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
260 EXPECT_TRUE(permission1->Equal(permission2.get()));
262 value.reset(new base::ListValue());
263 value->AppendString(MediaGalleriesPermission::kReadPermission);
264 value->AppendString(MediaGalleriesPermission::kDeletePermission);
265 ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
267 vtmp = permission1->ToValue();
269 ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
270 EXPECT_TRUE(permission1->Equal(permission2.get()));
275 } // namespace extensions