blob: 50a10a3d93153c8ee0f403ca99670ef15664a36a [file] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <map>
#include <vector>
#include <base/containers/contains.h>
#include "shill/wifi/wifi_security.h"
#include "shill/dbus-constants.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using testing::Test;
namespace shill {
class WiFiSecurityTest : public Test {
public:
WiFiSecurityTest() = default;
~WiFiSecurityTest() override = default;
};
TEST(WiFiSecurityTest, BasicNone) {
WiFiSecurity sec, sec2;
EXPECT_FALSE(sec.IsValid() || sec2.IsValid());
sec = WiFiSecurity::kNone;
sec2 = WiFiSecurity(kSecurityNone);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_FALSE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicTransOwe) {
WiFiSecurity sec, sec2;
EXPECT_FALSE(sec.IsValid() || sec2.IsValid());
sec = WiFiSecurity::kTransOwe;
sec2 = WiFiSecurity(kSecurityTransOwe);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_FALSE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicOwe) {
WiFiSecurity sec, sec2;
EXPECT_FALSE(sec.IsValid() || sec2.IsValid());
sec = WiFiSecurity::kOwe;
sec2 = WiFiSecurity(kSecurityOwe);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_FALSE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWep) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWep;
sec2 = WiFiSecurity(kSecurityWep);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_FALSE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa;
sec2 = WiFiSecurity(kSecurityWpa);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpaWpa2) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpaWpa2;
sec2 = WiFiSecurity(kSecurityWpaWpa2);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpaAll) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpaAll;
sec2 = WiFiSecurity(kSecurityWpaAll);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa2) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa2;
sec2 = WiFiSecurity(kSecurityWpa2);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa2Wpa3) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa2Wpa3;
sec2 = WiFiSecurity(kSecurityWpa2Wpa3);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa3) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa3;
sec2 = WiFiSecurity(kSecurityWpa3);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_TRUE(sec.IsPsk());
EXPECT_FALSE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAll));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa3));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpaEnterprise) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpaEnterprise;
sec2 = WiFiSecurity(kSecurityWpaEnterprise);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_TRUE(sec.IsEnterprise());
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAllEnterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Enterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3Enterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3Enterprise));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpaWpa2Enterprise) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpaWpa2Enterprise;
sec2 = WiFiSecurity(kSecurityWpaWpa2Enterprise);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_TRUE(sec.IsEnterprise());
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAllEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3Enterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3Enterprise));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa2Enterprise) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa2Enterprise;
sec2 = WiFiSecurity(kSecurityWpa2Enterprise);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_TRUE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAllEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3Enterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa3Enterprise));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa2Wpa3Enterprise) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa2Wpa3Enterprise;
sec2 = WiFiSecurity(kSecurityWpa2Wpa3Enterprise);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_TRUE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAllEnterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa3Enterprise));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, BasicWpa3Enterprise) {
WiFiSecurity sec, sec2;
sec = WiFiSecurity::kWpa3Enterprise;
sec2 = WiFiSecurity(kSecurityWpa3Enterprise);
EXPECT_TRUE(sec.IsValid() && sec2.IsValid());
EXPECT_EQ(sec, sec2);
EXPECT_TRUE(sec.IsWpa());
EXPECT_FALSE(sec.IsPsk());
EXPECT_TRUE(sec.IsEnterprise());
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaEnterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpaWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpaAllEnterprise));
EXPECT_FALSE(sec.HasCommonMode(WiFiSecurity::kWpa2Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa2Wpa3Enterprise));
EXPECT_TRUE(sec.HasCommonMode(WiFiSecurity::kWpa3Enterprise));
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
sec.Freeze();
EXPECT_EQ(sec, WiFiSecurity(sec.ToString()));
}
TEST(WiFiSecurityTest, IsSubsetOf) {
std::map<WiFiSecurity::Mode, std::vector<WiFiSecurity::Mode>> valid_supersets{
{WiFiSecurity::kNone, {WiFiSecurity::kNone}},
{WiFiSecurity::kTransOwe, {WiFiSecurity::kTransOwe}},
{WiFiSecurity::kOwe, {WiFiSecurity::kOwe}},
{WiFiSecurity::kWep, {WiFiSecurity::kWep}},
{WiFiSecurity::kWpa,
{WiFiSecurity::kWpa, WiFiSecurity::kWpaWpa2, WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpaWpa2, {WiFiSecurity::kWpaWpa2, WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpaAll, {WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpa2,
{WiFiSecurity::kWpaWpa2, WiFiSecurity::kWpa2, WiFiSecurity::kWpa2Wpa3,
WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpa2Wpa3,
{WiFiSecurity::kWpa2Wpa3, WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpa3,
{WiFiSecurity::kWpa3, WiFiSecurity::kWpa2Wpa3, WiFiSecurity::kWpaAll}},
{WiFiSecurity::kWpaEnterprise,
{WiFiSecurity::kWpaEnterprise, WiFiSecurity::kWpaWpa2Enterprise,
WiFiSecurity::kWpaAllEnterprise}},
{WiFiSecurity::kWpaWpa2Enterprise,
{WiFiSecurity::kWpaWpa2Enterprise, WiFiSecurity::kWpaAllEnterprise}},
{WiFiSecurity::kWpaAllEnterprise, {WiFiSecurity::kWpaAllEnterprise}},
{WiFiSecurity::kWpa2Enterprise,
{WiFiSecurity::kWpaWpa2Enterprise, WiFiSecurity::kWpa2Enterprise,
WiFiSecurity::kWpa2Wpa3Enterprise, WiFiSecurity::kWpaAllEnterprise}},
{WiFiSecurity::kWpa2Wpa3Enterprise,
{WiFiSecurity::kWpa2Wpa3Enterprise, WiFiSecurity::kWpaAllEnterprise}},
{WiFiSecurity::kWpa3Enterprise,
{WiFiSecurity::kWpa3Enterprise, WiFiSecurity::kWpa2Wpa3Enterprise,
WiFiSecurity::kWpaAllEnterprise}},
};
std::vector<WiFiSecurity::Mode> security_modes;
for (auto it : valid_supersets) {
security_modes.push_back(it.first);
}
for (const auto& mode : security_modes) {
WiFiSecurity security(mode);
for (const auto& set_mode : security_modes) {
WiFiSecurity security_set(set_mode);
if (base::Contains(valid_supersets[mode], set_mode)) {
EXPECT_TRUE(security.IsSubsetOf(set_mode));
EXPECT_EQ(security_set.Combine(security.mode()), security_set);
} else {
EXPECT_FALSE(security.IsSubsetOf(set_mode))
<< security_set << "/" << security;
// If IsSubsetOf is false then there are following possibilities:
// - they are from different SecurityClasses (Combine -> invalid)
// - they are both from "None" class (Combine -> higher one)
// - they are both from "WPA" class (Combine -> a superset)
// First two cases are tested elsewhere, so here just focus on the third
// one.
if (security_set.SecurityClass() == security.SecurityClass() &&
security_set.IsWpa()) {
auto combination = security_set.Combine(security.mode());
EXPECT_TRUE(combination.IsValid());
EXPECT_TRUE(security.IsSubsetOf(combination));
EXPECT_TRUE(security_set.IsSubsetOf(combination));
}
}
}
}
}
TEST(WiFiSecurityTest, CombineSecurityNone) {
WiFiSecurity sec = WiFiSecurity::kNone;
EXPECT_EQ(sec.Combine(WiFiSecurity::kNone), WiFiSecurity::kNone);
EXPECT_EQ(sec.Combine(WiFiSecurity::kTransOwe), WiFiSecurity::kTransOwe);
EXPECT_EQ(sec.Combine(WiFiSecurity::kOwe), WiFiSecurity::kOwe);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaAll).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
}
TEST(WiFiSecurityTest, CombineSecurityTransOwe) {
WiFiSecurity sec = WiFiSecurity::kTransOwe;
EXPECT_EQ(sec.Combine(WiFiSecurity::kNone), WiFiSecurity::kTransOwe);
EXPECT_EQ(sec.Combine(WiFiSecurity::kTransOwe), WiFiSecurity::kTransOwe);
EXPECT_EQ(sec.Combine(WiFiSecurity::kOwe), WiFiSecurity::kOwe);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaAll).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
}
TEST(WiFiSecurityTest, CombineSecurityOwe) {
WiFiSecurity sec = WiFiSecurity::kOwe;
EXPECT_EQ(sec.Combine(WiFiSecurity::kNone), WiFiSecurity::kOwe);
EXPECT_EQ(sec.Combine(WiFiSecurity::kTransOwe), WiFiSecurity::kOwe);
EXPECT_EQ(sec.Combine(WiFiSecurity::kOwe), WiFiSecurity::kOwe);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaAll).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
}
TEST(WiFiSecurityTest, CombineSecurityWep) {
WiFiSecurity sec = WiFiSecurity::kWep;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWep), WiFiSecurity::kWep);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaAll).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
}
TEST(WiFiSecurityTest, CombineSecurityWpa) {
WiFiSecurity sec = WiFiSecurity::kWpa;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpa);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaAll), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpaAll);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
// In the initial phase of deployment "frozen" status should not matter.
// Let's check this.
// TODO(b/226138492): Update these checks afterwards (here and below).
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpaAll);
}
TEST(WiFiSecurityTest, CombineSecurityWpaWpa2) {
WiFiSecurity sec = WiFiSecurity::kWpaWpa2;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaAll), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpaAll);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpaAll);
}
TEST(WiFiSecurityTest, CombineSecurityWpa2) {
WiFiSecurity sec = WiFiSecurity::kWpa2;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaAll), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaWpa2);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpa2Wpa3);
}
TEST(WiFiSecurityTest, CombineSecurityWpa2Wpa3) {
WiFiSecurity sec = WiFiSecurity::kWpa2Wpa3;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaAll), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), sec);
}
TEST(WiFiSecurityTest, CombineSecurityWpa3) {
WiFiSecurity sec = WiFiSecurity::kWpa3;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaAll), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), WiFiSecurity::kWpa3);
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaEnterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3Enterprise).IsValid());
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2), WiFiSecurity::kWpaAll);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3), WiFiSecurity::kWpa2Wpa3);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3), sec);
}
TEST(WiFiSecurityTest, CombineSecurityWpaEnterprise) {
WiFiSecurity sec = WiFiSecurity::kWpaEnterprise;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
}
TEST(WiFiSecurityTest, CombineSecurityWpaWpa2Enterprise) {
WiFiSecurity sec = WiFiSecurity::kWpaWpa2Enterprise;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpaAllEnterprise);
}
TEST(WiFiSecurityTest, CombineSecurityWpa2Enterprise) {
WiFiSecurity sec = WiFiSecurity::kWpa2Enterprise;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaWpa2Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
}
TEST(WiFiSecurityTest, CombineSecurityWpa2Wpa3Enterprise) {
WiFiSecurity sec = WiFiSecurity::kWpa2Wpa3Enterprise;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise), sec);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise), sec);
}
TEST(WiFiSecurityTest, CombineSecurityWpa3Enterprise) {
WiFiSecurity sec = WiFiSecurity::kWpa3Enterprise;
EXPECT_FALSE(sec.Combine(WiFiSecurity::kNone).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kTransOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kOwe).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWep).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpaWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa2Wpa3).IsValid());
EXPECT_FALSE(sec.Combine(WiFiSecurity::kWpa3).IsValid());
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise),
WiFiSecurity::kWpa3Enterprise);
sec.Freeze();
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaEnterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpaWpa2Enterprise),
WiFiSecurity::kWpaAllEnterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa2Wpa3Enterprise),
WiFiSecurity::kWpa2Wpa3Enterprise);
EXPECT_EQ(sec.Combine(WiFiSecurity::kWpa3Enterprise), sec);
}
TEST(WiFiSecurityTest, SecurityClass) {
for (auto mode :
{WiFiSecurity::kNone, WiFiSecurity::kOwe, WiFiSecurity::kTransOwe}) {
EXPECT_EQ(WiFiSecurity::SecurityClass(mode), kSecurityClassNone);
}
EXPECT_EQ(WiFiSecurity::SecurityClass(WiFiSecurity::kWep), kSecurityClassWep);
for (auto mode :
{WiFiSecurity::kWpa, WiFiSecurity::kWpaWpa2, WiFiSecurity::kWpaAll,
WiFiSecurity::kWpa2, WiFiSecurity::kWpa2Wpa3, WiFiSecurity::kWpa3}) {
EXPECT_EQ(WiFiSecurity::SecurityClass(mode), kSecurityClassPsk);
}
for (auto mode :
{WiFiSecurity::kWpaEnterprise, WiFiSecurity::kWpaWpa2Enterprise,
WiFiSecurity::kWpaAllEnterprise, WiFiSecurity::kWpa2Enterprise,
WiFiSecurity::kWpa2Wpa3Enterprise, WiFiSecurity::kWpa3Enterprise}) {
EXPECT_EQ(WiFiSecurity::SecurityClass(mode), kSecurityClass8021x);
}
}
} // namespace shill