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