blob: 21dfcf96d09a746d4daa13662a3061644681162a [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/login/users/affiliation.h"
#include <set>
#include <string>
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
TEST(AffiliationTest, HaveCommonElementEmptySet) {
// Empty sets don't have common elements.
EXPECT_FALSE(HaveCommonElement(AffiliationIDSet(), AffiliationIDSet()));
AffiliationIDSet not_empty_set;
not_empty_set.insert("a");
// Only first set is empty. No common elements and no crash.
EXPECT_FALSE(HaveCommonElement(AffiliationIDSet(), not_empty_set));
// Now the second set is empty.
EXPECT_FALSE(HaveCommonElement(not_empty_set, AffiliationIDSet()));
}
TEST(AffiliationTest, HaveCommonElementNoOverlap) {
AffiliationIDSet set1;
AffiliationIDSet set2;
// No common elements.
set1.insert("a");
set1.insert("b");
set1.insert("c");
set2.insert("d");
set2.insert("e");
set2.insert("f");
EXPECT_FALSE(HaveCommonElement(set1, set2));
}
TEST(AffiliationTest, HaveCommonElementFirstAndLastIsCommon) {
AffiliationIDSet set1;
AffiliationIDSet set2;
// The common element is last in set1 and first in set2.
set1.insert("a");
set1.insert("b");
set1.insert("c");
set1.insert("d"); // String "d" is common.
set2.insert("d");
set2.insert("e");
set2.insert("f");
EXPECT_TRUE(HaveCommonElement(set1, set2));
EXPECT_TRUE(HaveCommonElement(set2, set1));
}
TEST(AffiliationTest, HaveCommonElementCommonInTheMiddle) {
AffiliationIDSet set1;
AffiliationIDSet set2;
// The common element is in the middle of the two sets.
set1.insert("b");
set1.insert("f"); // String "f" is common.
set1.insert("k");
set2.insert("c");
set2.insert("f");
set2.insert("j");
EXPECT_TRUE(HaveCommonElement(set1, set2));
EXPECT_TRUE(HaveCommonElement(set2, set1));
}
TEST(AffiliationTest, Generic) {
AffiliationIDSet user_ids; // User affiliation IDs.
AffiliationIDSet device_ids; // Device affiliation IDs.
// Empty affiliation IDs.
EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, "user@managed.com"));
user_ids.insert("aaaa"); // Only user affiliation IDs present.
EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, "user@managed.com"));
device_ids.insert("bbbb"); // Device and user IDs do not overlap.
EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, "user@managed.com"));
user_ids.insert("cccc"); // Device and user IDs do overlap.
device_ids.insert("cccc");
EXPECT_TRUE(IsUserAffiliated(user_ids, device_ids, "user@managed.com"));
// Invalid email overrides match of affiliation IDs.
EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, ""));
EXPECT_FALSE(IsUserAffiliated(user_ids, device_ids, "user"));
}
} // namespace chromeos