// 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_METHOD0(EasyInit, CURL*()); MOCK_METHOD1(EasyCleanup, void(CURL*)); MOCK_METHOD3(EasySetOptInt, CURLcode(CURL*, CURLoption, int)); MOCK_METHOD3(EasySetOptStr, CURLcode(CURL*, CURLoption, const std::string&)); MOCK_METHOD3(EasySetOptPtr, CURLcode(CURL*, CURLoption, void*)); MOCK_METHOD3(EasySetOptCallback, CURLcode(CURL*, CURLoption, intptr_t)); MOCK_METHOD3(EasySetOptOffT, CURLcode(CURL*, CURLoption, curl_off_t)); MOCK_METHOD1(EasyPerform, CURLcode(CURL*)); MOCK_CONST_METHOD3(EasyGetInfoInt, CURLcode(CURL*, CURLINFO, int*)); MOCK_CONST_METHOD3(EasyGetInfoDbl, CURLcode(CURL*, CURLINFO, double*)); MOCK_CONST_METHOD3(EasyGetInfoStr, CURLcode(CURL*, CURLINFO, std::string*)); MOCK_CONST_METHOD3(EasyGetInfoPtr, CURLcode(CURL*, CURLINFO, void**)); MOCK_CONST_METHOD1(EasyStrError, std::string(CURLcode)); MOCK_METHOD0(MultiInit, CURLM*()); MOCK_METHOD1(MultiCleanup, CURLMcode(CURLM*)); MOCK_METHOD2(MultiInfoRead, CURLMsg*(CURLM*, int*)); MOCK_METHOD2(MultiAddHandle, CURLMcode(CURLM*, CURL*)); MOCK_METHOD2(MultiRemoveHandle, CURLMcode(CURLM*, CURL*)); MOCK_METHOD3(MultiSetSocketCallback, CURLMcode(CURLM*, curl_socket_callback, void*)); MOCK_METHOD3(MultiSetTimerCallback, CURLMcode(CURLM*, curl_multi_timer_callback, void*)); MOCK_METHOD3(MultiAssign, CURLMcode(CURLM*, curl_socket_t, void*)); MOCK_METHOD4(MultiSocketAction, CURLMcode(CURLM*, curl_socket_t, int, int*)); MOCK_CONST_METHOD1(MultiStrError, std::string(CURLMcode)); MOCK_METHOD2(MultiPerform, CURLMcode(CURLM*, int*)); MOCK_METHOD5(MultiWait, CURLMcode(CURLM*, curl_waitfd[], unsigned int, int, int*)); private: DISALLOW_COPY_AND_ASSIGN(MockCurlInterface); }; } // namespace http } // namespace brillo #endif // LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_