blob: 4e85cbf644c3cc63e0078931811ac53a21eb4b6a [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_BASE_MOCK_SOCKET_H_
#define NET_BASE_MOCK_SOCKET_H_
#include "net-base/socket.h"
#include <memory>
#include <vector>
#include <base/files/scoped_file.h>
#include <brillo/brillo_export.h>
#include <gmock/gmock.h>
namespace net_base {
class BRILLO_EXPORT MockSocket : public Socket {
public:
MockSocket();
explicit MockSocket(base::ScopedFD fd, int type);
~MockSocket() override;
MOCK_METHOD(std::unique_ptr<Socket>,
Accept,
(struct sockaddr*, socklen_t*),
(const, override));
MOCK_METHOD(bool,
Bind,
(const struct sockaddr*, socklen_t),
(const, override));
MOCK_METHOD(bool,
GetSockName,
(struct sockaddr*, socklen_t*),
(const, override));
MOCK_METHOD(bool, Listen, (int), (const, override));
MOCK_METHOD(std::optional<int>,
Ioctl,
// NOLINTNEXTLINE(runtime/int)
(unsigned long, void*),
(const, override));
MOCK_METHOD(std::optional<size_t>,
RecvFrom,
(base::span<uint8_t>, int, struct sockaddr*, socklen_t*),
(const, override));
MOCK_METHOD(bool, RecvMessage, (std::vector<uint8_t>*), (const, override));
MOCK_METHOD(std::optional<size_t>,
Send,
(base::span<const uint8_t>, int),
(const, override));
MOCK_METHOD(
std::optional<size_t>,
SendTo,
(base::span<const uint8_t>, int, const struct sockaddr*, socklen_t),
(const, override));
MOCK_METHOD(bool, SetReceiveBuffer, (int), (const, override));
MOCK_METHOD(bool,
SetSockOpt,
(int, int, base::span<const uint8_t>),
(const, override));
};
class BRILLO_EXPORT MockSocketFactory : public SocketFactory {
public:
MockSocketFactory();
~MockSocketFactory() override;
MOCK_METHOD(std::unique_ptr<Socket>, Create, (int, int, int), (override));
MOCK_METHOD(std::unique_ptr<Socket>,
CreateNetlink,
(int, uint32_t, std::optional<int>),
(override));
};
} // namespace net_base
#endif // NET_BASE_MOCK_SOCKET_H_