media_galleries_permission_unittest.cc revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
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
14using content::SocketPermissionRequest;
15using extensions::SocketPermissionData;
16
17namespace extensions {
18
19namespace {
20
21TEST(MediaGalleriesPermissionTest, GoodValues) {
22  const APIPermissionInfo* permission_info =
23    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
24
25  scoped_ptr<APIPermission> permission(
26      permission_info->CreateAPIPermission());
27
28  // access_type + all_detected
29  scoped_ptr<base::ListValue> value(new base::ListValue());
30  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
31  value->AppendString(MediaGalleriesPermission::kReadPermission);
32  EXPECT_TRUE(permission->FromValue(value.get()));
33
34  value.reset(new base::ListValue());
35  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
36  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
37  value->AppendString(MediaGalleriesPermission::kReadPermission);
38  EXPECT_TRUE(permission->FromValue(value.get()));
39
40  // all_detected
41  value.reset(new base::ListValue());
42  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
43  EXPECT_TRUE(permission->FromValue(value.get()));
44
45  // access_type
46  value.reset(new base::ListValue());
47  value->AppendString(MediaGalleriesPermission::kReadPermission);
48  EXPECT_TRUE(permission->FromValue(value.get()));
49
50  value.reset(new base::ListValue());
51  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
52  value->AppendString(MediaGalleriesPermission::kReadPermission);
53  EXPECT_TRUE(permission->FromValue(value.get()));
54
55  // Repeats do not make a difference.
56  value.reset(new base::ListValue());
57  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
58  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
59  EXPECT_TRUE(permission->FromValue(value.get()));
60
61  value.reset(new base::ListValue());
62  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
63  value->AppendString(MediaGalleriesPermission::kReadPermission);
64  value->AppendString(MediaGalleriesPermission::kReadPermission);
65  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
66  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
67  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
68  EXPECT_TRUE(permission->FromValue(value.get()));
69}
70
71TEST(MediaGalleriesPermissionTest, BadValues) {
72  const APIPermissionInfo* permission_info =
73    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
74
75  scoped_ptr<APIPermission> permission(permission_info->CreateAPIPermission());
76
77  // Empty
78  scoped_ptr<base::ListValue> value(new base::ListValue());
79  EXPECT_FALSE(permission->FromValue(value.get()));
80
81  // copyTo without read
82  value.reset(new base::ListValue());
83  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
84  EXPECT_FALSE(permission->FromValue(value.get()));
85
86  value.reset(new base::ListValue());
87  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
88  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
89  EXPECT_FALSE(permission->FromValue(value.get()));
90
91  // Repeats do not make a difference.
92  value.reset(new base::ListValue());
93  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
94  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
95  EXPECT_FALSE(permission->FromValue(value.get()));
96
97  value.reset(new base::ListValue());
98  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
99  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
100  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
101  EXPECT_FALSE(permission->FromValue(value.get()));
102}
103
104TEST(MediaGalleriesPermissionTest, Equal) {
105  const APIPermissionInfo* permission_info =
106    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
107
108  scoped_ptr<APIPermission> permission1(
109      permission_info->CreateAPIPermission());
110  scoped_ptr<APIPermission> permission2(
111      permission_info->CreateAPIPermission());
112
113  scoped_ptr<base::ListValue> value(new base::ListValue());
114  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
115  value->AppendString(MediaGalleriesPermission::kReadPermission);
116  ASSERT_TRUE(permission1->FromValue(value.get()));
117
118  value.reset(new base::ListValue());
119  value->AppendString(MediaGalleriesPermission::kReadPermission);
120  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
121  ASSERT_TRUE(permission2->FromValue(value.get()));
122  EXPECT_TRUE(permission1->Equal(permission2.get()));
123
124  value.reset(new base::ListValue());
125  value->AppendString(MediaGalleriesPermission::kReadPermission);
126  value->AppendString(MediaGalleriesPermission::kReadPermission);
127  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
128  ASSERT_TRUE(permission2->FromValue(value.get()));
129  EXPECT_TRUE(permission1->Equal(permission2.get()));
130
131  value.reset(new base::ListValue());
132  value->AppendString(MediaGalleriesPermission::kReadPermission);
133  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
134  ASSERT_TRUE(permission1->FromValue(value.get()));
135
136  value.reset(new base::ListValue());
137  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
138  value->AppendString(MediaGalleriesPermission::kReadPermission);
139  ASSERT_TRUE(permission2->FromValue(value.get()));
140  EXPECT_TRUE(permission1->Equal(permission2.get()));
141}
142
143TEST(MediaGalleriesPermissionTest, NotEqual) {
144  const APIPermissionInfo* permission_info =
145    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
146
147  scoped_ptr<APIPermission> permission1(
148      permission_info->CreateAPIPermission());
149  scoped_ptr<APIPermission> permission2(
150      permission_info->CreateAPIPermission());
151
152  scoped_ptr<base::ListValue> value(new base::ListValue());
153  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
154  value->AppendString(MediaGalleriesPermission::kReadPermission);
155  ASSERT_TRUE(permission1->FromValue(value.get()));
156
157  value.reset(new base::ListValue());
158  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
159  value->AppendString(MediaGalleriesPermission::kReadPermission);
160  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
161  ASSERT_TRUE(permission2->FromValue(value.get()));
162  EXPECT_FALSE(permission1->Equal(permission2.get()));
163}
164
165TEST(MediaGalleriesPermissionTest, ToFromValue) {
166  const APIPermissionInfo* permission_info =
167    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
168
169  scoped_ptr<APIPermission> permission1(
170      permission_info->CreateAPIPermission());
171  scoped_ptr<APIPermission> permission2(
172      permission_info->CreateAPIPermission());
173
174  scoped_ptr<base::ListValue> value(new base::ListValue());
175  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
176  value->AppendString(MediaGalleriesPermission::kReadPermission);
177  ASSERT_TRUE(permission1->FromValue(value.get()));
178
179  scoped_ptr<base::Value> vtmp(permission1->ToValue());
180  ASSERT_TRUE(vtmp);
181  ASSERT_TRUE(permission2->FromValue(vtmp.get()));
182  EXPECT_TRUE(permission1->Equal(permission2.get()));
183
184  value.reset(new base::ListValue());
185  value->AppendString(MediaGalleriesPermission::kReadPermission);
186  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
187  ASSERT_TRUE(permission1->FromValue(value.get()));
188
189  vtmp = permission1->ToValue();
190  ASSERT_TRUE(vtmp);
191  ASSERT_TRUE(permission2->FromValue(vtmp.get()));
192  EXPECT_TRUE(permission1->Equal(permission2.get()));
193}
194
195}  // namespace
196
197}  // namespace extensions
198