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