diff options
Diffstat (limited to 'brillo/http/mock_curl_api.h')
-rw-r--r-- | brillo/http/mock_curl_api.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/brillo/http/mock_curl_api.h b/brillo/http/mock_curl_api.h new file mode 100644 index 0000000..838ebf2 --- /dev/null +++ b/brillo/http/mock_curl_api.h @@ -0,0 +1,56 @@ +// 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 LIBCHROMEOS_BRILLO_HTTP_MOCK_CURL_API_H_ +#define LIBCHROMEOS_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_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)); + + private: + DISALLOW_COPY_AND_ASSIGN(MockCurlInterface); +}; + +} // namespace http +} // namespace brillo + +#endif // LIBCHROMEOS_BRILLO_HTTP_MOCK_CURL_API_H_ |