Home | History | Annotate | Download | only in http
      1 // Copyright 2014 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
      6 #define LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
      7 
      8 #include <string>
      9 
     10 #include <brillo/http/curl_api.h>
     11 #include <gmock/gmock.h>
     12 
     13 namespace brillo {
     14 namespace http {
     15 
     16 // This is a mock for CURL interfaces which allows to mock out the CURL's
     17 // low-level C APIs in tests by intercepting the virtual function calls on
     18 // the abstract CurlInterface.
     19 class MockCurlInterface : public CurlInterface {
     20  public:
     21   MockCurlInterface() = default;
     22 
     23   MOCK_METHOD0(EasyInit, CURL*());
     24   MOCK_METHOD1(EasyCleanup, void(CURL*));
     25   MOCK_METHOD3(EasySetOptInt, CURLcode(CURL*, CURLoption, int));
     26   MOCK_METHOD3(EasySetOptStr, CURLcode(CURL*, CURLoption, const std::string&));
     27   MOCK_METHOD3(EasySetOptPtr, CURLcode(CURL*, CURLoption, void*));
     28   MOCK_METHOD3(EasySetOptCallback, CURLcode(CURL*, CURLoption, intptr_t));
     29   MOCK_METHOD3(EasySetOptOffT, CURLcode(CURL*, CURLoption, curl_off_t));
     30   MOCK_METHOD1(EasyPerform, CURLcode(CURL*));
     31   MOCK_CONST_METHOD3(EasyGetInfoInt, CURLcode(CURL*, CURLINFO, int*));
     32   MOCK_CONST_METHOD3(EasyGetInfoDbl, CURLcode(CURL*, CURLINFO, double*));
     33   MOCK_CONST_METHOD3(EasyGetInfoStr, CURLcode(CURL*, CURLINFO, std::string*));
     34   MOCK_CONST_METHOD3(EasyGetInfoPtr, CURLcode(CURL*, CURLINFO, void**));
     35   MOCK_CONST_METHOD1(EasyStrError, std::string(CURLcode));
     36   MOCK_METHOD0(MultiInit, CURLM*());
     37   MOCK_METHOD1(MultiCleanup, CURLMcode(CURLM*));
     38   MOCK_METHOD2(MultiInfoRead, CURLMsg*(CURLM*, int*));
     39   MOCK_METHOD2(MultiAddHandle, CURLMcode(CURLM*, CURL*));
     40   MOCK_METHOD2(MultiRemoveHandle, CURLMcode(CURLM*, CURL*));
     41   MOCK_METHOD3(MultiSetSocketCallback,
     42                CURLMcode(CURLM*, curl_socket_callback, void*));
     43   MOCK_METHOD3(MultiSetTimerCallback,
     44                CURLMcode(CURLM*, curl_multi_timer_callback, void*));
     45   MOCK_METHOD3(MultiAssign, CURLMcode(CURLM*, curl_socket_t, void*));
     46   MOCK_METHOD4(MultiSocketAction, CURLMcode(CURLM*, curl_socket_t, int, int*));
     47   MOCK_CONST_METHOD1(MultiStrError, std::string(CURLMcode));
     48   MOCK_METHOD2(MultiPerform, CURLMcode(CURLM*, int*));
     49   MOCK_METHOD5(MultiWait,
     50                CURLMcode(CURLM*, curl_waitfd[], unsigned int, int, int*));
     51 
     52  private:
     53   DISALLOW_COPY_AND_ASSIGN(MockCurlInterface);
     54 };
     55 
     56 }  // namespace http
     57 }  // namespace brillo
     58 
     59 #endif  // LIBBRILLO_BRILLO_HTTP_MOCK_CURL_API_H_
     60