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