media_galleries_permission_unittest.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
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 "extensions/common/permissions/api_permission.h"
9#include "extensions/common/permissions/media_galleries_permission.h"
10#include "extensions/common/permissions/media_galleries_permission_data.h"
11#include "extensions/common/permissions/permissions_info.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14using content::SocketPermissionRequest;
15using extensions::SocketPermissionData;
16
17namespace extensions {
18
19namespace {
20
21TEST(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
95TEST(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
157TEST(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
209TEST(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
232TEST(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
276