xref: /aosp_15_r20/external/libbrillo/brillo/http/mock_curl_api.h (revision 1a96fba65179ea7d3f56207137718607415c5953)
1*1a96fba6SXin Li // Copyright 2014 The Chromium OS Authors. All rights reserved.
2*1a96fba6SXin Li // Use of this source code is governed by a BSD-style license that can be
3*1a96fba6SXin Li // found in the LICENSE file.
4*1a96fba6SXin Li 
5*1a96fba6SXin Li #ifndef LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
6*1a96fba6SXin Li #define LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
7*1a96fba6SXin Li 
8*1a96fba6SXin Li #include <string>
9*1a96fba6SXin Li 
10*1a96fba6SXin Li #include <brillo/http/curl_api.h>
11*1a96fba6SXin Li #include <gmock/gmock.h>
12*1a96fba6SXin Li 
13*1a96fba6SXin Li namespace brillo {
14*1a96fba6SXin Li namespace http {
15*1a96fba6SXin Li 
16*1a96fba6SXin Li // This is a mock for CURL interfaces which allows to mock out the CURL's
17*1a96fba6SXin Li // low-level C APIs in tests by intercepting the virtual function calls on
18*1a96fba6SXin Li // the abstract CurlInterface.
19*1a96fba6SXin Li class MockCurlInterface : public CurlInterface {
20*1a96fba6SXin Li  public:
21*1a96fba6SXin Li   MockCurlInterface() = default;
22*1a96fba6SXin Li 
23*1a96fba6SXin Li   MOCK_METHOD(CURL*, EasyInit, (), (override));
24*1a96fba6SXin Li   MOCK_METHOD(void, EasyCleanup, (CURL*), (override));
25*1a96fba6SXin Li   MOCK_METHOD(CURLcode, EasySetOptInt, (CURL*, CURLoption, int), (override));
26*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
27*1a96fba6SXin Li               EasySetOptStr,
28*1a96fba6SXin Li               (CURL*, CURLoption, const std::string&),
29*1a96fba6SXin Li               (override));
30*1a96fba6SXin Li   MOCK_METHOD(CURLcode, EasySetOptPtr, (CURL*, CURLoption, void*), (override));
31*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
32*1a96fba6SXin Li               EasySetOptCallback,
33*1a96fba6SXin Li               (CURL*, CURLoption, intptr_t),
34*1a96fba6SXin Li               (override));
35*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
36*1a96fba6SXin Li               EasySetOptOffT,
37*1a96fba6SXin Li               (CURL*, CURLoption, curl_off_t),
38*1a96fba6SXin Li               (override));
39*1a96fba6SXin Li   MOCK_METHOD(CURLcode, EasyPerform, (CURL*), (override));
40*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
41*1a96fba6SXin Li               EasyGetInfoInt,
42*1a96fba6SXin Li               (CURL*, CURLINFO, int*),
43*1a96fba6SXin Li               (const, override));
44*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
45*1a96fba6SXin Li               EasyGetInfoDbl,
46*1a96fba6SXin Li               (CURL*, CURLINFO, double*),
47*1a96fba6SXin Li               (const, override));
48*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
49*1a96fba6SXin Li               EasyGetInfoStr,
50*1a96fba6SXin Li               (CURL*, CURLINFO, std::string*),
51*1a96fba6SXin Li               (const, override));
52*1a96fba6SXin Li   MOCK_METHOD(CURLcode,
53*1a96fba6SXin Li               EasyGetInfoPtr,
54*1a96fba6SXin Li               (CURL*, CURLINFO, void**),
55*1a96fba6SXin Li               (const, override));
56*1a96fba6SXin Li   MOCK_METHOD(std::string, EasyStrError, (CURLcode), (const, override));
57*1a96fba6SXin Li   MOCK_METHOD(CURLM*, MultiInit, (), (override));
58*1a96fba6SXin Li   MOCK_METHOD(CURLMcode, MultiCleanup, (CURLM*), (override));
59*1a96fba6SXin Li   MOCK_METHOD(CURLMsg*, MultiInfoRead, (CURLM*, int*), (override));
60*1a96fba6SXin Li   MOCK_METHOD(CURLMcode, MultiAddHandle, (CURLM*, CURL*), (override));
61*1a96fba6SXin Li   MOCK_METHOD(CURLMcode, MultiRemoveHandle, (CURLM*, CURL*), (override));
62*1a96fba6SXin Li   MOCK_METHOD(CURLMcode,
63*1a96fba6SXin Li               MultiSetSocketCallback,
64*1a96fba6SXin Li               (CURLM*, curl_socket_callback, void*),
65*1a96fba6SXin Li               (override));
66*1a96fba6SXin Li   MOCK_METHOD(CURLMcode,
67*1a96fba6SXin Li               MultiSetTimerCallback,
68*1a96fba6SXin Li               (CURLM*, curl_multi_timer_callback, void*),
69*1a96fba6SXin Li               (override));
70*1a96fba6SXin Li   MOCK_METHOD(CURLMcode,
71*1a96fba6SXin Li               MultiAssign,
72*1a96fba6SXin Li               (CURLM*, curl_socket_t, void*),
73*1a96fba6SXin Li               (override));
74*1a96fba6SXin Li   MOCK_METHOD(CURLMcode,
75*1a96fba6SXin Li               MultiSocketAction,
76*1a96fba6SXin Li               (CURLM*, curl_socket_t, int, int*),
77*1a96fba6SXin Li               (override));
78*1a96fba6SXin Li   MOCK_METHOD(std::string, MultiStrError, (CURLMcode), (const, override));
79*1a96fba6SXin Li   MOCK_METHOD(CURLMcode, MultiPerform, (CURLM*, int*), (override));
80*1a96fba6SXin Li   MOCK_METHOD(CURLMcode,
81*1a96fba6SXin Li               MultiWait,
82*1a96fba6SXin Li               (CURLM*, curl_waitfd[], unsigned int, int, int*),
83*1a96fba6SXin Li               (override));
84*1a96fba6SXin Li 
85*1a96fba6SXin Li  private:
86*1a96fba6SXin Li   DISALLOW_COPY_AND_ASSIGN(MockCurlInterface);
87*1a96fba6SXin Li };
88*1a96fba6SXin Li 
89*1a96fba6SXin Li }  // namespace http
90*1a96fba6SXin Li }  // namespace brillo
91*1a96fba6SXin Li 
92*1a96fba6SXin Li #endif  // LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
93