// Copyright (c) 2012 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/policy/enterprise_install_attributes.h" #include "base/memory/scoped_ptr.h" #include "chrome/browser/chromeos/cros/cryptohome_library.h" #include "testing/gtest/include/gtest/gtest.h" namespace policy { static const char kTestUser[] = "test@example.com"; static const char kTestDomain[] = "example.com"; static const char kTestDeviceId[] = "133750519"; static const char kAttrEnterpriseOwned[] = "enterprise.owned"; static const char kAttrEnterpriseUser[] = "enterprise.user"; class EnterpriseInstallAttributesTest : public testing::Test { protected: EnterpriseInstallAttributesTest() : cryptohome_(chromeos::CryptohomeLibrary::GetImpl(true)), install_attributes_(cryptohome_.get()) {} scoped_ptr cryptohome_; EnterpriseInstallAttributes install_attributes_; }; TEST_F(EnterpriseInstallAttributesTest, Lock) { EXPECT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); EXPECT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); // Another user from the4 same domain should also succeed. EXPECT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( "test1@example.com", DEVICE_MODE_ENTERPRISE, kTestDeviceId)); // But another domain should fail. EXPECT_EQ(EnterpriseInstallAttributes::LOCK_WRONG_USER, install_attributes_.LockDevice( "test@bluebears.com", DEVICE_MODE_ENTERPRISE, kTestDeviceId)); } TEST_F(EnterpriseInstallAttributesTest, IsEnterpriseDevice) { EXPECT_FALSE(install_attributes_.IsEnterpriseDevice()); ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); EXPECT_TRUE(install_attributes_.IsEnterpriseDevice()); } TEST_F(EnterpriseInstallAttributesTest, GetDomain) { EXPECT_EQ(std::string(), install_attributes_.GetDomain()); ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); EXPECT_EQ(kTestDomain, install_attributes_.GetDomain()); } TEST_F(EnterpriseInstallAttributesTest, GetRegistrationUser) { EXPECT_EQ(std::string(), install_attributes_.GetRegistrationUser()); ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); EXPECT_EQ(kTestUser, install_attributes_.GetRegistrationUser()); } TEST_F(EnterpriseInstallAttributesTest, GetDeviceId) { EXPECT_EQ(std::string(), install_attributes_.GetDeviceId()); ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_ENTERPRISE, kTestDeviceId)); EXPECT_EQ(kTestDeviceId, install_attributes_.GetDeviceId()); } TEST_F(EnterpriseInstallAttributesTest, GetMode) { EXPECT_EQ(DEVICE_MODE_NOT_SET, install_attributes_.GetMode()); ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, install_attributes_.LockDevice( kTestUser, DEVICE_MODE_KIOSK, kTestDeviceId)); EXPECT_EQ(DEVICE_MODE_KIOSK, install_attributes_.GetMode()); } TEST_F(EnterpriseInstallAttributesTest, ConsumerDevice) { EXPECT_EQ(DEVICE_MODE_NOT_SET, install_attributes_.GetMode()); // Lock the attributes empty. ASSERT_TRUE(cryptohome_->InstallAttributesFinalize()); ASSERT_FALSE(cryptohome_->InstallAttributesIsFirstInstall()); EXPECT_EQ(DEVICE_MODE_CONSUMER, install_attributes_.GetMode()); } TEST_F(EnterpriseInstallAttributesTest, DeviceLockedFromOlderVersion) { EXPECT_EQ(DEVICE_MODE_NOT_SET, install_attributes_.GetMode()); // Lock the attributes as if it was done from older Chrome version. ASSERT_TRUE(cryptohome_->InstallAttributesSet(kAttrEnterpriseOwned, "true")); ASSERT_TRUE(cryptohome_->InstallAttributesSet(kAttrEnterpriseUser, kTestUser)); ASSERT_TRUE(cryptohome_->InstallAttributesFinalize()); ASSERT_FALSE(cryptohome_->InstallAttributesIsFirstInstall()); EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode()); EXPECT_EQ(kTestDomain, install_attributes_.GetDomain()); EXPECT_EQ(kTestUser, install_attributes_.GetRegistrationUser()); EXPECT_EQ("", install_attributes_.GetDeviceId()); } } // namespace policy