summaryrefslogtreecommitdiff
path: root/config_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'config_unittest.cc')
-rw-r--r--config_unittest.cc252
1 files changed, 130 insertions, 122 deletions
diff --git a/config_unittest.cc b/config_unittest.cc
index 93db179..3bc380b 100644
--- a/config_unittest.cc
+++ b/config_unittest.cc
@@ -29,6 +29,8 @@
#include "dbus/apmanager/dbus-constants.h"
#endif
+#include "apmanager/error.h"
+#include "apmanager/fake_config_adaptor.h"
#include "apmanager/fake_device_adaptor.h"
#include "apmanager/mock_control.h"
#include "apmanager/mock_device.h"
@@ -43,7 +45,6 @@ namespace apmanager {
namespace {
-const char kServicePath[] = "/manager/services/0";
const char kSsid[] = "TestSsid";
const char kInterface[] = "uap0";
const char kBridgeInterface[] = "br0";
@@ -127,10 +128,14 @@ const char kExpectedRsnConfigContent[] = "ssid=TestSsid\n"
class ConfigTest : public testing::Test {
public:
ConfigTest()
- : manager_(&control_interface_),
- config_(&manager_, kServicePath) {
+ : manager_(&control_interface_) {
ON_CALL(control_interface_, CreateDeviceAdaptorRaw())
.WillByDefault(ReturnNew<FakeDeviceAdaptor>());
+ ON_CALL(control_interface_, CreateConfigAdaptorRaw())
+ .WillByDefault(ReturnNew<FakeConfigAdaptor>());
+ // Defer creation of Config object to allow ControlInterface to setup
+ // expectations for generating fake adaptors.
+ config_.reset(new Config(&manager_, 0));
}
void SetupDevice(const std::string& interface) {
@@ -141,20 +146,21 @@ class ConfigTest : public testing::Test {
.WillRepeatedly(Return(device_));
}
+ void VerifyError(const Error& error,
+ Error::Type expected_type,
+ const std::string& expected_message_start) {
+ EXPECT_EQ(expected_type, error.type());
+ EXPECT_TRUE(
+ base::StartsWithASCII(error.message(), expected_message_start, false));
+ }
+
protected:
MockControl control_interface_;
MockManager manager_;
scoped_refptr<MockDevice> device_;
- Config config_;
+ std::unique_ptr<Config> config_;
};
-MATCHER_P(IsConfigErrorStartingWith, message, "") {
- return arg != nullptr &&
- arg->GetDomain() == brillo::errors::dbus::kDomain &&
- arg->GetCode() == kConfigError &&
- base::StartsWithASCII(arg->GetMessage(), message, false);
-}
-
TEST_F(ConfigTest, GetFrequencyFromChannel) {
uint32_t frequency;
// Invalid channel.
@@ -179,256 +185,258 @@ TEST_F(ConfigTest, GetFrequencyFromChannel) {
}
TEST_F(ConfigTest, ValidateSsid) {
- brillo::ErrorPtr error;
+ Error error;
// SSID must contain between 1 and 32 characters.
- EXPECT_TRUE(config_.ValidateSsid(&error, "s"));
- EXPECT_TRUE(config_.ValidateSsid(&error, std::string(32, 'c')));
- EXPECT_FALSE(config_.ValidateSsid(&error, ""));
- EXPECT_FALSE(config_.ValidateSsid(&error, std::string(33, 'c')));
+ EXPECT_TRUE(config_->ValidateSsid(&error, "s"));
+ EXPECT_TRUE(config_->ValidateSsid(&error, std::string(32, 'c')));
+ EXPECT_FALSE(config_->ValidateSsid(&error, ""));
+ EXPECT_FALSE(config_->ValidateSsid(&error, std::string(33, 'c')));
}
TEST_F(ConfigTest, ValidateSecurityMode) {
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.ValidateSecurityMode(&error, kSecurityModeNone));
- EXPECT_TRUE(config_.ValidateSecurityMode(&error, kSecurityModeRSN));
- EXPECT_FALSE(config_.ValidateSecurityMode(&error, "InvalidSecurityMode"));
+ Error error;
+ EXPECT_TRUE(config_->ValidateSecurityMode(&error, kSecurityModeNone));
+ EXPECT_TRUE(config_->ValidateSecurityMode(&error, kSecurityModeRSN));
+ EXPECT_FALSE(config_->ValidateSecurityMode(&error, "InvalidSecurityMode"));
}
TEST_F(ConfigTest, ValidatePassphrase) {
- brillo::ErrorPtr error;
+ Error error;
// Passpharse must contain between 8 and 63 characters.
- EXPECT_TRUE(config_.ValidatePassphrase(&error, std::string(8, 'c')));
- EXPECT_TRUE(config_.ValidatePassphrase(&error, std::string(63, 'c')));
- EXPECT_FALSE(config_.ValidatePassphrase(&error, std::string(7, 'c')));
- EXPECT_FALSE(config_.ValidatePassphrase(&error, std::string(64, 'c')));
+ EXPECT_TRUE(config_->ValidatePassphrase(&error, std::string(8, 'c')));
+ EXPECT_TRUE(config_->ValidatePassphrase(&error, std::string(63, 'c')));
+ EXPECT_FALSE(config_->ValidatePassphrase(&error, std::string(7, 'c')));
+ EXPECT_FALSE(config_->ValidatePassphrase(&error, std::string(64, 'c')));
}
TEST_F(ConfigTest, ValidateHwMode) {
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.ValidateHwMode(&error, kHwMode80211a));
- EXPECT_TRUE(config_.ValidateHwMode(&error, kHwMode80211b));
- EXPECT_TRUE(config_.ValidateHwMode(&error, kHwMode80211g));
- EXPECT_TRUE(config_.ValidateHwMode(&error, kHwMode80211n));
- EXPECT_TRUE(config_.ValidateHwMode(&error, kHwMode80211ac));
- EXPECT_FALSE(config_.ValidateSecurityMode(&error, "InvalidHwMode"));
+ Error error;
+ EXPECT_TRUE(config_->ValidateHwMode(&error, kHwMode80211a));
+ EXPECT_TRUE(config_->ValidateHwMode(&error, kHwMode80211b));
+ EXPECT_TRUE(config_->ValidateHwMode(&error, kHwMode80211g));
+ EXPECT_TRUE(config_->ValidateHwMode(&error, kHwMode80211n));
+ EXPECT_TRUE(config_->ValidateHwMode(&error, kHwMode80211ac));
+ EXPECT_FALSE(config_->ValidateSecurityMode(&error, "InvalidHwMode"));
}
TEST_F(ConfigTest, ValidateOperationMode) {
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.ValidateOperationMode(&error, kOperationModeServer));
- EXPECT_TRUE(config_.ValidateOperationMode(&error, kOperationModeBridge));
- EXPECT_FALSE(config_.ValidateOperationMode(&error, "InvalidMode"));
+ Error error;
+ EXPECT_TRUE(config_->ValidateOperationMode(&error, kOperationModeServer));
+ EXPECT_TRUE(config_->ValidateOperationMode(&error, kOperationModeBridge));
+ EXPECT_FALSE(config_->ValidateOperationMode(&error, "InvalidMode"));
}
TEST_F(ConfigTest, ValidateChannel) {
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.ValidateChannel(&error, 1));
- EXPECT_TRUE(config_.ValidateChannel(&error, 13));
- EXPECT_TRUE(config_.ValidateChannel(&error, 34));
- EXPECT_TRUE(config_.ValidateChannel(&error, 165));
- EXPECT_FALSE(config_.ValidateChannel(&error, 0));
- EXPECT_FALSE(config_.ValidateChannel(&error, 14));
- EXPECT_FALSE(config_.ValidateChannel(&error, 33));
- EXPECT_FALSE(config_.ValidateChannel(&error, 166));
+ Error error;
+ EXPECT_TRUE(config_->ValidateChannel(&error, 1));
+ EXPECT_TRUE(config_->ValidateChannel(&error, 13));
+ EXPECT_TRUE(config_->ValidateChannel(&error, 34));
+ EXPECT_TRUE(config_->ValidateChannel(&error, 165));
+ EXPECT_FALSE(config_->ValidateChannel(&error, 0));
+ EXPECT_FALSE(config_->ValidateChannel(&error, 14));
+ EXPECT_FALSE(config_->ValidateChannel(&error, 33));
+ EXPECT_FALSE(config_->ValidateChannel(&error, 166));
}
TEST_F(ConfigTest, NoSsid) {
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
std::string config_content;
- brillo::ErrorPtr error;
- EXPECT_FALSE(config_.GenerateConfigFile(&error, &config_content));
- EXPECT_THAT(error, IsConfigErrorStartingWith("SSID not specified"));
+ Error error;
+ EXPECT_FALSE(config_->GenerateConfigFile(&error, &config_content));
+ VerifyError(error, Error::kInvalidConfiguration, "SSID not specified");
}
TEST_F(ConfigTest, NoInterface) {
// Basic 80211.g configuration.
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
// No device available, fail to generate config file.
- brillo::ErrorPtr error;
+ Error error;
std::string config_content;
EXPECT_CALL(manager_, GetAvailableDevice()).WillOnce(Return(nullptr));
- EXPECT_FALSE(config_.GenerateConfigFile(&error, &config_content));
- EXPECT_THAT(error, IsConfigErrorStartingWith("No device available"));
+ EXPECT_FALSE(config_->GenerateConfigFile(&error, &config_content));
+ VerifyError(error, Error::kInternalError, "No device available");
Mock::VerifyAndClearExpectations(&manager_);
// Device available, config file should be generated without any problem.
scoped_refptr<MockDevice> device = new MockDevice(&manager_);
device->SetPreferredApInterface(kInterface);
- brillo::ErrorPtr error1;
+ error.Reset();
EXPECT_CALL(manager_, GetAvailableDevice()).WillOnce(Return(device));
- EXPECT_TRUE(config_.GenerateConfigFile(&error1, &config_content));
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &config_content));
EXPECT_NE(std::string::npos, config_content.find(
kExpected80211gConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211gConfigContent << "..within content...\n"
<< config_content;
- EXPECT_EQ(nullptr, error1.get());
+ EXPECT_TRUE(error.IsSuccess());
Mock::VerifyAndClearExpectations(&manager_);
}
TEST_F(ConfigTest, InvalidInterface) {
// Basic 80211.g configuration.
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
- // No device available, fail to generate config file.
- brillo::ErrorPtr error;
+ // Unable to find the device, fail to generate config file.
+ Error error;
std::string config_content;
EXPECT_CALL(manager_, GetDeviceFromInterfaceName(kInterface))
.WillOnce(Return(nullptr));
- EXPECT_FALSE(config_.GenerateConfigFile(&error, &config_content));
- EXPECT_THAT(error,
- IsConfigErrorStartingWith(
- "Unable to find device for the specified interface"));
+ EXPECT_FALSE(config_->GenerateConfigFile(&error, &config_content));
+ VerifyError(error,
+ Error::kInvalidConfiguration,
+ "Unable to find device for the specified interface");
Mock::VerifyAndClearExpectations(&manager_);
}
TEST_F(ConfigTest, BridgeMode) {
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
- config_.SetOperationMode(kOperationModeBridge);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
+ config_->SetOperationMode(kOperationModeBridge);
// Bridge interface required for bridge mode.
- brillo::ErrorPtr error;
+ Error error;
std::string config_content;
- EXPECT_FALSE(config_.GenerateConfigFile(&error, &config_content));
- EXPECT_THAT(error,
- IsConfigErrorStartingWith("Bridge interface not specified"));
+ EXPECT_FALSE(config_->GenerateConfigFile(&error, &config_content));
+ VerifyError(
+ error, Error::kInvalidConfiguration, "Bridge interface not specified");
// Set bridge interface, config file should be generated without error.
- config_.SetBridgeInterface(kBridgeInterface);
+ config_->SetBridgeInterface(kBridgeInterface);
// Setup mock device.
SetupDevice(kInterface);
- brillo::ErrorPtr error1;
+ error.Reset();
std::string config_content1;
- EXPECT_TRUE(config_.GenerateConfigFile(&error1, &config_content1));
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &config_content1));
EXPECT_NE(std::string::npos, config_content1.find(
kExpected80211gBridgeConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211gBridgeConfigContent << "..within content...\n"
<< config_content1;
- EXPECT_EQ(nullptr, error1.get());
+ EXPECT_TRUE(error.IsSuccess());
}
TEST_F(ConfigTest, 80211gConfig) {
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
// Setup mock device.
SetupDevice(kInterface);
std::string config_content;
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.GenerateConfigFile(&error, &config_content));
+ Error error;
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &config_content));
EXPECT_NE(std::string::npos, config_content.find(
kExpected80211gConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211gConfigContent << "..within content...\n"
<< config_content;
- EXPECT_EQ(nullptr, error.get());
+ EXPECT_TRUE(error.IsSuccess());
}
TEST_F(ConfigTest, 80211gConfigWithControlInterface) {
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
- config_.set_control_interface(kControlInterfacePath);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
+ config_->set_control_interface(kControlInterfacePath);
// Setup mock device.
SetupDevice(kInterface);
std::string config_content;
- brillo::ErrorPtr error;
- EXPECT_TRUE(config_.GenerateConfigFile(&error, &config_content));
+ Error error;
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &config_content));
EXPECT_NE(std::string::npos, config_content.find(
kExpected80211gCtrlIfaceConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211gCtrlIfaceConfigContent << "..within content...\n"
<< config_content;
- EXPECT_EQ(nullptr, error.get());
+ EXPECT_TRUE(error.IsSuccess());
}
TEST_F(ConfigTest, 80211nConfig) {
- config_.SetSsid(kSsid);
- config_.SetHwMode(kHwMode80211n);
- config_.SetInterfaceName(kInterface);
+ config_->SetSsid(kSsid);
+ config_->SetHwMode(kHwMode80211n);
+ config_->SetInterfaceName(kInterface);
// Setup mock device.
SetupDevice(kInterface);
// 5GHz channel.
- config_.SetChannel(k5GHzChannel);
+ config_->SetChannel(k5GHzChannel);
std::string ghz5_config_content;
- brillo::ErrorPtr error;
+ Error error;
std::string ht_capab_5ghz(k5GHzHTCapab);
EXPECT_CALL(*device_.get(), GetHTCapability(k5GHzChannel, _))
.WillOnce(DoAll(SetArgumentPointee<1>(ht_capab_5ghz), Return(true)));
- EXPECT_TRUE(config_.GenerateConfigFile(&error, &ghz5_config_content));
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &ghz5_config_content));
EXPECT_NE(std::string::npos, ghz5_config_content.find(
kExpected80211n5GHzConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211n5GHzConfigContent << "..within content...\n"
<< ghz5_config_content;
- EXPECT_EQ(nullptr, error.get());
+ EXPECT_TRUE(error.IsSuccess());
Mock::VerifyAndClearExpectations(device_.get());
// 2.4GHz channel.
- config_.SetChannel(k24GHzChannel);
+ config_->SetChannel(k24GHzChannel);
std::string ghz24_config_content;
- brillo::ErrorPtr error1;
+ error.Reset();
std::string ht_capab_24ghz(k24GHzHTCapab);
EXPECT_CALL(*device_.get(), GetHTCapability(k24GHzChannel, _))
.WillOnce(DoAll(SetArgumentPointee<1>(ht_capab_24ghz), Return(true)));
- EXPECT_TRUE(config_.GenerateConfigFile(&error1, &ghz24_config_content));
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &ghz24_config_content));
EXPECT_NE(std::string::npos, ghz24_config_content.find(
kExpected80211n24GHzConfigContent))
<< "Expected to find the following config...\n"
<< kExpected80211n24GHzConfigContent << "..within content...\n"
<< ghz24_config_content;
- EXPECT_EQ(nullptr, error.get());
+ EXPECT_TRUE(error.IsSuccess());
Mock::VerifyAndClearExpectations(device_.get());
}
TEST_F(ConfigTest, RsnConfig) {
- config_.SetSsid(kSsid);
- config_.SetChannel(k24GHzChannel);
- config_.SetHwMode(kHwMode80211g);
- config_.SetInterfaceName(kInterface);
- config_.SetSecurityMode(kSecurityModeRSN);
+ config_->SetSsid(kSsid);
+ config_->SetChannel(k24GHzChannel);
+ config_->SetHwMode(kHwMode80211g);
+ config_->SetInterfaceName(kInterface);
+ config_->SetSecurityMode(kSecurityModeRSN);
// Setup mock device.
SetupDevice(kInterface);
// Failed due to no passphrase specified.
std::string config_content;
- brillo::ErrorPtr error;
- EXPECT_FALSE(config_.GenerateConfigFile(&error, &config_content));
- EXPECT_THAT(error, IsConfigErrorStartingWith(
+ Error error;
+ EXPECT_FALSE(config_->GenerateConfigFile(&error, &config_content));
+ VerifyError(
+ error,
+ Error::kInvalidConfiguration,
base::StringPrintf("Passphrase not set for security mode: %s",
- kSecurityModeRSN)));
+ kSecurityModeRSN));
- brillo::ErrorPtr error1;
- config_.SetPassphrase(kPassphrase);
- EXPECT_TRUE(config_.GenerateConfigFile(&error1, &config_content));
+ error.Reset();
+ config_->SetPassphrase(kPassphrase);
+ EXPECT_TRUE(config_->GenerateConfigFile(&error, &config_content));
EXPECT_NE(std::string::npos, config_content.find(
kExpectedRsnConfigContent))
<< "Expected to find the following config...\n"
<< kExpectedRsnConfigContent << "..within content...\n"
<< config_content;
- EXPECT_EQ(nullptr, error1.get());
+ EXPECT_TRUE(error.IsSuccess());
}
} // namespace apmanager