OLD | NEW |
(Empty) | |
| 1 // Copyright 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 #include "base/json/json_reader.h" |
| 6 #include "base/pickle.h" |
| 7 #include "base/values.h" |
| 8 #include "chrome/common/extensions/api/sockets/sockets_manifest_permission.h" |
| 9 #include "chrome/common/extensions/extension_messages.h" |
| 10 #include "extensions/common/manifest_constants.h" |
| 11 #include "ipc/ipc_message.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 |
| 14 namespace extensions { |
| 15 |
| 16 namespace { |
| 17 |
| 18 static void AssertEmptyPermission(const SocketsManifestPermission* permission) { |
| 19 EXPECT_TRUE(permission); |
| 20 EXPECT_EQ(std::string(extensions::manifest_keys::kSockets), permission->id()); |
| 21 EXPECT_EQ(permission->id(), permission->name()); |
| 22 EXPECT_FALSE(permission->HasMessages()); |
| 23 EXPECT_EQ(0u, permission->entries().size()); |
| 24 } |
| 25 |
| 26 } // namespace |
| 27 |
| 28 TEST(SocketsManifestPermissionTest, Empty) { |
| 29 // Construction |
| 30 scoped_ptr<SocketsManifestPermission> permission( |
| 31 new SocketsManifestPermission()); |
| 32 AssertEmptyPermission(permission.get()); |
| 33 |
| 34 // Clone()/Equal() |
| 35 scoped_ptr<SocketsManifestPermission> clone( |
| 36 static_cast<SocketsManifestPermission*>(permission->Clone())); |
| 37 AssertEmptyPermission(clone.get()); |
| 38 |
| 39 EXPECT_TRUE(permission->Equal(clone.get())); |
| 40 |
| 41 // ToValue()/FromValue() |
| 42 scoped_ptr<const base::Value> value(permission->ToValue()); |
| 43 EXPECT_TRUE(value.get()); |
| 44 |
| 45 scoped_ptr<SocketsManifestPermission> permission2( |
| 46 new SocketsManifestPermission()); |
| 47 EXPECT_TRUE(permission2->FromValue(value.get())); |
| 48 AssertEmptyPermission(permission2.get()); |
| 49 |
| 50 // Union/Diff/Intersection |
| 51 scoped_ptr<SocketsManifestPermission> diff_perm( |
| 52 static_cast<SocketsManifestPermission*>(permission->Diff(clone.get()))); |
| 53 AssertEmptyPermission(diff_perm.get()); |
| 54 |
| 55 scoped_ptr<SocketsManifestPermission> union_perm( |
| 56 static_cast<SocketsManifestPermission*>(permission->Union(clone.get()))); |
| 57 AssertEmptyPermission(union_perm.get()); |
| 58 |
| 59 scoped_ptr<SocketsManifestPermission> intersect_perm( |
| 60 static_cast<SocketsManifestPermission*>( |
| 61 permission->Intersect(clone.get()))); |
| 62 AssertEmptyPermission(intersect_perm.get()); |
| 63 |
| 64 // IPC |
| 65 scoped_ptr<SocketsManifestPermission> ipc_perm( |
| 66 new SocketsManifestPermission()); |
| 67 scoped_ptr<SocketsManifestPermission> ipc_perm2( |
| 68 new SocketsManifestPermission()); |
| 69 |
| 70 IPC::Message m; |
| 71 ipc_perm->Write(&m); |
| 72 PickleIterator iter(m); |
| 73 EXPECT_TRUE(ipc_perm2->Read(&m, &iter)); |
| 74 AssertEmptyPermission(ipc_perm2.get()); |
| 75 } |
| 76 |
| 77 TEST(SocketsManifestPermissionTest, General) { |
| 78 std::string udp_send_string = "{ \"udp\": { \"send\": \"\" } }"; |
| 79 scoped_ptr<base::Value> udp_send(base::JSONReader::Read(udp_send_string)); |
| 80 EXPECT_TRUE(udp_send); |
| 81 |
| 82 std::string udp_bind_string = "{ \"udp\": { \"bind\": \"127.0.0.1:3007\" } }"; |
| 83 scoped_ptr<base::Value> udp_bind(base::JSONReader::Read(udp_bind_string)); |
| 84 EXPECT_TRUE(udp_bind); |
| 85 |
| 86 std::string tcp_connect_string = |
| 87 "{ \"tcp\": { \"connect\": \"127.0.0.1:80\" } }"; |
| 88 scoped_ptr<base::Value> tcp_connect( |
| 89 base::JSONReader::Read(tcp_connect_string)); |
| 90 EXPECT_TRUE(tcp_connect); |
| 91 |
| 92 std::string tcp_server_listen_string = |
| 93 "{ \"tcpServer\": { \"listen\": \"127.0.0.1:80\" } }"; |
| 94 scoped_ptr<base::Value> tcp_server_listen( |
| 95 base::JSONReader::Read(tcp_server_listen_string)); |
| 96 EXPECT_TRUE(tcp_server_listen); |
| 97 |
| 98 // FromValue() |
| 99 scoped_ptr<SocketsManifestPermission> permission1( |
| 100 new SocketsManifestPermission()); |
| 101 EXPECT_TRUE(permission1->FromValue(udp_send.get())); |
| 102 EXPECT_EQ(1u, permission1->entries().size()); |
| 103 |
| 104 scoped_ptr<SocketsManifestPermission> permission2( |
| 105 new SocketsManifestPermission()); |
| 106 EXPECT_TRUE(permission2->FromValue(udp_bind.get())); |
| 107 EXPECT_EQ(1u, permission2->entries().size()); |
| 108 |
| 109 scoped_ptr<SocketsManifestPermission> permission3( |
| 110 new SocketsManifestPermission()); |
| 111 EXPECT_TRUE(permission3->FromValue(tcp_connect.get())); |
| 112 EXPECT_EQ(1u, permission3->entries().size()); |
| 113 |
| 114 scoped_ptr<SocketsManifestPermission> permission4( |
| 115 new SocketsManifestPermission()); |
| 116 EXPECT_TRUE(permission4->FromValue(tcp_server_listen.get())); |
| 117 EXPECT_EQ(1u, permission4->entries().size()); |
| 118 |
| 119 // ToValue() |
| 120 scoped_ptr<base::Value> value1 = permission1->ToValue(); |
| 121 EXPECT_TRUE(value1); |
| 122 scoped_ptr<SocketsManifestPermission> permission1_1( |
| 123 new SocketsManifestPermission()); |
| 124 EXPECT_TRUE(permission1_1->FromValue(value1.get())); |
| 125 EXPECT_TRUE(permission1->Equal(permission1_1.get())); |
| 126 |
| 127 scoped_ptr<base::Value> value2 = permission2->ToValue(); |
| 128 EXPECT_TRUE(value2); |
| 129 scoped_ptr<SocketsManifestPermission> permission2_1( |
| 130 new SocketsManifestPermission()); |
| 131 EXPECT_TRUE(permission2_1->FromValue(value2.get())); |
| 132 EXPECT_TRUE(permission2->Equal(permission2_1.get())); |
| 133 |
| 134 scoped_ptr<base::Value> value3 = permission3->ToValue(); |
| 135 EXPECT_TRUE(value3); |
| 136 scoped_ptr<SocketsManifestPermission> permission3_1( |
| 137 new SocketsManifestPermission()); |
| 138 EXPECT_TRUE(permission3_1->FromValue(value3.get())); |
| 139 EXPECT_TRUE(permission3->Equal(permission3_1.get())); |
| 140 |
| 141 scoped_ptr<base::Value> value4 = permission4->ToValue(); |
| 142 EXPECT_TRUE(value4); |
| 143 scoped_ptr<SocketsManifestPermission> permission4_1( |
| 144 new SocketsManifestPermission()); |
| 145 EXPECT_TRUE(permission4_1->FromValue(value4.get())); |
| 146 EXPECT_TRUE(permission4->Equal(permission4_1.get())); |
| 147 |
| 148 // Union/Diff/Intersection |
| 149 scoped_ptr<SocketsManifestPermission> union_perm( |
| 150 static_cast<SocketsManifestPermission*>( |
| 151 permission1->Union(permission2.get()))); |
| 152 EXPECT_TRUE(union_perm); |
| 153 EXPECT_EQ(2u, union_perm->entries().size()); |
| 154 |
| 155 EXPECT_TRUE(union_perm->Contains(permission1.get())); |
| 156 EXPECT_TRUE(union_perm->Contains(permission2.get())); |
| 157 EXPECT_FALSE(union_perm->Contains(permission3.get())); |
| 158 EXPECT_FALSE(union_perm->Contains(permission4.get())); |
| 159 |
| 160 scoped_ptr<SocketsManifestPermission> diff_perm1( |
| 161 static_cast<SocketsManifestPermission*>( |
| 162 permission1->Diff(permission2.get()))); |
| 163 EXPECT_TRUE(diff_perm1); |
| 164 EXPECT_EQ(1u, diff_perm1->entries().size()); |
| 165 |
| 166 EXPECT_TRUE(permission1->Equal(diff_perm1.get())); |
| 167 EXPECT_TRUE(diff_perm1->Equal(permission1.get())); |
| 168 |
| 169 scoped_ptr<SocketsManifestPermission> diff_perm2( |
| 170 static_cast<SocketsManifestPermission*>( |
| 171 permission1->Diff(union_perm.get()))); |
| 172 EXPECT_TRUE(diff_perm2); |
| 173 AssertEmptyPermission(diff_perm2.get()); |
| 174 |
| 175 scoped_ptr<SocketsManifestPermission> intersect_perm1( |
| 176 static_cast<SocketsManifestPermission*>( |
| 177 union_perm->Intersect(permission1.get()))); |
| 178 EXPECT_TRUE(intersect_perm1); |
| 179 EXPECT_EQ(1u, intersect_perm1->entries().size()); |
| 180 |
| 181 EXPECT_TRUE(permission1->Equal(intersect_perm1.get())); |
| 182 EXPECT_TRUE(intersect_perm1->Equal(permission1.get())); |
| 183 |
| 184 } |
| 185 |
| 186 } // namespace extensions |
OLD | NEW |