Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "shill/vpn_service.h" |
| 6 | |
Darin Petkov | 0286771 | 2012-03-12 14:25:05 +0100 | [diff] [blame] | 7 | #include <chromeos/dbus/service_constants.h> |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 8 | #include <gtest/gtest.h> |
| 9 | |
| 10 | #include "shill/error.h" |
| 11 | #include "shill/nice_mock_control.h" |
| 12 | #include "shill/mock_adaptors.h" |
| 13 | #include "shill/mock_metrics.h" |
Darin Petkov | f3c71d7 | 2012-03-21 12:32:15 +0100 | [diff] [blame] | 14 | #include "shill/mock_store.h" |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 15 | #include "shill/mock_vpn_driver.h" |
| 16 | |
Darin Petkov | 79d74c9 | 2012-03-07 17:20:32 +0100 | [diff] [blame] | 17 | using testing::_; |
Darin Petkov | f3c71d7 | 2012-03-21 12:32:15 +0100 | [diff] [blame] | 18 | using testing::NiceMock; |
| 19 | using testing::Return; |
Darin Petkov | 79d74c9 | 2012-03-07 17:20:32 +0100 | [diff] [blame] | 20 | |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 21 | namespace shill { |
| 22 | |
| 23 | class VPNServiceTest : public testing::Test { |
| 24 | public: |
| 25 | VPNServiceTest() |
| 26 | : driver_(new MockVPNDriver()), |
Darin Petkov | 0286771 | 2012-03-12 14:25:05 +0100 | [diff] [blame] | 27 | service_(new VPNService(&control_, NULL, &metrics_, NULL, driver_)) {} |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 28 | |
| 29 | virtual ~VPNServiceTest() {} |
| 30 | |
| 31 | protected: |
| 32 | MockVPNDriver *driver_; // Owned by |service_|. |
| 33 | NiceMockControl control_; |
| 34 | MockMetrics metrics_; |
| 35 | VPNServiceRefPtr service_; |
| 36 | }; |
| 37 | |
| 38 | TEST_F(VPNServiceTest, Connect) { |
| 39 | Error error; |
Darin Petkov | 79d74c9 | 2012-03-07 17:20:32 +0100 | [diff] [blame] | 40 | EXPECT_CALL(*driver_, Connect(_, &error)); |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 41 | service_->Connect(&error); |
Darin Petkov | 79d74c9 | 2012-03-07 17:20:32 +0100 | [diff] [blame] | 42 | EXPECT_TRUE(error.IsSuccess()); |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 43 | } |
| 44 | |
Darin Petkov | 6aa2187 | 2012-03-09 16:10:19 +0100 | [diff] [blame] | 45 | TEST_F(VPNServiceTest, Disconnect) { |
| 46 | Error error; |
| 47 | EXPECT_CALL(*driver_, Disconnect()); |
| 48 | service_->Disconnect(&error); |
| 49 | EXPECT_TRUE(error.IsSuccess()); |
| 50 | } |
| 51 | |
Darin Petkov | 0286771 | 2012-03-12 14:25:05 +0100 | [diff] [blame] | 52 | TEST_F(VPNServiceTest, CreateStorageIdentifierNoHost) { |
| 53 | KeyValueStore args; |
| 54 | Error error; |
| 55 | args.SetString(flimflam::kProviderNameProperty, "vpn-name"); |
| 56 | EXPECT_EQ("", VPNService::CreateStorageIdentifier(args, &error)); |
| 57 | EXPECT_EQ(Error::kInvalidProperty, error.type()); |
| 58 | } |
| 59 | |
| 60 | TEST_F(VPNServiceTest, CreateStorageIdentifierNoName) { |
| 61 | KeyValueStore args; |
| 62 | Error error; |
| 63 | args.SetString(flimflam::kProviderHostProperty, "10.8.0.1"); |
| 64 | EXPECT_EQ("", VPNService::CreateStorageIdentifier(args, &error)); |
| 65 | EXPECT_EQ(Error::kNotSupported, error.type()); |
| 66 | } |
| 67 | |
| 68 | TEST_F(VPNServiceTest, CreateStorageIdentifier) { |
| 69 | KeyValueStore args; |
| 70 | Error error; |
| 71 | args.SetString(flimflam::kProviderNameProperty, "vpn-name"); |
| 72 | args.SetString(flimflam::kProviderHostProperty, "10.8.0.1"); |
| 73 | EXPECT_EQ("vpn_10_8_0_1_vpn_name", |
| 74 | VPNService::CreateStorageIdentifier(args, &error)); |
| 75 | EXPECT_TRUE(error.IsSuccess()); |
| 76 | } |
| 77 | |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 78 | TEST_F(VPNServiceTest, GetStorageIdentifier) { |
| 79 | EXPECT_EQ("", service_->GetStorageIdentifier()); |
Darin Petkov | 0286771 | 2012-03-12 14:25:05 +0100 | [diff] [blame] | 80 | service_->set_storage_id("foo"); |
| 81 | EXPECT_EQ("foo", service_->GetStorageIdentifier()); |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 82 | } |
| 83 | |
| 84 | TEST_F(VPNServiceTest, GetDeviceRpcId) { |
| 85 | Error error; |
| 86 | EXPECT_EQ("/", service_->GetDeviceRpcId(&error)); |
| 87 | EXPECT_EQ(Error::kNotSupported, error.type()); |
| 88 | } |
| 89 | |
Darin Petkov | f3c71d7 | 2012-03-21 12:32:15 +0100 | [diff] [blame] | 90 | TEST_F(VPNServiceTest, Load) { |
| 91 | NiceMock<MockStore> storage; |
| 92 | static const char kStorageID[] = "storage-id"; |
| 93 | service_->set_storage_id(kStorageID); |
| 94 | EXPECT_CALL(storage, ContainsGroup(kStorageID)).WillOnce(Return(true)); |
| 95 | EXPECT_CALL(*driver_, Load(&storage, kStorageID)).WillOnce(Return(true)); |
| 96 | EXPECT_TRUE(service_->Load(&storage)); |
| 97 | } |
| 98 | |
| 99 | TEST_F(VPNServiceTest, Save) { |
| 100 | NiceMock<MockStore> storage; |
| 101 | static const char kStorageID[] = "storage-id"; |
| 102 | service_->set_storage_id(kStorageID); |
| 103 | EXPECT_CALL(*driver_, Save(&storage, kStorageID)).WillOnce(Return(true)); |
| 104 | EXPECT_TRUE(service_->Save(&storage)); |
| 105 | } |
| 106 | |
Paul Stewart | ebd3856 | 2012-03-23 13:06:40 -0700 | [diff] [blame] | 107 | TEST_F(VPNServiceTest, InitPropertyStore) { |
| 108 | EXPECT_CALL(*driver_, InitPropertyStore(service_->mutable_store())); |
| 109 | service_->InitDriverPropertyStore(); |
| 110 | } |
| 111 | |
Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 112 | } // namespace shill |