blob: a9ae06cbe072e1dff1e3be06c1f012b559271297 [file] [log] [blame]
Paul Stewartd408fdf2012-05-07 17:15:57 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkov98dd6a02011-06-10 15:12:57 -07002// 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/dhcp_provider.h"
Chris Masone2b105542011-06-22 10:58:09 -07006
Albert Chaulk0e1cdea2013-02-27 15:32:55 -08007#include <base/file_util.h>
8#include <base/files/scoped_temp_dir.h>
9#include <base/stringprintf.h>
10
Chris Masone2b105542011-06-22 10:58:09 -070011#include "shill/dhcp_config.h"
Chris Masone19e30402011-07-19 15:48:47 -070012#include "shill/mock_control.h"
Darin Petkov98dd6a02011-06-10 15:12:57 -070013#include "shill/mock_glib.h"
14
Albert Chaulk0e1cdea2013-02-27 15:32:55 -080015using base::FilePath;
16using base::ScopedTempDir;
Darin Petkov98dd6a02011-06-10 15:12:57 -070017using testing::Test;
18
19namespace shill {
20
21namespace {
22const char kDeviceName[] = "testdevicename";
Paul Stewartd32f4842012-01-11 16:08:13 -080023const char kHostName[] = "testhostname";
Paul Stewartd408fdf2012-05-07 17:15:57 -070024const char kStorageIdentifier[] = "teststorageidentifier";
25const bool kArpGateway = false;
Darin Petkov98dd6a02011-06-10 15:12:57 -070026} // namespace {}
27
28class DHCPProviderTest : public Test {
29 public:
Darin Petkovf65e9282011-06-21 14:29:56 -070030 DHCPProviderTest() : provider_(DHCPProvider::GetInstance()) {
Darin Petkov98dd6a02011-06-10 15:12:57 -070031 provider_->glib_ = &glib_;
Chris Masone19e30402011-07-19 15:48:47 -070032 provider_->control_interface_ = &control_;
Han Shen4afba202012-12-17 08:48:35 -080033 // DHCPProvider is a singleton, there is no guarentee that it is
34 // not setup/used elsewhere, so reset its state before running our
35 // tests.
36 provider_->configs_.clear();
Darin Petkov98dd6a02011-06-10 15:12:57 -070037 }
38
39 protected:
Chris Masone19e30402011-07-19 15:48:47 -070040 MockControl control_;
Darin Petkov98dd6a02011-06-10 15:12:57 -070041 MockGLib glib_;
Darin Petkov98dd6a02011-06-10 15:12:57 -070042 DHCPProvider *provider_;
43};
44
45TEST_F(DHCPProviderTest, CreateConfig) {
Paul Stewartd408fdf2012-05-07 17:15:57 -070046 DHCPConfigRefPtr config = provider_->CreateConfig(kDeviceName,
47 kHostName,
48 kStorageIdentifier,
49 kArpGateway);
Darin Petkov98dd6a02011-06-10 15:12:57 -070050 EXPECT_TRUE(config.get());
51 EXPECT_EQ(&glib_, config->glib_);
Darin Petkovf65e9282011-06-21 14:29:56 -070052 EXPECT_EQ(kDeviceName, config->device_name());
Darin Petkov98dd6a02011-06-10 15:12:57 -070053 EXPECT_TRUE(provider_->configs_.empty());
54}
55
Albert Chaulk0e1cdea2013-02-27 15:32:55 -080056TEST_F(DHCPProviderTest, DestroyLease) {
57 ScopedTempDir temp_dir;
58 FilePath lease_file;
59 EXPECT_TRUE(temp_dir.CreateUniqueTempDir());
60 provider_->root_ = temp_dir.path();
61 lease_file = provider_->root_.Append(base::StringPrintf(
62 DHCPProvider::kDHCPCDPathFormatLease,
63 kDeviceName));
64 EXPECT_TRUE(file_util::CreateDirectory(lease_file.DirName()));
65 EXPECT_EQ(0, file_util::WriteFile(lease_file, "", 0));
66 EXPECT_TRUE(file_util::PathExists(lease_file));
67 provider_->DestroyLease(kDeviceName);
68 EXPECT_FALSE(file_util::PathExists(lease_file));
69}
70
Darin Petkov98dd6a02011-06-10 15:12:57 -070071} // namespace shill