blob: 85bc6a956fc75e9cc8559f4d279049c162695102 [file] [log] [blame]
#ifndef QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_
#define QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_
#include <cstdint>
#include "absl/strings/string_view.h"
#include "http2/adapter/nghttp2.h"
#include "http2/adapter/nghttp2_util.h"
#include "common/platform/api/quiche_export.h"
#include "common/platform/api/quiche_test.h"
namespace http2 {
namespace adapter {
namespace test {
// This class provides a set of mock nghttp2 callbacks for use in unit test
// expectations.
class QUICHE_NO_EXPORT MockNghttp2Callbacks {
public:
MockNghttp2Callbacks() = default;
// The caller takes ownership of the |nghttp2_session_callbacks|.
static nghttp2_session_callbacks_unique_ptr GetCallbacks();
MOCK_METHOD(ssize_t,
Send,
(const uint8_t* data, size_t length, int flags),
());
MOCK_METHOD(int,
SendData,
(nghttp2_frame * frame,
const uint8_t* framehd,
size_t length,
nghttp2_data_source* source),
());
MOCK_METHOD(int, OnBeginHeaders, (const nghttp2_frame* frame), ());
MOCK_METHOD(int,
OnHeader,
(const nghttp2_frame* frame,
absl::string_view name,
absl::string_view value,
uint8_t flags),
());
MOCK_METHOD(int,
OnDataChunkRecv,
(uint8_t flags, int32_t stream_id, absl::string_view data),
());
MOCK_METHOD(int, OnBeginFrame, (const nghttp2_frame_hd* hd), ());
MOCK_METHOD(int, OnFrameRecv, (const nghttp2_frame* frame), ());
MOCK_METHOD(int, OnStreamClose, (int32_t stream_id, uint32_t error_code), ());
MOCK_METHOD(int, BeforeFrameSend, (const nghttp2_frame* frame), ());
MOCK_METHOD(int, OnFrameSend, (const nghttp2_frame* frame), ());
MOCK_METHOD(int,
OnFrameNotSend,
(const nghttp2_frame* frame, int lib_error_code),
());
MOCK_METHOD(int,
OnInvalidFrameRecv,
(const nghttp2_frame* frame, int error_code),
());
MOCK_METHOD(int,
OnErrorCallback2,
(int lib_error_code, const char* msg, size_t len),
());
MOCK_METHOD(ssize_t, OnPackExtension,
(uint8_t * buf, size_t len, const nghttp2_frame* frame), ());
};
} // namespace test
} // namespace adapter
} // namespace http2
#endif // QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_