| 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/pickle.h" | 7 #include "base/pickle.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/common/extensions/extension_unittest.h" | 9 #include "chrome/common/extensions/permissions/permissions_info.h" |
| 10 #include "chrome/common/extensions/permissions/socket_permission.h" | 10 #include "chrome/common/extensions/permissions/socket_permission.h" |
| 11 #include "chrome/common/extensions/permissions/socket_permission_data.h" | 11 #include "chrome/common/extensions/permissions/socket_permission_data.h" |
| 12 #include "ipc/ipc_message.h" | 12 #include "ipc/ipc_message.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 namespace extensions { | 15 namespace extensions { |
| 16 | 16 |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 using content::SocketPermissionRequest; | 19 using content::SocketPermissionRequest; |
| 20 | 20 |
| 21 void ParseTest(const std::string& permission, | 21 void ParseTest(const std::string& permission, |
| 22 const std::string& expected_result) { | 22 const std::string& expected_result) { |
| 23 SocketPermissionData data; | 23 SocketPermissionData data; |
| 24 ASSERT_TRUE(data.ParseForTest(permission)) << "Parse permission \"" | 24 ASSERT_TRUE(data.ParseForTest(permission)) << "Parse permission \"" |
| 25 << permission << "\" failed."; | 25 << permission << "\" failed."; |
| 26 EXPECT_EQ(expected_result, data.GetAsStringForTest()); | 26 EXPECT_EQ(expected_result, data.GetAsStringForTest()); |
| 27 } | 27 } |
| 28 | 28 |
| 29 class SocketPermissionTest : public ExtensionTest { | 29 TEST(SocketPermissionTest, General) { |
| 30 }; | |
| 31 | |
| 32 TEST_F(SocketPermissionTest, General) { | |
| 33 SocketPermissionData data1, data2; | 30 SocketPermissionData data1, data2; |
| 34 | 31 |
| 35 CHECK(data1.ParseForTest("tcp-connect")); | 32 CHECK(data1.ParseForTest("tcp-connect")); |
| 36 CHECK(data2.ParseForTest("tcp-connect")); | 33 CHECK(data2.ParseForTest("tcp-connect")); |
| 37 | 34 |
| 38 EXPECT_TRUE(data1 == data2); | 35 EXPECT_TRUE(data1 == data2); |
| 39 EXPECT_FALSE(data1 < data2); | 36 EXPECT_FALSE(data1 < data2); |
| 40 | 37 |
| 41 CHECK(data1.ParseForTest("tcp-connect")); | 38 CHECK(data1.ParseForTest("tcp-connect")); |
| 42 CHECK(data2.ParseForTest("tcp-connect:www.example.com")); | 39 CHECK(data2.ParseForTest("tcp-connect:www.example.com")); |
| 43 | 40 |
| 44 EXPECT_FALSE(data1 == data2); | 41 EXPECT_FALSE(data1 == data2); |
| 45 EXPECT_TRUE(data1 < data2); | 42 EXPECT_TRUE(data1 < data2); |
| 46 } | 43 } |
| 47 | 44 |
| 48 TEST_F(SocketPermissionTest, Parse) { | 45 TEST(SocketPermissionTest, Parse) { |
| 49 SocketPermissionData data; | 46 SocketPermissionData data; |
| 50 | 47 |
| 51 EXPECT_FALSE(data.ParseForTest(std::string())); | 48 EXPECT_FALSE(data.ParseForTest(std::string())); |
| 52 EXPECT_FALSE(data.ParseForTest("*")); | 49 EXPECT_FALSE(data.ParseForTest("*")); |
| 53 EXPECT_FALSE(data.ParseForTest("\00\00*")); | 50 EXPECT_FALSE(data.ParseForTest("\00\00*")); |
| 54 EXPECT_FALSE(data.ParseForTest("\01*")); | 51 EXPECT_FALSE(data.ParseForTest("\01*")); |
| 55 EXPECT_FALSE(data.ParseForTest("tcp-connect:www.example.com:-1")); | 52 EXPECT_FALSE(data.ParseForTest("tcp-connect:www.example.com:-1")); |
| 56 EXPECT_FALSE(data.ParseForTest("tcp-connect:www.example.com:65536")); | 53 EXPECT_FALSE(data.ParseForTest("tcp-connect:www.example.com:65536")); |
| 57 EXPECT_FALSE(data.ParseForTest("tcp-connect:::")); | 54 EXPECT_FALSE(data.ParseForTest("tcp-connect:::")); |
| 58 EXPECT_FALSE(data.ParseForTest("tcp-connect::0")); | 55 EXPECT_FALSE(data.ParseForTest("tcp-connect::0")); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 ParseTest("tcp-connect::99", "tcp-connect:*:99"); | 109 ParseTest("tcp-connect::99", "tcp-connect:*:99"); |
| 113 ParseTest("tcp-listen::99", "tcp-listen:*:99"); | 110 ParseTest("tcp-listen::99", "tcp-listen:*:99"); |
| 114 ParseTest("udp-bind::99", "udp-bind:*:99"); | 111 ParseTest("udp-bind::99", "udp-bind:*:99"); |
| 115 ParseTest("udp-send-to::99", "udp-send-to:*:99"); | 112 ParseTest("udp-send-to::99", "udp-send-to:*:99"); |
| 116 | 113 |
| 117 ParseTest("tcp-connect:www.example.com", "tcp-connect:www.example.com:*"); | 114 ParseTest("tcp-connect:www.example.com", "tcp-connect:www.example.com:*"); |
| 118 | 115 |
| 119 ParseTest("tcp-connect:*.example.com:99", "tcp-connect:*.example.com:99"); | 116 ParseTest("tcp-connect:*.example.com:99", "tcp-connect:*.example.com:99"); |
| 120 } | 117 } |
| 121 | 118 |
| 122 TEST_F(SocketPermissionTest, Match) { | 119 TEST(SocketPermissionTest, Match) { |
| 123 SocketPermissionData data; | 120 SocketPermissionData data; |
| 124 scoped_ptr<SocketPermission::CheckParam> param; | 121 scoped_ptr<SocketPermission::CheckParam> param; |
| 125 | 122 |
| 126 CHECK(data.ParseForTest("tcp-connect")); | 123 CHECK(data.ParseForTest("tcp-connect")); |
| 127 param.reset(new SocketPermission::CheckParam( | 124 param.reset(new SocketPermission::CheckParam( |
| 128 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); | 125 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); |
| 129 EXPECT_TRUE(data.Check(param.get())); | 126 EXPECT_TRUE(data.Check(param.get())); |
| 130 param.reset(new SocketPermission::CheckParam( | 127 param.reset(new SocketPermission::CheckParam( |
| 131 SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 80)); | 128 SocketPermissionRequest::UDP_SEND_TO, "www.example.com", 80)); |
| 132 EXPECT_FALSE(data.Check(param.get())); | 129 EXPECT_FALSE(data.Check(param.get())); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); | 209 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); |
| 213 EXPECT_FALSE(data.Check(param.get())); | 210 EXPECT_FALSE(data.Check(param.get())); |
| 214 param.reset(new SocketPermission::CheckParam( | 211 param.reset(new SocketPermission::CheckParam( |
| 215 SocketPermissionRequest::UDP_SEND_TO, "www.google.com", 8800)); | 212 SocketPermissionRequest::UDP_SEND_TO, "www.google.com", 8800)); |
| 216 EXPECT_FALSE(data.Check(param.get())); | 213 EXPECT_FALSE(data.Check(param.get())); |
| 217 param.reset(new SocketPermission::CheckParam( | 214 param.reset(new SocketPermission::CheckParam( |
| 218 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, "127.0.0.1", 35)); | 215 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, "127.0.0.1", 35)); |
| 219 EXPECT_TRUE(data.Check(param.get())); | 216 EXPECT_TRUE(data.Check(param.get())); |
| 220 } | 217 } |
| 221 | 218 |
| 222 TEST_F(SocketPermissionTest, IPC) { | 219 TEST(SocketPermissionTest, IPC) { |
| 223 const APIPermissionInfo* permission_info = | 220 const APIPermissionInfo* permission_info = |
| 224 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 221 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
| 225 | 222 |
| 226 { | 223 { |
| 227 IPC::Message m; | 224 IPC::Message m; |
| 228 | 225 |
| 229 scoped_ptr<APIPermission> permission1( | 226 scoped_ptr<APIPermission> permission1( |
| 230 permission_info->CreateAPIPermission()); | 227 permission_info->CreateAPIPermission()); |
| 231 scoped_ptr<APIPermission> permission2( | 228 scoped_ptr<APIPermission> permission2( |
| 232 permission_info->CreateAPIPermission()); | 229 permission_info->CreateAPIPermission()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 254 | 251 |
| 255 EXPECT_FALSE(permission1->Equal(permission2.get())); | 252 EXPECT_FALSE(permission1->Equal(permission2.get())); |
| 256 | 253 |
| 257 permission1->Write(&m); | 254 permission1->Write(&m); |
| 258 PickleIterator iter(m); | 255 PickleIterator iter(m); |
| 259 permission2->Read(&m, &iter); | 256 permission2->Read(&m, &iter); |
| 260 EXPECT_TRUE(permission1->Equal(permission2.get())); | 257 EXPECT_TRUE(permission1->Equal(permission2.get())); |
| 261 } | 258 } |
| 262 } | 259 } |
| 263 | 260 |
| 264 TEST_F(SocketPermissionTest, Value) { | 261 TEST(SocketPermissionTest, Value) { |
| 265 const APIPermissionInfo* permission_info = | 262 const APIPermissionInfo* permission_info = |
| 266 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 263 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
| 267 | 264 |
| 268 scoped_ptr<APIPermission> permission1( | 265 scoped_ptr<APIPermission> permission1( |
| 269 permission_info->CreateAPIPermission()); | 266 permission_info->CreateAPIPermission()); |
| 270 scoped_ptr<APIPermission> permission2( | 267 scoped_ptr<APIPermission> permission2( |
| 271 permission_info->CreateAPIPermission()); | 268 permission_info->CreateAPIPermission()); |
| 272 | 269 |
| 273 scoped_ptr<base::ListValue> value(new base::ListValue()); | 270 scoped_ptr<base::ListValue> value(new base::ListValue()); |
| 274 value->AppendString("tcp-connect:*.example.com:80"); | 271 value->AppendString("tcp-connect:*.example.com:80"); |
| 275 value->AppendString("udp-bind::8080"); | 272 value->AppendString("udp-bind::8080"); |
| 276 value->AppendString("udp-send-to::8888"); | 273 value->AppendString("udp-send-to::8888"); |
| 277 ASSERT_TRUE(permission1->FromValue(value.get())); | 274 ASSERT_TRUE(permission1->FromValue(value.get())); |
| 278 | 275 |
| 279 EXPECT_FALSE(permission1->Equal(permission2.get())); | 276 EXPECT_FALSE(permission1->Equal(permission2.get())); |
| 280 | 277 |
| 281 scoped_ptr<base::Value> vtmp(permission1->ToValue()); | 278 scoped_ptr<base::Value> vtmp(permission1->ToValue()); |
| 282 ASSERT_TRUE(vtmp); | 279 ASSERT_TRUE(vtmp); |
| 283 ASSERT_TRUE(permission2->FromValue(vtmp.get())); | 280 ASSERT_TRUE(permission2->FromValue(vtmp.get())); |
| 284 EXPECT_TRUE(permission1->Equal(permission2.get())); | 281 EXPECT_TRUE(permission1->Equal(permission2.get())); |
| 285 } | 282 } |
| 286 | 283 |
| 287 } // namespace | 284 } // namespace |
| 288 | 285 |
| 289 } // namespace extensions | 286 } // namespace extensions |
| OLD | NEW |