1 // Copyright 2023 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 // Pre-defined mocks for the APIs in web_transport.h. 6 7 #ifndef QUICHE_WEB_TRANSPORT_TEST_TOOLS_MOCK_WEB_TRANSPORT_H_ 8 #define QUICHE_WEB_TRANSPORT_TEST_TOOLS_MOCK_WEB_TRANSPORT_H_ 9 10 #include <cstddef> 11 #include <cstdint> 12 #include <memory> 13 #include <string> 14 15 #include "absl/status/status.h" 16 #include "absl/strings/string_view.h" 17 #include "absl/time/time.h" 18 #include "absl/types/span.h" 19 #include "quiche/common/platform/api/quiche_export.h" 20 #include "quiche/common/platform/api/quiche_test.h" 21 #include "quiche/common/quiche_callbacks.h" 22 #include "quiche/common/quiche_stream.h" 23 #include "quiche/web_transport/web_transport.h" 24 25 namespace webtransport { 26 namespace test { 27 28 class QUICHE_NO_EXPORT MockStreamVisitor : public StreamVisitor { 29 public: 30 MOCK_METHOD(void, OnCanRead, (), (override)); 31 MOCK_METHOD(void, OnCanWrite, (), (override)); 32 MOCK_METHOD(void, OnResetStreamReceived, (StreamErrorCode), (override)); 33 MOCK_METHOD(void, OnStopSendingReceived, (StreamErrorCode), (override)); 34 MOCK_METHOD(void, OnWriteSideInDataRecvdState, (), (override)); 35 }; 36 37 class QUICHE_NO_EXPORT MockStream : public Stream { 38 public: 39 MOCK_METHOD(ReadResult, Read, (absl::Span<char> buffer), (override)); 40 MOCK_METHOD(ReadResult, Read, (std::string * output), (override)); 41 MOCK_METHOD(absl::Status, Writev, 42 (absl::Span<const absl::string_view> data, 43 const quiche::StreamWriteOptions& options), 44 (override)); 45 MOCK_METHOD(PeekResult, PeekNextReadableRegion, (), (const, override)); 46 MOCK_METHOD(bool, SkipBytes, (size_t bytes), (override)); 47 MOCK_METHOD(bool, CanWrite, (), (const, override)); 48 MOCK_METHOD(void, AbruptlyTerminate, (absl::Status), (override)); 49 MOCK_METHOD(size_t, ReadableBytes, (), (const, override)); 50 MOCK_METHOD(StreamId, GetStreamId, (), (const, override)); 51 MOCK_METHOD(void, ResetWithUserCode, (StreamErrorCode error), (override)); 52 MOCK_METHOD(void, SendStopSending, (StreamErrorCode error), (override)); 53 MOCK_METHOD(void, ResetDueToInternalError, (), (override)); 54 MOCK_METHOD(void, MaybeResetDueToStreamObjectGone, (), (override)); 55 MOCK_METHOD(StreamVisitor*, visitor, (), (override)); 56 MOCK_METHOD(void, SetVisitor, (std::unique_ptr<StreamVisitor> visitor), 57 (override)); 58 }; 59 60 class QUICHE_NO_EXPORT MockSessionVisitor : public SessionVisitor { 61 public: 62 MOCK_METHOD(void, OnSessionReady, (), (override)); 63 MOCK_METHOD(void, OnSessionClosed, 64 (SessionErrorCode error_code, const std::string& error_message), 65 (override)); 66 MOCK_METHOD(void, OnIncomingBidirectionalStreamAvailable, (), (override)); 67 MOCK_METHOD(void, OnIncomingUnidirectionalStreamAvailable, (), (override)); 68 MOCK_METHOD(void, OnDatagramReceived, (absl::string_view datagram), 69 (override)); 70 MOCK_METHOD(void, OnCanCreateNewOutgoingBidirectionalStream, (), (override)); 71 MOCK_METHOD(void, OnCanCreateNewOutgoingUnidirectionalStream, (), (override)); 72 }; 73 74 class QUICHE_NO_EXPORT MockSession : public Session { 75 public: 76 MOCK_METHOD(void, CloseSession, 77 (SessionErrorCode error_code, absl::string_view error_message), 78 (override)); 79 MOCK_METHOD(Stream*, AcceptIncomingBidirectionalStream, (), (override)); 80 MOCK_METHOD(Stream*, AcceptIncomingUnidirectionalStream, (), (override)); 81 MOCK_METHOD(bool, CanOpenNextOutgoingBidirectionalStream, (), (override)); 82 MOCK_METHOD(bool, CanOpenNextOutgoingUnidirectionalStream, (), (override)); 83 MOCK_METHOD(Stream*, OpenOutgoingBidirectionalStream, (), (override)); 84 MOCK_METHOD(Stream*, OpenOutgoingUnidirectionalStream, (), (override)); 85 MOCK_METHOD(Stream*, GetStreamById, (StreamId), (override)); 86 MOCK_METHOD(DatagramStatus, SendOrQueueDatagram, (absl::string_view datagram), 87 (override)); 88 MOCK_METHOD(uint64_t, GetMaxDatagramSize, (), (const, override)); 89 MOCK_METHOD(void, SetDatagramMaxTimeInQueue, 90 (absl::Duration max_time_in_queue), (override)); 91 MOCK_METHOD(DatagramStats, GetDatagramStats, (), (override)); 92 MOCK_METHOD(SessionStats, GetSessionStats, (), (override)); 93 MOCK_METHOD(void, NotifySessionDraining, (), (override)); 94 MOCK_METHOD(void, SetOnDraining, (quiche::SingleUseCallback<void()>), 95 (override)); 96 }; 97 98 } // namespace test 99 } // namespace webtransport 100 101 #endif // QUICHE_WEB_TRANSPORT_TEST_TOOLS_MOCK_WEB_TRANSPORT_H_ 102