| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h" | 5 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 UnpackPermissionSet(permissions_object, true, &error); | 78 UnpackPermissionSet(permissions_object, true, &error); |
| 79 EXPECT_TRUE(error.empty()); | 79 EXPECT_TRUE(error.empty()); |
| 80 | 80 |
| 81 EXPECT_EQ(permission_set, *from_value); | 81 EXPECT_EQ(permission_set, *from_value); |
| 82 } | 82 } |
| 83 | 83 |
| 84 // Tests various error conditions and edge cases when unpacking values | 84 // Tests various error conditions and edge cases when unpacking values |
| 85 // into PermissionSets. | 85 // into PermissionSets. |
| 86 TEST(ExtensionPermissionsAPIHelpers, Unpack) { | 86 TEST(ExtensionPermissionsAPIHelpers, Unpack) { |
| 87 std::unique_ptr<base::ListValue> apis(new base::ListValue()); | 87 std::unique_ptr<base::ListValue> apis(new base::ListValue()); |
| 88 apis->Append(new base::StringValue("tabs")); | 88 apis->AppendString("tabs"); |
| 89 std::unique_ptr<base::ListValue> origins(new base::ListValue()); | 89 std::unique_ptr<base::ListValue> origins(new base::ListValue()); |
| 90 origins->Append(new base::StringValue("http://a.com/*")); | 90 origins->AppendString("http://a.com/*"); |
| 91 | 91 |
| 92 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); | 92 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); |
| 93 std::unique_ptr<const PermissionSet> permissions; | 93 std::unique_ptr<const PermissionSet> permissions; |
| 94 std::string error; | 94 std::string error; |
| 95 | 95 |
| 96 // Origins shouldn't have to be present. | 96 // Origins shouldn't have to be present. |
| 97 { | 97 { |
| 98 Permissions permissions_object; | 98 Permissions permissions_object; |
| 99 value->Set("permissions", apis->DeepCopy()); | 99 value->Set("permissions", apis->DeepCopy()); |
| 100 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); | 100 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 114 EXPECT_TRUE(permissions.get()); | 114 EXPECT_TRUE(permissions.get()); |
| 115 EXPECT_TRUE(error.empty()); | 115 EXPECT_TRUE(error.empty()); |
| 116 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); | 116 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); |
| 117 } | 117 } |
| 118 | 118 |
| 119 // Throw errors for non-string API permissions. | 119 // Throw errors for non-string API permissions. |
| 120 { | 120 { |
| 121 Permissions permissions_object; | 121 Permissions permissions_object; |
| 122 value->Clear(); | 122 value->Clear(); |
| 123 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); | 123 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); |
| 124 invalid_apis->Append(new base::FundamentalValue(3)); | 124 invalid_apis->AppendInteger(3); |
| 125 value->Set("permissions", invalid_apis->DeepCopy()); | 125 value->Set("permissions", invalid_apis->DeepCopy()); |
| 126 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); | 126 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); |
| 127 } | 127 } |
| 128 | 128 |
| 129 // Throw errors for non-string origins. | 129 // Throw errors for non-string origins. |
| 130 { | 130 { |
| 131 Permissions permissions_object; | 131 Permissions permissions_object; |
| 132 value->Clear(); | 132 value->Clear(); |
| 133 std::unique_ptr<base::ListValue> invalid_origins(origins->DeepCopy()); | 133 std::unique_ptr<base::ListValue> invalid_origins(origins->DeepCopy()); |
| 134 invalid_origins->Append(new base::FundamentalValue(3)); | 134 invalid_origins->AppendInteger(3); |
| 135 value->Set("origins", invalid_origins->DeepCopy()); | 135 value->Set("origins", invalid_origins->DeepCopy()); |
| 136 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); | 136 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); |
| 137 } | 137 } |
| 138 | 138 |
| 139 // Throw errors when "origins" or "permissions" are not list values. | 139 // Throw errors when "origins" or "permissions" are not list values. |
| 140 { | 140 { |
| 141 Permissions permissions_object; | 141 Permissions permissions_object; |
| 142 value->Clear(); | 142 value->Clear(); |
| 143 value->Set("origins", new base::FundamentalValue(2)); | 143 value->Set("origins", new base::FundamentalValue(2)); |
| 144 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); | 144 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 162 EXPECT_TRUE(permissions.get()); | 162 EXPECT_TRUE(permissions.get()); |
| 163 EXPECT_TRUE(error.empty()); | 163 EXPECT_TRUE(error.empty()); |
| 164 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); | 164 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); |
| 165 } | 165 } |
| 166 | 166 |
| 167 // Unknown permissions should throw an error. | 167 // Unknown permissions should throw an error. |
| 168 { | 168 { |
| 169 Permissions permissions_object; | 169 Permissions permissions_object; |
| 170 value->Clear(); | 170 value->Clear(); |
| 171 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); | 171 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); |
| 172 invalid_apis->Append(new base::StringValue("unknown_permission")); | 172 invalid_apis->AppendString("unknown_permission"); |
| 173 value->Set("permissions", invalid_apis->DeepCopy()); | 173 value->Set("permissions", invalid_apis->DeepCopy()); |
| 174 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); | 174 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); |
| 175 permissions = UnpackPermissionSet(permissions_object, true, &error); | 175 permissions = UnpackPermissionSet(permissions_object, true, &error); |
| 176 EXPECT_FALSE(permissions.get()); | 176 EXPECT_FALSE(permissions.get()); |
| 177 EXPECT_FALSE(error.empty()); | 177 EXPECT_FALSE(error.empty()); |
| 178 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission."); | 178 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission."); |
| 179 } | 179 } |
| 180 } | 180 } |
| 181 | 181 |
| 182 } // namespace extensions | 182 } // namespace extensions |
| OLD | NEW |