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

Unified Diff: chrome/browser/chromeos/login/wizard_controller_browsertest.cc

Issue 676773002: Add device disabling to OOBE flow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update browser tests. Created 6 years, 2 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
Index: chrome/browser/chromeos/login/wizard_controller_browsertest.cc
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
index 02f1e9d2f4ea75380caf4a34409d53e2d1395f61..cb09d208652ff0aec5f76aca3e4477e5e1321b88 100644
--- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -25,8 +25,10 @@
#include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_screen.h"
#include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h"
#include "chrome/browser/chromeos/login/existing_user_controller.h"
+#include "chrome/browser/chromeos/login/screens/device_disabled_screen.h"
#include "chrome/browser/chromeos/login/screens/error_screen.h"
#include "chrome/browser/chromeos/login/screens/hid_detection_screen.h"
+#include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_actor.h"
#include "chrome/browser/chromeos/login/screens/mock_eula_screen.h"
#include "chrome/browser/chromeos/login/screens/mock_network_screen.h"
#include "chrome/browser/chromeos/login/screens/mock_update_screen.h"
@@ -41,6 +43,7 @@
#include "chrome/browser/chromeos/login/ui/webui_login_view.h"
#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
#include "chrome/browser/chromeos/policy/server_backed_device_state.h"
+#include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/timezone/timezone_request.h"
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
@@ -64,6 +67,7 @@
#include "chromeos/settings/timezone_settings.h"
#include "chromeos/system/fake_statistics_provider.h"
#include "chromeos/system/statistics_provider.h"
+#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "net/test/spawned_test_server/spawned_test_server.h"
@@ -77,6 +81,7 @@
using ::testing::Exactly;
using ::testing::Invoke;
+using ::testing::Mock;
using ::testing::Return;
namespace chromeos {
@@ -106,6 +111,8 @@ const char kTimezoneResponseBody[] =
" \"timeZoneName\" : \"Pacific Standard Time\"\n"
"}";
+const char kDisabledMessage[] = "This device has been disabled.";
+
class PrefStoreStub : public TestingPrefStore {
public:
// TestingPrefStore overrides:
@@ -390,7 +397,9 @@ class WizardControllerFlowTest : public WizardControllerTest {
WizardControllerTest::SetUpOnMainThread();
// Make sure that OOBE is run as an "official" build.
- WizardController::default_controller()->is_official_build_ = true;
+ WizardController* wizard_controller =
+ WizardController::default_controller();
+ wizard_controller->is_official_build_ = true;
// Clear portal list (as it is by default in OOBE).
NetworkHandler::Get()->network_state_handler()->SetCheckPortalList("");
@@ -416,12 +425,22 @@ class WizardControllerFlowTest : public WizardControllerTest {
kAutoEnrollmentCheckScreenName,
MockAutoEnrollmentCheckScreen,
MockAutoEnrollmentCheckScreenActor);
+ device_disabled_screen_actor_.reset(new MockDeviceDisabledScreenActor);
+ wizard_controller->screens_[WizardController::kDeviceDisabledScreenName] =
+ make_linked_ptr(new DeviceDisabledScreen(
+ wizard_controller,
+ device_disabled_screen_actor_.get()));
+ EXPECT_CALL(*device_disabled_screen_actor_, Show(_)).Times(0);
// Switch to the initial screen.
- EXPECT_EQ(NULL, WizardController::default_controller()->current_screen());
+ EXPECT_EQ(NULL, wizard_controller->current_screen());
EXPECT_CALL(*mock_network_screen_, Show()).Times(1);
- WizardController::default_controller()->AdvanceToScreen(
- WizardController::kNetworkScreenName);
+ wizard_controller->AdvanceToScreen(WizardController::kNetworkScreenName);
+ }
+
+ void TearDownOnMainThread() override {
+ device_disabled_screen_actor_.reset();
+ WizardControllerTest::TearDownOnMainThread();
}
virtual void TearDown() {
@@ -488,6 +507,7 @@ class WizardControllerFlowTest : public WizardControllerTest {
MockEnrollmentScreenActor>* mock_enrollment_screen_;
MockOutShowHide<MockAutoEnrollmentCheckScreen,
MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_;
+ scoped_ptr<MockDeviceDisabledScreenActor> device_disabled_screen_actor_;
private:
NetworkPortalDetectorTestImpl* network_portal_detector_;
@@ -525,6 +545,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) {
InitTimezoneResolver();
OnExit(ScreenObserver::EULA_ACCEPTED);
EXPECT_TRUE(GetGeolocationProvider());
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -534,7 +555,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) {
OnExit(ScreenObserver::UPDATE_INSTALLED);
CheckCurrentScreen(WizardController::kAutoEnrollmentCheckScreenName);
- EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(0);
+ EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
EXPECT_CALL(*mock_eula_screen_, Show()).Times(0);
OnExit(ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
@@ -562,6 +583,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowErrorUpdate) {
EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
OnExit(ScreenObserver::EULA_ACCEPTED);
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -571,7 +593,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowErrorUpdate) {
OnExit(ScreenObserver::UPDATE_ERROR_UPDATING);
CheckCurrentScreen(WizardController::kAutoEnrollmentCheckScreenName);
- EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(0);
+ EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
EXPECT_CALL(*mock_eula_screen_, Show()).Times(0);
OnExit(ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
@@ -700,9 +722,13 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest,
EXPECT_FALSE(ExistingUserController::current_controller() == NULL);
}
-class WizardControllerEnrollmentFlowTest : public WizardControllerFlowTest {
+class WizardControllerDeviceStateTest : public WizardControllerFlowTest {
protected:
- WizardControllerEnrollmentFlowTest() {
+ WizardControllerDeviceStateTest()
+ : install_attributes_(std::string(),
+ std::string(),
+ std::string(),
+ policy::DEVICE_MODE_NOT_SET) {
fake_statistics_provider_.SetMachineStatistic("serial_number", "test");
fake_statistics_provider_.SetMachineStatistic(system::kActivateDateKey,
"2000-01");
@@ -723,10 +749,12 @@ class WizardControllerEnrollmentFlowTest : public WizardControllerFlowTest {
system::ScopedFakeStatisticsProvider fake_statistics_provider_;
private:
- DISALLOW_COPY_AND_ASSIGN(WizardControllerEnrollmentFlowTest);
+ policy::ScopedStubEnterpriseInstallAttributes install_attributes_;
+
+ DISALLOW_COPY_AND_ASSIGN(WizardControllerDeviceStateTest);
};
-IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
+IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
ControlFlowForcedReEnrollment) {
CheckCurrentScreen(WizardController::kNetworkScreenName);
EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
@@ -738,6 +766,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
OnExit(ScreenObserver::EULA_ACCEPTED);
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -752,6 +781,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
WizardController::default_controller()->current_screen());
EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
screen->Start();
+
// Wait for auto-enrollment controller to encounter the connection error.
WaitForAutoEnrollmentState(policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR);
@@ -780,7 +810,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
EXPECT_TRUE(StartupUtils::IsOobeCompleted());
}
-IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
+IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
ControlFlowNoForcedReEnrollmentOnFirstBoot) {
fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey);
EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT,
@@ -798,6 +828,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
OnExit(ScreenObserver::EULA_ACCEPTED);
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -810,6 +841,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
AutoEnrollmentCheckScreen::Get(WizardController::default_controller());
EXPECT_EQ(screen,
WizardController::default_controller()->current_screen());
+ EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
screen->Start();
EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT,
LoginDisplayHostImpl::default_host()
@@ -817,6 +849,57 @@ IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest,
->state());
}
+IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
+ ControlFlowDeviceDisabled) {
+ CheckCurrentScreen(WizardController::kNetworkScreenName);
+ EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
+ EXPECT_CALL(*mock_eula_screen_, Show()).Times(1);
+ OnExit(ScreenObserver::NETWORK_CONNECTED);
+
+ CheckCurrentScreen(WizardController::kEulaScreenName);
+ EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1);
+ EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
+ EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
+ OnExit(ScreenObserver::EULA_ACCEPTED);
+
+ // Let update screen smooth time process (time = 0ms).
+ content::RunAllPendingInMessageLoop();
+
+ CheckCurrentScreen(WizardController::kUpdateScreenName);
+ EXPECT_CALL(*mock_update_screen_, Hide()).Times(1);
+ EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1);
+ OnExit(ScreenObserver::UPDATE_INSTALLED);
+
+ AutoEnrollmentCheckScreen* screen =
+ AutoEnrollmentCheckScreen::Get(WizardController::default_controller());
+ EXPECT_EQ(screen,
+ WizardController::default_controller()->current_screen());
+ EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
+ screen->Start();
+
+ // Wait for auto-enrollment controller to encounter the connection error.
+ WaitForAutoEnrollmentState(policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR);
+
+ // The error screen shows up if device state could not be retrieved.
+ EXPECT_FALSE(StartupUtils::IsOobeCompleted());
+ EXPECT_EQ(GetErrorScreen(),
+ WizardController::default_controller()->current_screen());
+ base::DictionaryValue device_state;
+ device_state.SetBoolean(policy::kDeviceStateDisabled, true);
+ device_state.SetString(policy::kDeviceStateDisabledMessage, kDisabledMessage);
+ g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState,
+ device_state);
+ EXPECT_CALL(*device_disabled_screen_actor_, Show(kDisabledMessage)).Times(1);
+ OnExit(ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
+
+ ResetAutoEnrollmentCheckScreen();
+
+ // Make sure the device disabled screen is shown.
+ CheckCurrentScreen(WizardController::kDeviceDisabledScreenName);
+
+ EXPECT_FALSE(StartupUtils::IsOobeCompleted());
+}
+
class WizardControllerBrokenLocalStateTest : public WizardControllerTest {
protected:
WizardControllerBrokenLocalStateTest()
@@ -845,11 +928,6 @@ class WizardControllerBrokenLocalStateTest : public WizardControllerTest {
WizardController::default_controller()->is_official_build_ = true;
}
- virtual void TearDownInProcessBrowserTestFixture() override {
- WizardControllerTest::TearDownInProcessBrowserTestFixture();
- }
-
-
FakeSessionManagerClient* fake_session_manager_client() const {
return fake_session_manager_client_;
}
@@ -970,6 +1048,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerKioskFlowTest,
EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
OnExit(ScreenObserver::EULA_ACCEPTED);
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -1014,6 +1093,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerKioskFlowTest,
EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
OnExit(ScreenObserver::EULA_ACCEPTED);
+
// Let update screen smooth time process (time = 0ms).
content::RunAllPendingInMessageLoop();
@@ -1113,7 +1193,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest,
// TODO(dzhioev): Add tests for controller/host pairing flow.
// http://crbug.com/375191
-COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 23,
+COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 24,
add_tests_for_new_control_flow_you_just_introduced);
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/login/wizard_controller.cc ('k') | chrome/browser/chromeos/policy/auto_enrollment_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698