// Copyright 2014 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_ #define LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_ #include #include #include namespace brillo { namespace http { // This is a mock for CURL interfaces which allows to mock out the CURL's // low-level C APIs in tests by intercepting the virtual function calls on // the abstract CurlInterface. class MockCurlInterface : public CurlInterface { public: MockCurlInterface() = default; MOCK_METHOD(CURL*, EasyInit, (), (override)); MOCK_METHOD(void, EasyCleanup, (CURL*), (override)); MOCK_METHOD(CURLcode, EasySetOptInt, (CURL*, CURLoption, int), (override)); MOCK_METHOD(CURLcode, EasySetOptStr, (CURL*, CURLoption, const std::string&), (override)); MOCK_METHOD(CURLcode, EasySetOptPtr, (CURL*, CURLoption, void*), (override)); MOCK_METHOD(CURLcode, EasySetOptCallback, (CURL*, CURLoption, intptr_t), (override)); MOCK_METHOD(CURLcode, EasySetOptOffT, (CURL*, CURLoption, curl_off_t), (override)); MOCK_METHOD(CURLcode, EasyPerform, (CURL*), (override)); MOCK_METHOD(CURLcode, EasyGetInfoInt, (CURL*, CURLINFO, int*), (const, override)); MOCK_METHOD(CURLcode, EasyGetInfoDbl, (CURL*, CURLINFO, double*), (const, override)); MOCK_METHOD(CURLcode, EasyGetInfoStr, (CURL*, CURLINFO, std::string*), (const, override)); MOCK_METHOD(CURLcode, EasyGetInfoPtr, (CURL*, CURLINFO, void**), (const, override)); MOCK_METHOD(std::string, EasyStrError, (CURLcode), (const, override)); MOCK_METHOD(CURLM*, MultiInit, (), (override)); MOCK_METHOD(CURLMcode, MultiCleanup, (CURLM*), (override)); MOCK_METHOD(CURLMsg*, MultiInfoRead, (CURLM*, int*), (override)); MOCK_METHOD(CURLMcode, MultiAddHandle, (CURLM*, CURL*), (override)); MOCK_METHOD(CURLMcode, MultiRemoveHandle, (CURLM*, CURL*), (override)); MOCK_METHOD(CURLMcode, MultiSetSocketCallback, (CURLM*, curl_socket_callback, void*), (override)); MOCK_METHOD(CURLMcode, MultiSetTimerCallback, (CURLM*, curl_multi_timer_callback, void*), (override)); MOCK_METHOD(CURLMcode, MultiAssign, (CURLM*, curl_socket_t, void*), (override)); MOCK_METHOD(CURLMcode, MultiSocketAction, (CURLM*, curl_socket_t, int, int*), (override)); MOCK_METHOD(std::string, MultiStrError, (CURLMcode), (const, override)); MOCK_METHOD(CURLMcode, MultiPerform, (CURLM*, int*), (override)); MOCK_METHOD(CURLMcode, MultiWait, (CURLM*, curl_waitfd[], unsigned int, int, int*), (override)); private: DISALLOW_COPY_AND_ASSIGN(MockCurlInterface); }; } // namespace http } // namespace brillo #endif // LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_