media_galleries_permission_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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  EXPECT_TRUE(permission->FromValue(value.get()));
38
39  value.reset(new base::ListValue());
40  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
41  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
42  value->AppendString(MediaGalleriesPermission::kReadPermission);
43  EXPECT_TRUE(permission->FromValue(value.get()));
44
45  // all_detected
46  value.reset(new base::ListValue());
47  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
48  EXPECT_TRUE(permission->FromValue(value.get()));
49
50  // access_type
51  value.reset(new base::ListValue());
52  value->AppendString(MediaGalleriesPermission::kReadPermission);
53  EXPECT_TRUE(permission->FromValue(value.get()));
54
55  value.reset(new base::ListValue());
56  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
57  EXPECT_TRUE(permission->FromValue(value.get()));
58
59  value.reset(new base::ListValue());
60  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
61  value->AppendString(MediaGalleriesPermission::kReadPermission);
62  EXPECT_TRUE(permission->FromValue(value.get()));
63
64  // Repeats are ok.
65  value.reset(new base::ListValue());
66  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
67  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
68  EXPECT_TRUE(permission->FromValue(value.get()));
69
70  value.reset(new base::ListValue());
71  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
72  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
73  EXPECT_TRUE(permission->FromValue(value.get()));
74
75  value.reset(new base::ListValue());
76  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
77  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
78  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
79  EXPECT_TRUE(permission->FromValue(value.get()));
80}
81
82TEST(MediaGalleriesPermissionTest, BadValues) {
83  const APIPermissionInfo* permission_info =
84    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
85
86  scoped_ptr<APIPermission> permission(permission_info->CreateAPIPermission());
87
88  // Empty
89  scoped_ptr<base::ListValue> value(new base::ListValue());
90  EXPECT_FALSE(permission->FromValue(value.get()));
91}
92
93TEST(MediaGalleriesPermissionTest, Equal) {
94  const APIPermissionInfo* permission_info =
95    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
96
97  scoped_ptr<APIPermission> permission1(
98      permission_info->CreateAPIPermission());
99  scoped_ptr<APIPermission> permission2(
100      permission_info->CreateAPIPermission());
101
102  scoped_ptr<base::ListValue> value(new base::ListValue());
103  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
104  value->AppendString(MediaGalleriesPermission::kReadPermission);
105  ASSERT_TRUE(permission1->FromValue(value.get()));
106
107  value.reset(new base::ListValue());
108  value->AppendString(MediaGalleriesPermission::kReadPermission);
109  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
110  ASSERT_TRUE(permission2->FromValue(value.get()));
111  EXPECT_TRUE(permission1->Equal(permission2.get()));
112
113  value.reset(new base::ListValue());
114  value->AppendString(MediaGalleriesPermission::kReadPermission);
115  value->AppendString(MediaGalleriesPermission::kReadPermission);
116  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
117  ASSERT_TRUE(permission2->FromValue(value.get()));
118  EXPECT_TRUE(permission1->Equal(permission2.get()));
119}
120
121TEST(MediaGalleriesPermissionTest, ToFromValue) {
122  const APIPermissionInfo* permission_info =
123    PermissionsInfo::GetInstance()->GetByID(APIPermission::kMediaGalleries);
124
125  scoped_ptr<APIPermission> permission1(
126      permission_info->CreateAPIPermission());
127  scoped_ptr<APIPermission> permission2(
128      permission_info->CreateAPIPermission());
129
130  scoped_ptr<base::ListValue> value(new base::ListValue());
131  value->AppendString(MediaGalleriesPermission::kAllAutoDetectedPermission);
132  value->AppendString(MediaGalleriesPermission::kReadPermission);
133  ASSERT_TRUE(permission1->FromValue(value.get()));
134
135  scoped_ptr<base::Value> vtmp(permission1->ToValue());
136  ASSERT_TRUE(vtmp);
137  ASSERT_TRUE(permission2->FromValue(vtmp.get()));
138  EXPECT_TRUE(permission1->Equal(permission2.get()));
139
140  value.reset(new base::ListValue());
141  value->AppendString(MediaGalleriesPermission::kCopyToPermission);
142  ASSERT_TRUE(permission1->FromValue(value.get()));
143
144  vtmp = permission1->ToValue();
145  ASSERT_TRUE(vtmp);
146  ASSERT_TRUE(permission2->FromValue(vtmp.get()));
147  EXPECT_TRUE(permission1->Equal(permission2.get()));
148}
149
150}  // namespace
151
152}  // namespace extensions
153