blob: 4cdebd6f26a068cec2e92e361006a92556b2af3c [file] [log] [blame]
Darin Petkov33af05c2012-02-28 10:10:30 +01001// 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 Petkov02867712012-03-12 14:25:05 +01007#include <chromeos/dbus/service_constants.h>
Darin Petkov33af05c2012-02-28 10:10:30 +01008#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 Petkovf3c71d72012-03-21 12:32:15 +010014#include "shill/mock_store.h"
Darin Petkov33af05c2012-02-28 10:10:30 +010015#include "shill/mock_vpn_driver.h"
16
Darin Petkov79d74c92012-03-07 17:20:32 +010017using testing::_;
Darin Petkovf3c71d72012-03-21 12:32:15 +010018using testing::NiceMock;
19using testing::Return;
Darin Petkov79d74c92012-03-07 17:20:32 +010020
Darin Petkov33af05c2012-02-28 10:10:30 +010021namespace shill {
22
23class VPNServiceTest : public testing::Test {
24 public:
25 VPNServiceTest()
26 : driver_(new MockVPNDriver()),
Darin Petkov02867712012-03-12 14:25:05 +010027 service_(new VPNService(&control_, NULL, &metrics_, NULL, driver_)) {}
Darin Petkov33af05c2012-02-28 10:10:30 +010028
29 virtual ~VPNServiceTest() {}
30
31 protected:
32 MockVPNDriver *driver_; // Owned by |service_|.
33 NiceMockControl control_;
34 MockMetrics metrics_;
35 VPNServiceRefPtr service_;
36};
37
38TEST_F(VPNServiceTest, Connect) {
39 Error error;
Darin Petkov79d74c92012-03-07 17:20:32 +010040 EXPECT_CALL(*driver_, Connect(_, &error));
Darin Petkov33af05c2012-02-28 10:10:30 +010041 service_->Connect(&error);
Darin Petkov79d74c92012-03-07 17:20:32 +010042 EXPECT_TRUE(error.IsSuccess());
Darin Petkov33af05c2012-02-28 10:10:30 +010043}
44
Darin Petkov6aa21872012-03-09 16:10:19 +010045TEST_F(VPNServiceTest, Disconnect) {
46 Error error;
47 EXPECT_CALL(*driver_, Disconnect());
48 service_->Disconnect(&error);
49 EXPECT_TRUE(error.IsSuccess());
50}
51
Darin Petkov02867712012-03-12 14:25:05 +010052TEST_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
60TEST_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
68TEST_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 Petkov33af05c2012-02-28 10:10:30 +010078TEST_F(VPNServiceTest, GetStorageIdentifier) {
79 EXPECT_EQ("", service_->GetStorageIdentifier());
Darin Petkov02867712012-03-12 14:25:05 +010080 service_->set_storage_id("foo");
81 EXPECT_EQ("foo", service_->GetStorageIdentifier());
Darin Petkov33af05c2012-02-28 10:10:30 +010082}
83
84TEST_F(VPNServiceTest, GetDeviceRpcId) {
85 Error error;
86 EXPECT_EQ("/", service_->GetDeviceRpcId(&error));
87 EXPECT_EQ(Error::kNotSupported, error.type());
88}
89
Darin Petkovf3c71d72012-03-21 12:32:15 +010090TEST_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
99TEST_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 Stewartebd38562012-03-23 13:06:40 -0700107TEST_F(VPNServiceTest, InitPropertyStore) {
108 EXPECT_CALL(*driver_, InitPropertyStore(service_->mutable_store()));
109 service_->InitDriverPropertyStore();
110}
111
Darin Petkov33af05c2012-02-28 10:10:30 +0100112} // namespace shill