1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2013 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// 16be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 1787602518c59af2f9e8288d81a1f877dd80f24433Ben Chan#include "shill/ethernet/ethernet_eap_service.h" 18be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 19be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include <base/bind.h> 20289a5a5e18bb1a676b3dfce111af4c2c00c7776eSamuel Tan#if defined(__ANDROID__) 21289a5a5e18bb1a676b3dfce111af4c2c00c7776eSamuel Tan#include <dbus/service_constants.h> 22289a5a5e18bb1a676b3dfce111af4c2c00c7776eSamuel Tan#else 23be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include <chromeos/dbus/service_constants.h> 24289a5a5e18bb1a676b3dfce111af4c2c00c7776eSamuel Tan#endif // __ANDROID__ 25be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include <gtest/gtest.h> 26be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 2787602518c59af2f9e8288d81a1f877dd80f24433Ben Chan#include "shill/ethernet/mock_ethernet_eap_provider.h" 28bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal#include "shill/mock_adaptors.h" 29be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include "shill/mock_control.h" 30be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include "shill/mock_event_dispatcher.h" 31be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include "shill/mock_manager.h" 32be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include "shill/mock_metrics.h" 33bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal#include "shill/service_property_change_test.h" 34be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart#include "shill/technology.h" 35be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 36be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewartusing testing::Return; 37be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 38be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewartnamespace shill { 39be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 40be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewartclass EthernetEapServiceTest : public testing::Test { 41be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart public: 42be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EthernetEapServiceTest() 43be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart : metrics_(&dispatcher_), 44bad1c10ffd2d4ac14f7bd9f4ef6a8982e711f566mukesh agrawal manager_(&control_, &dispatcher_, &metrics_), 45be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart service_(new EthernetEapService(&control_, 46be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart &dispatcher_, 47be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart &metrics_, 48be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart &manager_)) {} 49be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart virtual ~EthernetEapServiceTest() {} 50be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 51be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart protected: 527e779d87abbba4d9e50ef28513a27c7bbd5cd550Paul Stewart ServiceMockAdaptor* GetAdaptor() { 53fa1eb722d0742d89c26b9c5c81d02ef2a138cbf2Alex Vakulenko return static_cast<ServiceMockAdaptor*>(service_->adaptor()); 54bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal } 55bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal 56be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart MockControl control_; 57be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart MockEventDispatcher dispatcher_; 58be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart MockMetrics metrics_; 59be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart MockManager manager_; 60be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart MockEthernetEapProvider provider_; 61be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart scoped_refptr<EthernetEapService> service_; 62be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart}; 63be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 64be9abfd46f85280d2139d635190f72b792eb3efaPaul StewartTEST_F(EthernetEapServiceTest, MethodOverrides) { 65f8a2ce10fbcd9b5b1a6776e93997833599a1575fBen Chan EXPECT_EQ("/", service_->GetDeviceRpcId(nullptr)); 66be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_EQ("etherneteap_all", service_->GetStorageIdentifier()); 67be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_EQ(Technology::kEthernetEap, service_->technology()); 68be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_TRUE(service_->Is8021x()); 69be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_FALSE(service_->IsVisible()); 70be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart} 71be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 72be9abfd46f85280d2139d635190f72b792eb3efaPaul StewartTEST_F(EthernetEapServiceTest, OnEapCredentialsChanged) { 73b6df8b11a3eff18acdc3e9128af73c62ef39aa1aRebecca Silberstein service_->has_ever_connected_ = true; 74b6df8b11a3eff18acdc3e9128af73c62ef39aa1aRebecca Silberstein EXPECT_TRUE(service_->has_ever_connected()); 75be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(manager_, ethernet_eap_provider()).WillOnce(Return(&provider_)); 76be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(provider_, OnCredentialsChanged()); 775777690fb2291a468715eabfcc6f7aac6f1678cdRebecca Silberstein service_->OnEapCredentialsChanged(Service::kReasonPropertyUpdate); 78b6df8b11a3eff18acdc3e9128af73c62ef39aa1aRebecca Silberstein EXPECT_FALSE(service_->has_ever_connected()); 79be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart} 80be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 81be9abfd46f85280d2139d635190f72b792eb3efaPaul StewartTEST_F(EthernetEapServiceTest, OnEapCredentialPropertyChanged) { 82be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(manager_, ethernet_eap_provider()).WillOnce(Return(&provider_)); 83be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(provider_, OnCredentialsChanged()); 84783f00b0ff2cf27277fa663e443595cce5c5846aBen Chan service_->OnPropertyChanged(kEapPasswordProperty); 85be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart} 86be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 87be9abfd46f85280d2139d635190f72b792eb3efaPaul StewartTEST_F(EthernetEapServiceTest, Unload) { 88be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(manager_, ethernet_eap_provider()).WillOnce(Return(&provider_)); 89be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_CALL(provider_, OnCredentialsChanged()); 90be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart EXPECT_FALSE(service_->Unload()); 91be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart} 92be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart 93bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawalTEST_F(EthernetEapServiceTest, PropertyChanges) { 94bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal TestCommonPropertyChanges(service_, GetAdaptor()); 95bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal} 96bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal 97bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal// Custom property setters should return false, and make no changes, if 98bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal// the new value is the same as the old value. 99bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawalTEST_F(EthernetEapServiceTest, CustomSetterNoopChange) { 100bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal TestCustomSetterNoopChange(service_, &manager_); 101bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal} 102bebf1b8bce52b88c2cc2d93200b9405f9c19cf21mukesh agrawal 103be9abfd46f85280d2139d635190f72b792eb3efaPaul Stewart} // namespace shill 104