| #ifndef QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_ |
| #define QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_ |
| |
| #include "absl/strings/string_view.h" |
| #include "http2/adapter/nghttp2_util.h" |
| #include "third_party/nghttp2/src/lib/includes/nghttp2/nghttp2.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 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), |
| ()); |
| }; |
| |
| } // namespace test |
| } // namespace adapter |
| } // namespace http2 |
| |
| #endif // QUICHE_HTTP2_ADAPTER_MOCK_NGHTTP2_CALLBACKS_H_ |