Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1923)

Unified Diff: components/arc/arc_util_unittest.cc

Issue 2885933003: arc: Consolidate IsArcAllowedForUser logic (Closed)
Patch Set: add comment for arc kiosk user check Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/arc/arc_util.cc ('k') | components/user_manager/fake_user_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/arc_util_unittest.cc
diff --git a/components/arc/arc_util_unittest.cc b/components/arc/arc_util_unittest.cc
index 0f9883aec200fa239c45c5457aa3e7b69081e66a..0a52662a6140706d77d386ef2ffd7991c662fc74 100644
--- a/components/arc/arc_util_unittest.cc
+++ b/components/arc/arc_util_unittest.cc
@@ -12,6 +12,9 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/test/scoped_feature_list.h"
+#include "components/signin/core/account_id/account_id.h"
+#include "components/user_manager/fake_user_manager.h"
+#include "components/user_manager/user.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/test/test_windows.h"
@@ -39,6 +42,44 @@ class ScopedArcFeature {
DISALLOW_COPY_AND_ASSIGN(ScopedArcFeature);
};
+// Helper to enable user_manager::FakeUserManager while it is in scope.
+// TODO(xiyuan): Remove after ScopedUserManagerEnabler is moved to user_manager.
+class ScopedUserManager {
+ public:
+ explicit ScopedUserManager(user_manager::UserManager* user_manager)
+ : user_manager_(user_manager) {
+ DCHECK(!user_manager::UserManager::IsInitialized());
+ user_manager->Initialize();
+ }
+ ~ScopedUserManager() {
+ DCHECK_EQ(user_manager::UserManager::Get(), user_manager_);
+ user_manager_->Shutdown();
+ user_manager_->Destroy();
+ }
+
+ private:
+ user_manager::UserManager* const user_manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(ScopedUserManager);
+};
+
+// Fake user that can be created with a specified type.
+class FakeUser : public user_manager::User {
+ public:
+ explicit FakeUser(user_manager::UserType user_type)
+ : User(AccountId::FromUserEmail("user@test.com")),
+ user_type_(user_type) {}
+ ~FakeUser() override = default;
+
+ // user_manager::User:
+ user_manager::UserType GetType() const override { return user_type_; }
+
+ private:
+ const user_manager::UserType user_type_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeUser);
+};
+
using ArcUtilTest = testing::Test;
TEST_F(ArcUtilTest, IsArcAvailable_None) {
@@ -161,5 +202,42 @@ TEST_F(ArcUtilTest, IsArcAppWindow) {
EXPECT_FALSE(IsArcAppWindow(nullptr));
}
+TEST_F(ArcUtilTest, IsArcAllowedForUser) {
+ user_manager::FakeUserManager fake_user_manager;
+ ScopedUserManager scoped_user_manager(&fake_user_manager);
+
+ struct {
+ user_manager::UserType user_type;
+ bool expected_allowed;
+ } const kTestCases[] = {
+ {user_manager::USER_TYPE_REGULAR, true},
+ {user_manager::USER_TYPE_GUEST, false},
+ {user_manager::USER_TYPE_PUBLIC_ACCOUNT, false},
+ {user_manager::USER_TYPE_SUPERVISED, false},
+ {user_manager::USER_TYPE_KIOSK_APP, false},
+ {user_manager::USER_TYPE_CHILD, true},
+ {user_manager::USER_TYPE_ARC_KIOSK_APP, true},
+ {user_manager::USER_TYPE_ACTIVE_DIRECTORY, true},
+ };
+ for (const auto& test_case : kTestCases) {
+ const FakeUser user(test_case.user_type);
+ EXPECT_EQ(test_case.expected_allowed, IsArcAllowedForUser(&user))
+ << "User type=" << test_case.user_type;
+ }
+
+ // An ephemeral user is a logged in user but unknown to UserManager when
+ // ephemeral policy is set.
+ fake_user_manager.SetEphemeralUsersEnabled(true);
+ fake_user_manager.UserLoggedIn(AccountId::FromUserEmail("test@test.com"),
+ "test@test.com-hash", false);
+ const user_manager::User* ephemeral_user = fake_user_manager.GetActiveUser();
+ ASSERT_TRUE(ephemeral_user);
+ ASSERT_TRUE(fake_user_manager.IsUserCryptohomeDataEphemeral(
+ ephemeral_user->GetAccountId()));
+
+ // Ephemeral user is not allowed for ARC.
+ EXPECT_FALSE(IsArcAllowedForUser(ephemeral_user));
+}
+
} // namespace
} // namespace arc
« no previous file with comments | « components/arc/arc_util.cc ('k') | components/user_manager/fake_user_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698