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