Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / permissions / media_galleries_permission_unittest.cc
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.
4
5 // These tests make sure MediaGalleriesPermission values are parsed correctly.
6
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"
13
14 using content::SocketPermissionRequest;
15 using extensions::SocketPermissionData;
16
17 namespace extensions {
18
19 namespace {
20
21 TEST(MediaGalleriesPermissionTest, GoodValues) {
22   std::string error;
23   const APIPermissionInfo* permission_info =
24     PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
25
26   scoped_ptr<APIPermission> permission(
27       permission_info->CreateAPIPermission());
28
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());
35   error.clear();
36
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());
44   error.clear();
45
46   // all_detected
47   value.reset(new base::ListValue());
48   value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
49   EXPECT_TRUE(permission->FromValue(value.get(), &error));
50   EXPECT_TRUE(error.empty());
51   error.clear();
52
53   // access_type
54   value.reset(new base::ListValue());
55   value->AppendString(MediaGalleriesPermission::kReadPermission);
56   EXPECT_TRUE(permission->FromValue(value.get(), &error));
57   EXPECT_TRUE(error.empty());
58   error.clear();
59
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());
65   error.clear();
66
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());
73   error.clear();
74
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());
81   error.clear();
82
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());
92   error.clear();
93 }
94
95 TEST(MediaGalleriesPermissionTest, BadValues) {
96   std::string error;
97   const APIPermissionInfo* permission_info =
98     PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
99
100   scoped_ptr<APIPermission> permission(permission_info->CreateAPIPermission());
101
102   // Empty
103   scoped_ptr<base::ListValue> value(new base::ListValue());
104   EXPECT_FALSE(permission->FromValue(value.get(), &error));
105   EXPECT_FALSE(error.empty());
106   error.clear();
107
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());
113   error.clear();
114
115   value.reset(new base::ListValue());
116   value->AppendString(MediaGalleriesPermission::kDeletePermission);
117   EXPECT_FALSE(permission->FromValue(value.get(), &error));
118   EXPECT_FALSE(error.empty());
119   error.clear();
120
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());
127   error.clear();
128
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());
136   error.clear();
137
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());
144   error.clear();
145
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());
154   error.clear();
155 }
156
157 TEST(MediaGalleriesPermissionTest, Equal) {
158   const APIPermissionInfo* permission_info =
159     PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
160
161   scoped_ptr<APIPermission> permission1(
162       permission_info->CreateAPIPermission());
163   scoped_ptr<APIPermission> permission2(
164       permission_info->CreateAPIPermission());
165
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));
170
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()));
176
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()));
183
184   value.reset(new base::ListValue());
185   value->AppendString(MediaGalleriesPermission::kReadPermission);
186   value->AppendString(MediaGalleriesPermission::kDeletePermission);
187   ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
188
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()));
194
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));
200
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()));
207 }
208
209 TEST(MediaGalleriesPermissionTest, NotEqual) {
210   const APIPermissionInfo* permission_info =
211     PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
212
213   scoped_ptr<APIPermission> permission1(
214       permission_info->CreateAPIPermission());
215   scoped_ptr<APIPermission> permission2(
216       permission_info->CreateAPIPermission());
217
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));
222
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()));
230 }
231
232 TEST(MediaGalleriesPermissionTest, ToFromValue) {
233   const APIPermissionInfo* permission_info =
234     PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
235
236   scoped_ptr<APIPermission> permission1(
237       permission_info->CreateAPIPermission());
238   scoped_ptr<APIPermission> permission2(
239       permission_info->CreateAPIPermission());
240
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));
245
246   scoped_ptr<base::Value> vtmp(permission1->ToValue());
247   ASSERT_TRUE(vtmp);
248   ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
249   EXPECT_TRUE(permission1->Equal(permission2.get()));
250
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));
256
257   vtmp = permission1->ToValue();
258   ASSERT_TRUE(vtmp);
259   ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
260   EXPECT_TRUE(permission1->Equal(permission2.get()));
261
262   value.reset(new base::ListValue());
263   value->AppendString(MediaGalleriesPermission::kReadPermission);
264   value->AppendString(MediaGalleriesPermission::kDeletePermission);
265   ASSERT_TRUE(permission1->FromValue(value.get(), NULL));
266
267   vtmp = permission1->ToValue();
268   ASSERT_TRUE(vtmp);
269   ASSERT_TRUE(permission2->FromValue(vtmp.get(), NULL));
270   EXPECT_TRUE(permission1->Equal(permission2.get()));
271 }
272
273 }  // namespace
274
275 }  // namespace extensions