blob: daac8c28057eee14bc11d66ed17b050a98ff9e1e [file] [log] [blame]
// 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 <string>
#include <brillo/http/curl_api.h>
#include <gmock/gmock.h>
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_