aboutsummaryrefslogtreecommitdiffstats
path: root/brillo/http/mock_curl_api.h
blob: daac8c28057eee14bc11d66ed17b050a98ff9e1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 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_