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

Side by Side 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: 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/wizard_controller.h" 5 #include "chrome/browser/chromeos/login/wizard_controller.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "base/prefs/pref_registry_simple.h" 11 #include "base/prefs/pref_registry_simple.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/prefs/pref_service_factory.h" 13 #include "base/prefs/pref_service_factory.h"
14 #include "base/prefs/testing_pref_store.h" 14 #include "base/prefs/testing_pref_store.h"
15 #include "base/run_loop.h" 15 #include "base/run_loop.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
18 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/browser_shutdown.h" 19 #include "chrome/browser/browser_shutdown.h"
20 #include "chrome/browser/chrome_notification_types.h" 20 #include "chrome/browser/chrome_notification_types.h"
21 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" 21 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
22 #include "chrome/browser/chromeos/base/locale_util.h" 22 #include "chrome/browser/chromeos/base/locale_util.h"
23 #include "chrome/browser/chromeos/geolocation/simple_geolocation_provider.h" 23 #include "chrome/browser/chromeos/geolocation/simple_geolocation_provider.h"
24 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" 24 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
25 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc reen.h" 25 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc reen.h"
26 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h" 26 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h"
27 #include "chrome/browser/chromeos/login/existing_user_controller.h" 27 #include "chrome/browser/chromeos/login/existing_user_controller.h"
28 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h"
28 #include "chrome/browser/chromeos/login/screens/error_screen.h" 29 #include "chrome/browser/chromeos/login/screens/error_screen.h"
29 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h" 30 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h"
31 #include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_acto r.h"
30 #include "chrome/browser/chromeos/login/screens/mock_eula_screen.h" 32 #include "chrome/browser/chromeos/login/screens/mock_eula_screen.h"
31 #include "chrome/browser/chromeos/login/screens/mock_network_screen.h" 33 #include "chrome/browser/chromeos/login/screens/mock_network_screen.h"
32 #include "chrome/browser/chromeos/login/screens/mock_update_screen.h" 34 #include "chrome/browser/chromeos/login/screens/mock_update_screen.h"
33 #include "chrome/browser/chromeos/login/screens/network_screen.h" 35 #include "chrome/browser/chromeos/login/screens/network_screen.h"
34 #include "chrome/browser/chromeos/login/screens/reset_screen.h" 36 #include "chrome/browser/chromeos/login/screens/reset_screen.h"
35 #include "chrome/browser/chromeos/login/screens/user_image_screen.h" 37 #include "chrome/browser/chromeos/login/screens/user_image_screen.h"
36 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h" 38 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h"
37 #include "chrome/browser/chromeos/login/startup_utils.h" 39 #include "chrome/browser/chromeos/login/startup_utils.h"
38 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" 40 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h"
39 #include "chrome/browser/chromeos/login/test_login_utils.h" 41 #include "chrome/browser/chromeos/login/test_login_utils.h"
40 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 42 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
41 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" 43 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
42 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" 44 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
43 #include "chrome/browser/chromeos/policy/server_backed_device_state.h" 45 #include "chrome/browser/chromeos/policy/server_backed_device_state.h"
46 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h"
44 #include "chrome/browser/chromeos/profiles/profile_helper.h" 47 #include "chrome/browser/chromeos/profiles/profile_helper.h"
45 #include "chrome/browser/chromeos/timezone/timezone_request.h" 48 #include "chrome/browser/chromeos/timezone/timezone_request.h"
46 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 49 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
47 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" 50 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
48 #include "chrome/common/chrome_paths.h" 51 #include "chrome/common/chrome_paths.h"
49 #include "chrome/common/chrome_switches.h" 52 #include "chrome/common/chrome_switches.h"
50 #include "chrome/common/pref_names.h" 53 #include "chrome/common/pref_names.h"
51 #include "chrome/grit/generated_resources.h" 54 #include "chrome/grit/generated_resources.h"
52 #include "chrome/test/base/ui_test_utils.h" 55 #include "chrome/test/base/ui_test_utils.h"
53 #include "chromeos/audio/cras_audio_handler.h" 56 #include "chromeos/audio/cras_audio_handler.h"
54 #include "chromeos/chromeos_switches.h" 57 #include "chromeos/chromeos_switches.h"
55 #include "chromeos/chromeos_test_utils.h" 58 #include "chromeos/chromeos_test_utils.h"
56 #include "chromeos/dbus/dbus_thread_manager.h" 59 #include "chromeos/dbus/dbus_thread_manager.h"
57 #include "chromeos/dbus/fake_session_manager_client.h" 60 #include "chromeos/dbus/fake_session_manager_client.h"
58 #include "chromeos/login/auth/key.h" 61 #include "chromeos/login/auth/key.h"
59 #include "chromeos/login/auth/mock_auth_status_consumer.h" 62 #include "chromeos/login/auth/mock_auth_status_consumer.h"
60 #include "chromeos/login/auth/mock_authenticator.h" 63 #include "chromeos/login/auth/mock_authenticator.h"
61 #include "chromeos/login/auth/user_context.h" 64 #include "chromeos/login/auth/user_context.h"
62 #include "chromeos/network/network_state.h" 65 #include "chromeos/network/network_state.h"
63 #include "chromeos/network/network_state_handler.h" 66 #include "chromeos/network/network_state_handler.h"
64 #include "chromeos/settings/timezone_settings.h" 67 #include "chromeos/settings/timezone_settings.h"
65 #include "chromeos/system/fake_statistics_provider.h" 68 #include "chromeos/system/fake_statistics_provider.h"
66 #include "chromeos/system/statistics_provider.h" 69 #include "chromeos/system/statistics_provider.h"
70 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
67 #include "content/public/test/browser_test_utils.h" 71 #include "content/public/test/browser_test_utils.h"
68 #include "content/public/test/test_utils.h" 72 #include "content/public/test/test_utils.h"
69 #include "net/test/spawned_test_server/spawned_test_server.h" 73 #include "net/test/spawned_test_server/spawned_test_server.h"
70 #include "net/url_request/test_url_fetcher_factory.h" 74 #include "net/url_request/test_url_fetcher_factory.h"
71 #include "net/url_request/url_fetcher_impl.h" 75 #include "net/url_request/url_fetcher_impl.h"
72 #include "testing/gmock/include/gmock/gmock.h" 76 #include "testing/gmock/include/gmock/gmock.h"
73 #include "testing/gtest/include/gtest/gtest.h" 77 #include "testing/gtest/include/gtest/gtest.h"
74 #include "third_party/icu/source/common/unicode/locid.h" 78 #include "third_party/icu/source/common/unicode/locid.h"
75 #include "ui/base/accelerators/accelerator.h" 79 #include "ui/base/accelerators/accelerator.h"
76 #include "ui/base/l10n/l10n_util.h" 80 #include "ui/base/l10n/l10n_util.h"
77 81
78 using ::testing::Exactly; 82 using ::testing::Exactly;
79 using ::testing::Invoke; 83 using ::testing::Invoke;
84 using ::testing::Mock;
80 using ::testing::Return; 85 using ::testing::Return;
81 86
82 namespace chromeos { 87 namespace chromeos {
83 88
84 namespace { 89 namespace {
85 90
86 const char kUsername[] = "test_user@managedchrome.com"; 91 const char kUsername[] = "test_user@managedchrome.com";
87 const char kPassword[] = "test_password"; 92 const char kPassword[] = "test_password";
88 93
89 const char kGeolocationResponseBody[] = 94 const char kGeolocationResponseBody[] =
90 "{\n" 95 "{\n"
91 " \"location\": {\n" 96 " \"location\": {\n"
92 " \"lat\": 51.0,\n" 97 " \"lat\": 51.0,\n"
93 " \"lng\": -0.1\n" 98 " \"lng\": -0.1\n"
94 " },\n" 99 " },\n"
95 " \"accuracy\": 1200.4\n" 100 " \"accuracy\": 1200.4\n"
96 "}"; 101 "}";
97 102
98 // Timezone should not match kGeolocationResponseBody to check that exactly 103 // Timezone should not match kGeolocationResponseBody to check that exactly
99 // this value will be used. 104 // this value will be used.
100 const char kTimezoneResponseBody[] = 105 const char kTimezoneResponseBody[] =
101 "{\n" 106 "{\n"
102 " \"dstOffset\" : 0.0,\n" 107 " \"dstOffset\" : 0.0,\n"
103 " \"rawOffset\" : -32400.0,\n" 108 " \"rawOffset\" : -32400.0,\n"
104 " \"status\" : \"OK\",\n" 109 " \"status\" : \"OK\",\n"
105 " \"timeZoneId\" : \"America/Anchorage\",\n" 110 " \"timeZoneId\" : \"America/Anchorage\",\n"
106 " \"timeZoneName\" : \"Pacific Standard Time\"\n" 111 " \"timeZoneName\" : \"Pacific Standard Time\"\n"
107 "}"; 112 "}";
108 113
114 const char kDisabledMessage[] = "This device has been disabled.";
115
109 class PrefStoreStub : public TestingPrefStore { 116 class PrefStoreStub : public TestingPrefStore {
110 public: 117 public:
111 // TestingPrefStore overrides: 118 // TestingPrefStore overrides:
112 virtual PrefReadError GetReadError() const override { 119 virtual PrefReadError GetReadError() const override {
113 return PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE; 120 return PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE;
114 } 121 }
115 122
116 virtual bool IsInitializationComplete() const override { 123 virtual bool IsInitializationComplete() const override {
117 return true; 124 return true;
118 } 125 }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 }; 390 };
384 391
385 class WizardControllerFlowTest : public WizardControllerTest { 392 class WizardControllerFlowTest : public WizardControllerTest {
386 protected: 393 protected:
387 WizardControllerFlowTest() {} 394 WizardControllerFlowTest() {}
388 // Overriden from InProcessBrowserTest: 395 // Overriden from InProcessBrowserTest:
389 virtual void SetUpOnMainThread() override { 396 virtual void SetUpOnMainThread() override {
390 WizardControllerTest::SetUpOnMainThread(); 397 WizardControllerTest::SetUpOnMainThread();
391 398
392 // Make sure that OOBE is run as an "official" build. 399 // Make sure that OOBE is run as an "official" build.
393 WizardController::default_controller()->is_official_build_ = true; 400 WizardController* wizard_controller =
401 WizardController::default_controller();
402 wizard_controller->is_official_build_ = true;
394 403
395 // Clear portal list (as it is by default in OOBE). 404 // Clear portal list (as it is by default in OOBE).
396 NetworkHandler::Get()->network_state_handler()->SetCheckPortalList(""); 405 NetworkHandler::Get()->network_state_handler()->SetCheckPortalList("");
397 406
398 // Set up the mocks for all screens. 407 // Set up the mocks for all screens.
399 MOCK(mock_network_screen_, 408 MOCK(mock_network_screen_,
400 kNetworkScreenName, 409 kNetworkScreenName,
401 MockNetworkScreen, 410 MockNetworkScreen,
402 MockNetworkScreenActor); 411 MockNetworkScreenActor);
403 MOCK(mock_update_screen_, 412 MOCK(mock_update_screen_,
404 kUpdateScreenName, 413 kUpdateScreenName,
405 MockUpdateScreen, 414 MockUpdateScreen,
406 MockUpdateScreenActor); 415 MockUpdateScreenActor);
407 MOCK(mock_eula_screen_, 416 MOCK(mock_eula_screen_,
408 kEulaScreenName, 417 kEulaScreenName,
409 MockEulaScreen, 418 MockEulaScreen,
410 MockEulaScreenActor); 419 MockEulaScreenActor);
411 MOCK(mock_enrollment_screen_, 420 MOCK(mock_enrollment_screen_,
412 kEnrollmentScreenName, 421 kEnrollmentScreenName,
413 MockEnrollmentScreen, 422 MockEnrollmentScreen,
414 MockEnrollmentScreenActor); 423 MockEnrollmentScreenActor);
415 MOCK(mock_auto_enrollment_check_screen_, 424 MOCK(mock_auto_enrollment_check_screen_,
416 kAutoEnrollmentCheckScreenName, 425 kAutoEnrollmentCheckScreenName,
417 MockAutoEnrollmentCheckScreen, 426 MockAutoEnrollmentCheckScreen,
418 MockAutoEnrollmentCheckScreenActor); 427 MockAutoEnrollmentCheckScreenActor);
428 device_disabled_screen_actor_.reset(new MockDeviceDisabledScreenActor);
429 wizard_controller->screens_[WizardController::kDeviceDisabledScreenName] =
430 make_linked_ptr(new DeviceDisabledScreen(
431 wizard_controller,
432 device_disabled_screen_actor_.get()));
433 EXPECT_CALL(*device_disabled_screen_actor_, Show(_)).Times(0);
419 434
420 // Switch to the initial screen. 435 // Switch to the initial screen.
421 EXPECT_EQ(NULL, WizardController::default_controller()->current_screen()); 436 EXPECT_EQ(NULL, wizard_controller->current_screen());
422 EXPECT_CALL(*mock_network_screen_, Show()).Times(1); 437 EXPECT_CALL(*mock_network_screen_, Show()).Times(1);
423 WizardController::default_controller()->AdvanceToScreen( 438 wizard_controller->AdvanceToScreen(WizardController::kNetworkScreenName);
424 WizardController::kNetworkScreenName); 439 }
440
441 void TearDownOnMainThread() override {
442 device_disabled_screen_actor_.reset();
443 WizardControllerTest::TearDownOnMainThread();
425 } 444 }
426 445
427 virtual void TearDown() { 446 virtual void TearDown() {
428 if (fallback_fetcher_factory_) { 447 if (fallback_fetcher_factory_) {
429 fetcher_factory_.reset(); 448 fetcher_factory_.reset();
430 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get()); 449 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get());
431 fallback_fetcher_factory_.reset(); 450 fallback_fetcher_factory_.reset();
432 } 451 }
433 } 452 }
434 453
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 } 500 }
482 501
483 MockOutShowHide<MockNetworkScreen, MockNetworkScreenActor>* 502 MockOutShowHide<MockNetworkScreen, MockNetworkScreenActor>*
484 mock_network_screen_; 503 mock_network_screen_;
485 MockOutShowHide<MockUpdateScreen, MockUpdateScreenActor>* mock_update_screen_; 504 MockOutShowHide<MockUpdateScreen, MockUpdateScreenActor>* mock_update_screen_;
486 MockOutShowHide<MockEulaScreen, MockEulaScreenActor>* mock_eula_screen_; 505 MockOutShowHide<MockEulaScreen, MockEulaScreenActor>* mock_eula_screen_;
487 MockOutShowHide<MockEnrollmentScreen, 506 MockOutShowHide<MockEnrollmentScreen,
488 MockEnrollmentScreenActor>* mock_enrollment_screen_; 507 MockEnrollmentScreenActor>* mock_enrollment_screen_;
489 MockOutShowHide<MockAutoEnrollmentCheckScreen, 508 MockOutShowHide<MockAutoEnrollmentCheckScreen,
490 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_; 509 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_;
510 scoped_ptr<MockDeviceDisabledScreenActor> device_disabled_screen_actor_;
491 511
492 private: 512 private:
493 NetworkPortalDetectorTestImpl* network_portal_detector_; 513 NetworkPortalDetectorTestImpl* network_portal_detector_;
494 514
495 // Use a test factory as a fallback so we don't have to deal with other 515 // Use a test factory as a fallback so we don't have to deal with other
496 // requests. 516 // requests.
497 scoped_ptr<WizardControllerTestURLFetcherFactory> fallback_fetcher_factory_; 517 scoped_ptr<WizardControllerTestURLFetcherFactory> fallback_fetcher_factory_;
498 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_; 518 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_;
499 519
500 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest); 520 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest);
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 ExistingUserController::current_controller()->ShowWrongHWIDScreen(); 713 ExistingUserController::current_controller()->ShowWrongHWIDScreen();
694 714
695 CheckCurrentScreen(WizardController::kWrongHWIDScreenName); 715 CheckCurrentScreen(WizardController::kWrongHWIDScreenName);
696 716
697 // After warning is skipped, user returns to sign-in screen. 717 // After warning is skipped, user returns to sign-in screen.
698 // And this destroys WizardController. 718 // And this destroys WizardController.
699 OnExit(ScreenObserver::WRONG_HWID_WARNING_SKIPPED); 719 OnExit(ScreenObserver::WRONG_HWID_WARNING_SKIPPED);
700 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); 720 EXPECT_FALSE(ExistingUserController::current_controller() == NULL);
701 } 721 }
702 722
703 class WizardControllerEnrollmentFlowTest : public WizardControllerFlowTest { 723 class WizardControllerDeviceStateTest : public WizardControllerFlowTest {
704 protected: 724 protected:
705 WizardControllerEnrollmentFlowTest() { 725 WizardControllerDeviceStateTest()
726 : install_attributes_("", "", "", policy::DEVICE_MODE_NOT_SET) {
Nikita (slow) 2014/10/24 10:31:26 nit: std::string()
Nikita (slow) 2014/10/24 10:31:26 You're setting policy::DEVICE_MODE_NOT_SET here m
bartfab (slow) 2014/10/24 11:13:52 Done.
bartfab (slow) 2014/10/24 11:13:52 This is the value that the device state would have
706 fake_statistics_provider_.SetMachineStatistic("serial_number", "test"); 727 fake_statistics_provider_.SetMachineStatistic("serial_number", "test");
707 fake_statistics_provider_.SetMachineStatistic(system::kActivateDateKey, 728 fake_statistics_provider_.SetMachineStatistic(system::kActivateDateKey,
708 "2000-01"); 729 "2000-01");
709 } 730 }
710 731
711 virtual void SetUpCommandLine(CommandLine* command_line) override { 732 virtual void SetUpCommandLine(CommandLine* command_line) override {
712 WizardControllerFlowTest::SetUpCommandLine(command_line); 733 WizardControllerFlowTest::SetUpCommandLine(command_line);
713 734
714 command_line->AppendSwitchASCII( 735 command_line->AppendSwitchASCII(
715 switches::kEnterpriseEnableForcedReEnrollment, 736 switches::kEnterpriseEnableForcedReEnrollment,
716 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways); 737 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways);
717 command_line->AppendSwitchASCII( 738 command_line->AppendSwitchASCII(
718 switches::kEnterpriseEnrollmentInitialModulus, "1"); 739 switches::kEnterpriseEnrollmentInitialModulus, "1");
719 command_line->AppendSwitchASCII( 740 command_line->AppendSwitchASCII(
720 switches::kEnterpriseEnrollmentModulusLimit, "2"); 741 switches::kEnterpriseEnrollmentModulusLimit, "2");
721 } 742 }
722 743
723 system::ScopedFakeStatisticsProvider fake_statistics_provider_; 744 system::ScopedFakeStatisticsProvider fake_statistics_provider_;
724 745
725 private: 746 private:
726 DISALLOW_COPY_AND_ASSIGN(WizardControllerEnrollmentFlowTest); 747 policy::ScopedStubEnterpriseInstallAttributes install_attributes_;
748
749 DISALLOW_COPY_AND_ASSIGN(WizardControllerDeviceStateTest);
727 }; 750 };
728 751
729 IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest, 752 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
730 ControlFlowForcedReEnrollment) { 753 ControlFlowForcedReEnrollment) {
731 CheckCurrentScreen(WizardController::kNetworkScreenName); 754 CheckCurrentScreen(WizardController::kNetworkScreenName);
732 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); 755 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
733 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); 756 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1);
734 OnExit(ScreenObserver::NETWORK_CONNECTED); 757 OnExit(ScreenObserver::NETWORK_CONNECTED);
735 758
736 CheckCurrentScreen(WizardController::kEulaScreenName); 759 CheckCurrentScreen(WizardController::kEulaScreenName);
737 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); 760 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1);
738 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); 761 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
739 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); 762 EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 796
774 ResetAutoEnrollmentCheckScreen(); 797 ResetAutoEnrollmentCheckScreen();
775 798
776 // Make sure enterprise enrollment page shows up. 799 // Make sure enterprise enrollment page shows up.
777 CheckCurrentScreen(WizardController::kEnrollmentScreenName); 800 CheckCurrentScreen(WizardController::kEnrollmentScreenName);
778 OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_COMPLETED); 801 OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_COMPLETED);
779 802
780 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); 803 EXPECT_TRUE(StartupUtils::IsOobeCompleted());
781 } 804 }
782 805
783 IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest, 806 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
784 ControlFlowNoForcedReEnrollmentOnFirstBoot) { 807 ControlFlowNoForcedReEnrollmentOnFirstBoot) {
785 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); 808 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey);
786 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, 809 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT,
787 LoginDisplayHostImpl::default_host() 810 LoginDisplayHostImpl::default_host()
788 ->GetAutoEnrollmentController() 811 ->GetAutoEnrollmentController()
789 ->state()); 812 ->state());
790 813
791 CheckCurrentScreen(WizardController::kNetworkScreenName); 814 CheckCurrentScreen(WizardController::kNetworkScreenName);
792 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); 815 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
793 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); 816 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1);
794 OnExit(ScreenObserver::NETWORK_CONNECTED); 817 OnExit(ScreenObserver::NETWORK_CONNECTED);
795 818
796 CheckCurrentScreen(WizardController::kEulaScreenName); 819 CheckCurrentScreen(WizardController::kEulaScreenName);
797 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); 820 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1);
798 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); 821 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
799 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); 822 EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
800 OnExit(ScreenObserver::EULA_ACCEPTED); 823 OnExit(ScreenObserver::EULA_ACCEPTED);
801 // Let update screen smooth time process (time = 0ms). 824 // Let update screen smooth time process (time = 0ms).
802 content::RunAllPendingInMessageLoop(); 825 content::RunAllPendingInMessageLoop();
803 826
804 CheckCurrentScreen(WizardController::kUpdateScreenName); 827 CheckCurrentScreen(WizardController::kUpdateScreenName);
805 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); 828 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1);
806 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); 829 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1);
807 OnExit(ScreenObserver::UPDATE_INSTALLED); 830 OnExit(ScreenObserver::UPDATE_INSTALLED);
808 831
809 AutoEnrollmentCheckScreen* screen = 832 AutoEnrollmentCheckScreen* screen =
810 AutoEnrollmentCheckScreen::Get(WizardController::default_controller()); 833 AutoEnrollmentCheckScreen::Get(WizardController::default_controller());
811 EXPECT_EQ(screen, 834 EXPECT_EQ(screen,
812 WizardController::default_controller()->current_screen()); 835 WizardController::default_controller()->current_screen());
836 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
813 screen->Start(); 837 screen->Start();
814 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, 838 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT,
815 LoginDisplayHostImpl::default_host() 839 LoginDisplayHostImpl::default_host()
816 ->GetAutoEnrollmentController() 840 ->GetAutoEnrollmentController()
817 ->state()); 841 ->state());
818 } 842 }
819 843
844 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest,
845 ControlFlowDeviceDisabled) {
846 CheckCurrentScreen(WizardController::kNetworkScreenName);
847 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
848 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1);
849 OnExit(ScreenObserver::NETWORK_CONNECTED);
850
851 CheckCurrentScreen(WizardController::kEulaScreenName);
852 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1);
853 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1);
854 EXPECT_CALL(*mock_update_screen_, Show()).Times(1);
855 OnExit(ScreenObserver::EULA_ACCEPTED);
856 // Let update screen smooth time process (time = 0ms).
Nikita (slow) 2014/10/24 10:31:26 nit: insert empty line before comment.
bartfab (slow) 2014/10/24 11:13:52 Done, here and elsewhere in the file (this line is
857 content::RunAllPendingInMessageLoop();
858
859 CheckCurrentScreen(WizardController::kUpdateScreenName);
860 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1);
861 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1);
862 OnExit(ScreenObserver::UPDATE_INSTALLED);
863
864 AutoEnrollmentCheckScreen* screen =
865 AutoEnrollmentCheckScreen::Get(WizardController::default_controller());
866 EXPECT_EQ(screen,
867 WizardController::default_controller()->current_screen());
868 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1);
869 screen->Start();
870 // Wait for auto-enrollment controller to encounter the connection error.
Nikita (slow) 2014/10/24 10:31:26 nit: insert empty line before comment.
bartfab (slow) 2014/10/24 11:13:52 Done.
871 WaitForAutoEnrollmentState(policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR);
872
873 // The error screen shows up if device state could not be retrieved.
874 EXPECT_FALSE(StartupUtils::IsOobeCompleted());
875 EXPECT_EQ(GetErrorScreen(),
876 WizardController::default_controller()->current_screen());
877 base::DictionaryValue device_state;
878 device_state.SetBoolean(policy::kDeviceStateDisabled, true);
879 device_state.SetString(policy::kDeviceStateDisabledMessage, kDisabledMessage);
880 g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState,
881 device_state);
882 EXPECT_CALL(*device_disabled_screen_actor_, Show(kDisabledMessage)).Times(1);
883 OnExit(ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED);
884
885 ResetAutoEnrollmentCheckScreen();
886
887 // Make sure the device disabled screen is shown.
888 CheckCurrentScreen(WizardController::kDeviceDisabledScreenName);
889
890 EXPECT_FALSE(StartupUtils::IsOobeCompleted());
891 }
892
820 class WizardControllerBrokenLocalStateTest : public WizardControllerTest { 893 class WizardControllerBrokenLocalStateTest : public WizardControllerTest {
821 protected: 894 protected:
822 WizardControllerBrokenLocalStateTest() 895 WizardControllerBrokenLocalStateTest()
823 : fake_session_manager_client_(NULL) { 896 : fake_session_manager_client_(NULL) {
824 } 897 }
825 898
826 virtual ~WizardControllerBrokenLocalStateTest() {} 899 virtual ~WizardControllerBrokenLocalStateTest() {}
827 900
828 virtual void SetUpInProcessBrowserTestFixture() override { 901 virtual void SetUpInProcessBrowserTestFixture() override {
829 WizardControllerTest::SetUpInProcessBrowserTestFixture(); 902 WizardControllerTest::SetUpInProcessBrowserTestFixture();
830 903
831 fake_session_manager_client_ = new FakeSessionManagerClient; 904 fake_session_manager_client_ = new FakeSessionManagerClient;
832 DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient( 905 DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient(
833 scoped_ptr<SessionManagerClient>(fake_session_manager_client_)); 906 scoped_ptr<SessionManagerClient>(fake_session_manager_client_));
834 } 907 }
835 908
836 virtual void SetUpOnMainThread() override { 909 virtual void SetUpOnMainThread() override {
837 base::PrefServiceFactory factory; 910 base::PrefServiceFactory factory;
838 factory.set_user_prefs(make_scoped_refptr(new PrefStoreStub())); 911 factory.set_user_prefs(make_scoped_refptr(new PrefStoreStub()));
839 local_state_ = factory.Create(new PrefRegistrySimple()).Pass(); 912 local_state_ = factory.Create(new PrefRegistrySimple()).Pass();
840 WizardController::set_local_state_for_testing(local_state_.get()); 913 WizardController::set_local_state_for_testing(local_state_.get());
841 914
842 WizardControllerTest::SetUpOnMainThread(); 915 WizardControllerTest::SetUpOnMainThread();
843 916
844 // Make sure that OOBE is run as an "official" build. 917 // Make sure that OOBE is run as an "official" build.
845 WizardController::default_controller()->is_official_build_ = true; 918 WizardController::default_controller()->is_official_build_ = true;
846 } 919 }
847 920
848 virtual void TearDownInProcessBrowserTestFixture() override {
849 WizardControllerTest::TearDownInProcessBrowserTestFixture();
850 }
851
852
853 FakeSessionManagerClient* fake_session_manager_client() const { 921 FakeSessionManagerClient* fake_session_manager_client() const {
854 return fake_session_manager_client_; 922 return fake_session_manager_client_;
855 } 923 }
856 924
857 private: 925 private:
858 scoped_ptr<PrefService> local_state_; 926 scoped_ptr<PrefService> local_state_;
859 FakeSessionManagerClient* fake_session_manager_client_; 927 FakeSessionManagerClient* fake_session_manager_client_;
860 928
861 DISALLOW_COPY_AND_ASSIGN(WizardControllerBrokenLocalStateTest); 929 DISALLOW_COPY_AND_ASSIGN(WizardControllerBrokenLocalStateTest);
862 }; 930 };
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 // TODO(dzhioev): Add test emaulating device with wrong HWID. 1174 // TODO(dzhioev): Add test emaulating device with wrong HWID.
1107 1175
1108 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 1176 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571
1109 1177
1110 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when 1178 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when
1111 // UI and logic is ready. http://crbug.com/127016 1179 // UI and logic is ready. http://crbug.com/127016
1112 1180
1113 // TODO(dzhioev): Add tests for controller/host pairing flow. 1181 // TODO(dzhioev): Add tests for controller/host pairing flow.
1114 // http://crbug.com/375191 1182 // http://crbug.com/375191
1115 1183
1116 COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 23, 1184 COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 24,
1117 add_tests_for_new_control_flow_you_just_introduced); 1185 add_tests_for_new_control_flow_you_just_introduced);
1118 1186
1119 } // namespace chromeos 1187 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698