1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2012 The Android Open Source Project
3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Licensed under the Apache License, Version 2.0 (the "License");
5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// you may not use this file except in compliance with the License.
6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// You may obtain a copy of the License at
7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//      http://www.apache.org/licenses/LICENSE-2.0
9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Unless required by applicable law or agreed to in writing, software
11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// distributed under the License is distributed on an "AS IS" BASIS,
12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// See the License for the specific language governing permissions and
14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// limitations under the License.
15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
169be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
17c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#ifndef SHILL_MOCK_SERVICE_H_
18c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#define SHILL_MOCK_SERVICE_H_
199be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
20ed2c28c6e3c0bc2f9d8832fee083868304178f08Hristo Stefanov#include <string>
21ed2c28c6e3c0bc2f9d8832fee083868304178f08Hristo Stefanov
229be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone#include <base/memory/ref_counted.h>
239be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone#include <gmock/gmock.h>
249be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
25be5f5b341ba4b85d45ffb6c0430ef5ab84c7b961Paul Stewart#include "shill/connection.h"
267aa5f90848b530999d8b6788ecb40aa30871c7aeChris Masone#include "shill/refptr_types.h"
279be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone#include "shill/service.h"
28435de2cd55a95836381b53acbce8cbbad98ec04dGaurav Shah#include "shill/technology.h"
299be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
309be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masonenamespace shill {
319be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
329be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masoneclass MockService : public Service {
339be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone public:
349be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone  // A constructor for the Service object
351e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MockService(ControlInterface* control_interface,
361e006c610db980bca337121134d2ba54497b7a59Paul Stewart              EventDispatcher* dispatcher,
371e006c610db980bca337121134d2ba54497b7a59Paul Stewart              Metrics* metrics,
381e006c610db980bca337121134d2ba54497b7a59Paul Stewart              Manager* manager);
395ea763b83299b5fad76a87183fb39a74c2d3c61dBen Chan  ~MockService() override;
409be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
418a3188dbc04245c17a4729d16a632547ce4bf585mukesh agrawal  MOCK_METHOD0(AutoConnect, void());
421e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD2(Connect, void(Error* error, const char* reason));
431e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD2(Disconnect, void(Error* error, const char* reason));
440d06119be3224788ba1aa65ed24bc8e46b56b949Samuel Tan  MOCK_METHOD3(DisconnectWithFailure, void(Service::ConnectFailure failure,
451e006c610db980bca337121134d2ba54497b7a59Paul Stewart                                           Error* error,
461e006c610db980bca337121134d2ba54497b7a59Paul Stewart                                           const char* reason));
471e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(UserInitiatedDisconnect, void(Error* error));
481e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(CalculateState, std::string(Error* error));
4903dba0bccc3a39cded5083212e56713a6d349e01Paul Stewart  MOCK_CONST_METHOD0(state, ConnectState());
50435de2cd55a95836381b53acbce8cbbad98ec04dGaurav Shah  MOCK_METHOD1(SetState, void(ConnectState state));
511e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD2(SetPortalDetectionFailure, void(const std::string& phase,
521e006c610db980bca337121134d2ba54497b7a59Paul Stewart                                               const std::string& status));
53435de2cd55a95836381b53acbce8cbbad98ec04dGaurav Shah  MOCK_CONST_METHOD0(IsConnected, bool());
54435de2cd55a95836381b53acbce8cbbad98ec04dGaurav Shah  MOCK_CONST_METHOD0(IsConnecting, bool());
551e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_CONST_METHOD1(IsDependentOn, bool(const ServiceRefPtr& b));
568a3188dbc04245c17a4729d16a632547ce4bf585mukesh agrawal  MOCK_CONST_METHOD0(IsFailed, bool());
57700de6400c18f8cba77821f8cd2a1935b96999a6Peter Qiu  MOCK_CONST_METHOD0(IsOnline, bool());
58bfb825563ecdf282162dfb4e43ded89c99b0fbb5Paul Stewart  MOCK_CONST_METHOD0(IsVisible, bool());
5903dba0bccc3a39cded5083212e56713a6d349e01Paul Stewart  MOCK_METHOD1(SetFailure, void(ConnectFailure failure));
6003dba0bccc3a39cded5083212e56713a6d349e01Paul Stewart  MOCK_CONST_METHOD0(failure, ConnectFailure());
611e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_CONST_METHOD1(GetDeviceRpcId, std::string(Error* error));
628e60d61b13fedf9cb75f1d4f1762605375837d98Peter Qiu  MOCK_CONST_METHOD0(GetInnerDeviceRpcIdentifier, std::string());
636791a43add38926966bd420e89541717fb2cb2b5Chris Masone  MOCK_CONST_METHOD0(GetRpcIdentifier, std::string());
646515aabcd1fbbb9ff2090c9675c17eeef64e7474Chris Masone  MOCK_CONST_METHOD0(GetStorageIdentifier, std::string());
65967eaebb63aac3b9679dc4b2dca0565292e3af03Paul Stewart  MOCK_CONST_METHOD1(GetLoadableStorageIdentifier,
661e006c610db980bca337121134d2ba54497b7a59Paul Stewart                     std::string(const StoreInterface& store_interface));
671e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(Load, bool(StoreInterface* store_interface));
6865512e10f0534c390b2ef027cc64f660658db6c0Paul Stewart  MOCK_METHOD0(Unload, bool());
691e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(Save, bool(StoreInterface* store_interface));
701e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD2(Configure, void(const KeyValueStore& args, Error* error));
711e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_CONST_METHOD1(DoPropertiesMatch, bool(const KeyValueStore& args));
7235eff134fd95fdf1918803c4966f8b790914b3d4Paul Stewart  MOCK_CONST_METHOD0(Is8021xConnectable, bool());
73d01b5cc35185e022b66e08832e12fe7f59b5aa24Garret Kelly  MOCK_CONST_METHOD0(HasStaticNameServers, bool());
74d215af6f72d012f43057c34f17a12506baa21e66Paul Stewart  MOCK_CONST_METHOD0(IsPortalDetectionDisabled, bool());
75d215af6f72d012f43057c34f17a12506baa21e66Paul Stewart  MOCK_CONST_METHOD0(IsPortalDetectionAuto, bool());
7610ccbb3c6bc4f4246105743c8508fc9ce8759c17Paul Stewart  MOCK_CONST_METHOD0(IsRemembered, bool());
7720088d860631a67c151a12783fbbee63c708792fPaul Stewart  MOCK_CONST_METHOD0(HasProxyConfig, bool());
781e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(SetConnection, void(const ConnectionRefPtr& connection));
791e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_CONST_METHOD0(connection, const ConnectionRefPtr&());
8067370f6ebe6757f55249f6e87f4a96922d0c4518Thieu Le  MOCK_CONST_METHOD0(explicitly_disconnected, bool());
811a72f5444e077ed21b8e085b17d7f9f1bc44fa5ePeter Qiu#if !defined(DISABLE_WIFI) || !defined(DISABLE_WIRED_8021X)
821e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_CONST_METHOD0(eap, const EapCredentials*());
831a72f5444e077ed21b8e085b17d7f9f1bc44fa5ePeter Qiu#endif  // DISABLE_WIFI || DISABLE_WIRED_8021X
84435de2cd55a95836381b53acbce8cbbad98ec04dGaurav Shah  MOCK_CONST_METHOD0(technology, Technology::Identifier());
851e006c610db980bca337121134d2ba54497b7a59Paul Stewart  MOCK_METHOD1(OnPropertyChanged, void(const std::string& property));
862eee613868307d04f9e5a0efbc8c72a7ffcd90bbPaul Stewart  MOCK_METHOD0(ClearExplicitlyDisconnected, void());
87a89154bfedfd8872242083ffe4f084fdc774c078Peter Qiu  MOCK_CONST_METHOD0(is_dns_auto_fallback_allowed, bool());
88a89154bfedfd8872242083ffe4f084fdc774c078Peter Qiu  MOCK_METHOD0(NotifyIPConfigChanges, void());
89d49760e19d137f43df29e00265259d395b07994cPeter Qiu  MOCK_CONST_METHOD0(link_monitor_disabled, bool());
9022ce765226cfdcf267b7dc80c22892e6b29065eaPaul Stewart  MOCK_METHOD0(EnableAndRetainAutoConnect, void());
912eee613868307d04f9e5a0efbc8c72a7ffcd90bbPaul Stewart
926515aabcd1fbbb9ff2090c9675c17eeef64e7474Chris Masone  // Set a string for this Service via |store|.  Can be wired to Save() for
936515aabcd1fbbb9ff2090c9675c17eeef64e7474Chris Masone  // test purposes.
941e006c610db980bca337121134d2ba54497b7a59Paul Stewart  bool FauxSave(StoreInterface* store);
95ce4ec19216ccd15ae349ee42498657afc2c75bd8Paul Stewart  // Sets the connection reference returned by default when connection()
96ce4ec19216ccd15ae349ee42498657afc2c75bd8Paul Stewart  // is called.
971e006c610db980bca337121134d2ba54497b7a59Paul Stewart  void set_mock_connection(const ConnectionRefPtr& connection) {
98ce4ec19216ccd15ae349ee42498657afc2c75bd8Paul Stewart    mock_connection_ = connection;
99ce4ec19216ccd15ae349ee42498657afc2c75bd8Paul Stewart  }
1001e006c610db980bca337121134d2ba54497b7a59Paul Stewart  const std::string& friendly_name() const { return Service::friendly_name(); }
1016515aabcd1fbbb9ff2090c9675c17eeef64e7474Chris Masone
1029be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone private:
103ce4ec19216ccd15ae349ee42498657afc2c75bd8Paul Stewart  ConnectionRefPtr mock_connection_;
1049be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone  DISALLOW_COPY_AND_ASSIGN(MockService);
1059be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone};
1069be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
1079be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone}  // namespace shill
1089be4a9d1e87d64f850f15061123b2a4334477fa2Chris Masone
109c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#endif  // SHILL_MOCK_SERVICE_H_
110