xref: /openbmc/google-misc/nemora-postd/subprojects/ncsid/test/sock_test.cpp (revision 1285115c16180bd28a3cfe79d9db8d10c84fe2ed)
1*1285115cSWilliam A. Kennington III // Copyright 2021 Google LLC
2*1285115cSWilliam A. Kennington III //
3*1285115cSWilliam A. Kennington III // Licensed under the Apache License, Version 2.0 (the "License");
4*1285115cSWilliam A. Kennington III // you may not use this file except in compliance with the License.
5*1285115cSWilliam A. Kennington III // You may obtain a copy of the License at
6*1285115cSWilliam A. Kennington III //
7*1285115cSWilliam A. Kennington III //      http://www.apache.org/licenses/LICENSE-2.0
8*1285115cSWilliam A. Kennington III //
9*1285115cSWilliam A. Kennington III // Unless required by applicable law or agreed to in writing, software
10*1285115cSWilliam A. Kennington III // distributed under the License is distributed on an "AS IS" BASIS,
11*1285115cSWilliam A. Kennington III // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*1285115cSWilliam A. Kennington III // See the License for the specific language governing permissions and
13*1285115cSWilliam A. Kennington III // limitations under the License.
14*1285115cSWilliam A. Kennington III 
15*1285115cSWilliam A. Kennington III #include "ncsi_sockio.h"
16*1285115cSWilliam A. Kennington III #include "net_iface_mock.h"
17*1285115cSWilliam A. Kennington III 
18*1285115cSWilliam A. Kennington III #include <gmock/gmock.h>
19*1285115cSWilliam A. Kennington III 
20*1285115cSWilliam A. Kennington III TEST(TestSockIO, TestBind)
21*1285115cSWilliam A. Kennington III {
22*1285115cSWilliam A. Kennington III     mock::IFace iface_mock;
23*1285115cSWilliam A. Kennington III     constexpr int test_index = 5;
24*1285115cSWilliam A. Kennington III     iface_mock.index = test_index;
25*1285115cSWilliam A. Kennington III 
26*1285115cSWilliam A. Kennington III     // This needs to be negative so that ncsi::SockIO
27*1285115cSWilliam A. Kennington III     // won't try to close the socket upon desctrution.
28*1285115cSWilliam A. Kennington III     constexpr int sock_fake_fd = -10;
29*1285115cSWilliam A. Kennington III     ncsi::SockIO ncsi_sock(sock_fake_fd);
30*1285115cSWilliam A. Kennington III 
31*1285115cSWilliam A. Kennington III     ncsi_sock.bind_to_iface(iface_mock);
32*1285115cSWilliam A. Kennington III     EXPECT_THAT(iface_mock.bound_socks.size(), testing::Ge(0));
33*1285115cSWilliam A. Kennington III     EXPECT_THAT(iface_mock.bound_socks, testing::Contains(sock_fake_fd));
34*1285115cSWilliam A. Kennington III     EXPECT_EQ(iface_mock.flags & IFF_PROMISC, IFF_PROMISC);
35*1285115cSWilliam A. Kennington III }
36