Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: chromeos/network/firewall_hole_unittest.cc

Issue 965613002: Open a firewall hole when a TCP server or UDP socket is bound. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add firewall_hole_unittest.cc. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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/bind.h"
6 #include "base/run_loop.h"
7 #include "chromeos/dbus/dbus_thread_manager.h"
8 #include "chromeos/dbus/fake_permission_broker_client.h"
9 #include "chromeos/network/firewall_hole.h"
10 #include "dbus/file_descriptor.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 using chromeos::DBusThreadManager;
15 using chromeos::FirewallHole;
16 using testing::_;
17
18 ACTION_TEMPLATE(InvokeCallback,
19 HAS_1_TEMPLATE_PARAMS(int, k),
20 AND_1_VALUE_PARAMS(p1)) {
21 ::std::tr1::get<k>(args).Run(p1);
22 }
23
24 class MockPermissionsBrokerClient : public chromeos::PermissionBrokerClient {
pneubeck (no reviews) 2015/03/10 08:49:21 this and the template above should be wrapped in a
Reilly Grant (use Gerrit) 2015/03/10 20:15:17 Done.
25 public:
26 MockPermissionsBrokerClient() {}
27 ~MockPermissionsBrokerClient() override {}
28
29 MOCK_METHOD1(Init, void(dbus::Bus* bus));
30 MOCK_METHOD3(RequestPathAccess,
31 void(const std::string& path,
32 int interface_id,
33 const ResultCallback& callback));
34 MOCK_METHOD4(RequestTcpPortAccess,
35 void(uint16 port,
36 const std::string& interface,
37 const dbus::FileDescriptor& lifeline_fd,
38 const ResultCallback& callback));
39 MOCK_METHOD4(RequestUdpPortAccess,
40 void(uint16 port,
41 const std::string& interface,
42 const dbus::FileDescriptor& lifeline_fd,
43 const ResultCallback& callback));
44 MOCK_METHOD3(ReleaseTcpPort,
45 void(uint16 port,
46 const std::string& interface,
47 const ResultCallback& callback));
48 MOCK_METHOD3(ReleaseUdpPort,
49 void(uint16 port,
50 const std::string& interface,
51 const ResultCallback& callback));
52 };
53
54 class FirewallHoleTest : public testing::Test {
55 public:
56 FirewallHoleTest() {}
57 ~FirewallHoleTest() override {}
58
59 void SetUp() override {
60 mock_permissions_broker_client_ = new MockPermissionsBrokerClient();
61 DBusThreadManager::GetSetterForTesting()->SetPermissionBrokerClient(
62 make_scoped_ptr(mock_permissions_broker_client_));
63 }
64
65 void TearDown() override { DBusThreadManager::Shutdown(); }
66
67 void AssertOpenSuccess(scoped_ptr<FirewallHole> hole) {
68 EXPECT_TRUE(hole.get() != nullptr);
69 run_loop_.Quit();
70 }
71
72 void AssertOpenFailure(scoped_ptr<FirewallHole> hole) {
73 EXPECT_TRUE(hole.get() == nullptr);
74 run_loop_.Quit();
75 }
76
77 private:
78 base::MessageLoopForUI message_loop_;
79
80 protected:
81 base::RunLoop run_loop_;
82 MockPermissionsBrokerClient* mock_permissions_broker_client_;
pneubeck (no reviews) 2015/03/10 08:49:21 = null;
Reilly Grant (use Gerrit) 2015/03/10 20:15:17 Done.
83 };
84
85 TEST_F(FirewallHoleTest, GrantTcpPortAccess) {
86 EXPECT_CALL(*mock_permissions_broker_client_,
87 RequestTcpPortAccess(1234, "foo0", _, _))
88 .WillOnce(InvokeCallback<3>(true));
89 EXPECT_CALL(*mock_permissions_broker_client_, ReleaseTcpPort(1234, "foo0", _))
90 .WillOnce(InvokeCallback<2>(true));
91
92 FirewallHole::Open(
93 FirewallHole::PortType::TCP, 1234, "foo0",
94 base::Bind(&FirewallHoleTest::AssertOpenSuccess, base::Unretained(this)));
95 run_loop_.Run();
96 }
97
98 TEST_F(FirewallHoleTest, DenyTcpPortAccess) {
99 EXPECT_CALL(*mock_permissions_broker_client_,
100 RequestTcpPortAccess(1234, "foo0", _, _))
101 .WillOnce(InvokeCallback<3>(false));
102
103 FirewallHole::Open(
104 FirewallHole::PortType::TCP, 1234, "foo0",
105 base::Bind(&FirewallHoleTest::AssertOpenFailure, base::Unretained(this)));
106 run_loop_.Run();
107 }
108
109 TEST_F(FirewallHoleTest, GrantUdpPortAccess) {
110 EXPECT_CALL(*mock_permissions_broker_client_,
111 RequestUdpPortAccess(1234, "foo0", _, _))
112 .WillOnce(InvokeCallback<3>(true));
113 EXPECT_CALL(*mock_permissions_broker_client_, ReleaseUdpPort(1234, "foo0", _))
114 .WillOnce(InvokeCallback<2>(true));
115
116 FirewallHole::Open(
117 FirewallHole::PortType::UDP, 1234, "foo0",
118 base::Bind(&FirewallHoleTest::AssertOpenSuccess, base::Unretained(this)));
119 run_loop_.Run();
120 }
121
122 TEST_F(FirewallHoleTest, DenyUdpPortAccess) {
123 EXPECT_CALL(*mock_permissions_broker_client_,
124 RequestUdpPortAccess(1234, "foo0", _, _))
125 .WillOnce(InvokeCallback<3>(false));
126
127 FirewallHole::Open(
128 FirewallHole::PortType::UDP, 1234, "foo0",
129 base::Bind(&FirewallHoleTest::AssertOpenFailure, base::Unretained(this)));
130 run_loop_.Run();
131 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698