Index: chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc |
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc |
index e8c8daa2b9792ec42197d96132a98887b9192c2c..f7b3501ed5e2e428be02e97f927d45edc48d5922 100644 |
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc |
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_unittest.cc |
@@ -22,6 +22,8 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
using testing::_; |
+using testing::A; |
+using testing::NotNull; |
emaxx
2017/08/03 18:31:49
nit: Are these "A" and "NotNull" actually used any
|
using testing::AnyNumber; |
using testing::Invoke; |
@@ -29,12 +31,57 @@ namespace chromeos { |
class EnrollmentScreenUnitTest : public testing::Test { |
public: |
- EnrollmentScreenUnitTest() : fake_controller_("") { |
- enrollment_config_.mode = policy::EnrollmentConfig::MODE_ATTESTATION_FORCED; |
- enrollment_config_.auth_mechanism = |
- policy::EnrollmentConfig::AUTH_MECHANISM_ATTESTATION; |
+ EnrollmentScreenUnitTest() : fake_controller_("") {} |
+ |
+ // Creates the EnrollmentScreen and sets required parameters. |
+ virtual void SetUpEnrollmentScreen() { |
+ enrollment_screen_.reset( |
+ new EnrollmentScreen(&mock_delegate_, &mock_view_)); |
+ enrollment_screen_->SetParameters(enrollment_config_, &fake_controller_); |
} |
+ // Fast forwards time by the specified amount. |
+ void FastForwardTime(base::TimeDelta time) { |
+ runner_.task_runner()->FastForwardBy(time); |
+ } |
+ |
+ MockBaseScreenDelegate* GetBaseScreenDelegate() { return &mock_delegate_; } |
+ MockEnrollmentScreenView* GetMockScreenView() { return &mock_view_; } |
+ |
+ // testing::Test: |
+ void SetUp() override { |
+ // Initialize the thread manager. |
+ DBusThreadManager::Initialize(); |
+ } |
+ |
+ void TearDown() override { |
+ TestingBrowserProcess::GetGlobal()->SetShuttingDown(true); |
+ DBusThreadManager::Shutdown(); |
+ } |
+ |
+ protected: |
+ // A pointer to the EnrollmentScreen. |
+ std::unique_ptr<EnrollmentScreen> enrollment_screen_; |
+ |
+ policy::EnrollmentConfig enrollment_config_; |
+ |
+ private: |
+ // Replace main thread's task runner with a mock for duration of test. |
+ base::MessageLoop loop_; |
+ base::ScopedMockTimeMessageLoopTaskRunner runner_; |
+ |
+ // Objects required by the EnrollmentScreen that can be re-used. |
+ pairing_chromeos::FakeControllerPairingController fake_controller_; |
+ MockBaseScreenDelegate mock_delegate_; |
+ MockEnrollmentScreenView mock_view_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(EnrollmentScreenUnitTest); |
+}; |
+ |
+class ZeroTouchEnrollmentScreenUnitTest : public EnrollmentScreenUnitTest { |
+ public: |
+ ZeroTouchEnrollmentScreenUnitTest() {} |
+ |
// Closure passed to EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock |
// which creates the EnterpriseEnrollmentHelperMock object that will |
// eventually be tied to the EnrollmentScreen. It also sets up the |
@@ -74,58 +121,31 @@ class EnrollmentScreenUnitTest : public testing::Test { |
return mock; |
} |
- // Creates the EnrollmentScreen and sets required parameters. |
- void SetUpEnrollmentScreen() { |
- enrollment_screen_.reset( |
- new EnrollmentScreen(&mock_delegate_, &mock_view_)); |
- enrollment_screen_->SetParameters(enrollment_config_, &fake_controller_); |
- } |
- |
- // Fast forwards time by the specified amount. |
- void FastForwardTime(base::TimeDelta time) { |
- runner_.task_runner()->FastForwardBy(time); |
+ void SetUpEnrollmentScreen() override { |
+ enrollment_config_.mode = policy::EnrollmentConfig::MODE_ATTESTATION_FORCED; |
+ enrollment_config_.auth_mechanism = |
+ policy::EnrollmentConfig::AUTH_MECHANISM_ATTESTATION; |
+ EnrollmentScreenUnitTest::SetUpEnrollmentScreen(); |
} |
- MockBaseScreenDelegate* GetBaseScreenDelegate() { return &mock_delegate_; } |
- |
// testing::Test: |
void SetUp() override { |
- // Initialize the thread manager. |
- DBusThreadManager::Initialize(); |
+ EnrollmentScreenUnitTest::SetUp(); |
// Configure the browser to use Hands-Off Enrollment. |
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
switches::kEnterpriseEnableZeroTouchEnrollment, "hands-off"); |
} |
- void TearDown() override { |
- TestingBrowserProcess::GetGlobal()->SetShuttingDown(true); |
- DBusThreadManager::Shutdown(); |
- } |
- |
- protected: |
- // A pointer to the EnrollmentScreen. |
- std::unique_ptr<EnrollmentScreen> enrollment_screen_; |
- |
private: |
- // Replace main thread's task runner with a mock for duration of test. |
- base::MessageLoop loop_; |
- base::ScopedMockTimeMessageLoopTaskRunner runner_; |
- |
- // Objects required by the EnrollmentScreen that can be re-used. |
- policy::EnrollmentConfig enrollment_config_; |
- pairing_chromeos::FakeControllerPairingController fake_controller_; |
- MockBaseScreenDelegate mock_delegate_; |
- MockEnrollmentScreenView mock_view_; |
- |
- DISALLOW_COPY_AND_ASSIGN(EnrollmentScreenUnitTest); |
+ DISALLOW_COPY_AND_ASSIGN(ZeroTouchEnrollmentScreenUnitTest); |
}; |
-TEST_F(EnrollmentScreenUnitTest, Retries) { |
+TEST_F(ZeroTouchEnrollmentScreenUnitTest, Retries) { |
// Define behavior of EnterpriseEnrollmentHelperMock to always fail |
// enrollment. |
EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock( |
- &EnrollmentScreenUnitTest::MockEnrollmentHelperCreator<false>); |
+ &ZeroTouchEnrollmentScreenUnitTest::MockEnrollmentHelperCreator<false>); |
SetUpEnrollmentScreen(); |
@@ -142,11 +162,11 @@ TEST_F(EnrollmentScreenUnitTest, Retries) { |
EXPECT_EQ(enrollment_screen_->num_retries_, 4); |
} |
-TEST_F(EnrollmentScreenUnitTest, DoesNotRetryOnTopOfUser) { |
+TEST_F(ZeroTouchEnrollmentScreenUnitTest, DoesNotRetryOnTopOfUser) { |
// Define behavior of EnterpriseEnrollmentHelperMock to always fail |
// enrollment. |
EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock( |
- &EnrollmentScreenUnitTest::MockEnrollmentHelperCreator<false>); |
+ &ZeroTouchEnrollmentScreenUnitTest::MockEnrollmentHelperCreator<false>); |
SetUpEnrollmentScreen(); |
@@ -170,10 +190,10 @@ TEST_F(EnrollmentScreenUnitTest, DoesNotRetryOnTopOfUser) { |
EXPECT_EQ(enrollment_screen_->num_retries_, 4); |
} |
-TEST_F(EnrollmentScreenUnitTest, DoesNotRetryAfterSuccess) { |
+TEST_F(ZeroTouchEnrollmentScreenUnitTest, DoesNotRetryAfterSuccess) { |
// Define behavior of EnterpriseEnrollmentHelperMock to successfully enroll. |
EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock( |
- &EnrollmentScreenUnitTest::MockEnrollmentHelperCreator<true>); |
+ &ZeroTouchEnrollmentScreenUnitTest::MockEnrollmentHelperCreator<true>); |
SetUpEnrollmentScreen(); |
@@ -187,10 +207,10 @@ TEST_F(EnrollmentScreenUnitTest, DoesNotRetryAfterSuccess) { |
EXPECT_EQ(enrollment_screen_->num_retries_, 0); |
} |
-TEST_F(EnrollmentScreenUnitTest, FinishesEnrollmentFlow) { |
+TEST_F(ZeroTouchEnrollmentScreenUnitTest, FinishesEnrollmentFlow) { |
// Define behavior of EnterpriseEnrollmentHelperMock to successfully enroll. |
EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock( |
- &EnrollmentScreenUnitTest::MockEnrollmentHelperCreator<true>); |
+ &ZeroTouchEnrollmentScreenUnitTest::MockEnrollmentHelperCreator<true>); |
SetUpEnrollmentScreen(); |
@@ -205,4 +225,61 @@ TEST_F(EnrollmentScreenUnitTest, FinishesEnrollmentFlow) { |
// Start zero-touch enrollment. |
enrollment_screen_->Show(); |
} |
+ |
+class MultiLicenseEnrollmentScreenUnitTest : public EnrollmentScreenUnitTest { |
+ public: |
+ MultiLicenseEnrollmentScreenUnitTest() {} |
+ |
+ void SetUpEnrollmentScreen() override { |
+ enrollment_config_.mode = policy::EnrollmentConfig::MODE_MANUAL; |
+ enrollment_config_.auth_mechanism = |
+ policy::EnrollmentConfig::AUTH_MECHANISM_INTERACTIVE; |
+ EnrollmentScreenUnitTest::SetUpEnrollmentScreen(); |
+ } |
+ |
+ static EnterpriseEnrollmentHelper* MockEnrollmentHelperCreator( |
+ EnterpriseEnrollmentHelper::EnrollmentStatusConsumer* status_consumer, |
+ const policy::EnrollmentConfig& enrollment_config, |
+ const std::string& enrolling_user_domain) { |
+ EnterpriseEnrollmentHelperMock* mock = |
+ new EnterpriseEnrollmentHelperMock(status_consumer); |
+ EXPECT_CALL(*mock, EnrollUsingAuthCode(_, _)) |
+ .Times(AnyNumber()) |
+ .WillRepeatedly(Invoke([mock](const std::string&, bool) { |
+ EnrollmentLicenseMap licenses; |
+ static_cast<EnrollmentScreen*>(mock->status_consumer()) |
+ ->OnMultipleLicensesAvailable(licenses); |
+ })); |
+ EXPECT_CALL(*mock, UseLicenseType(::policy::LicenseType::ANNUAL)).Times(1); |
+ |
+ return mock; |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(MultiLicenseEnrollmentScreenUnitTest); |
+}; |
+ |
+TEST_F(MultiLicenseEnrollmentScreenUnitTest, TestLicenseSelection) { |
+ EnterpriseEnrollmentHelper::SetupEnrollmentHelperMock( |
+ &MultiLicenseEnrollmentScreenUnitTest::MockEnrollmentHelperCreator); |
+ |
+ EXPECT_CALL(*GetMockScreenView(), SetParameters(_, _)).Times(1); |
+ |
+ SetUpEnrollmentScreen(); |
+ |
+ EXPECT_CALL(*GetMockScreenView(), Show()).Times(1); |
emaxx
2017/08/03 18:31:49
Isn't it also necessary to do VerifyAndClearExpect
Denis Kuznetsov (DE-MUC)
2017/08/03 20:08:17
Other tests in this file do not do that.
Anyway,
|
+ EXPECT_CALL(*GetMockScreenView(), ShowSigninScreen()).Times(1); |
+ |
+ // Start zero-touch enrollment. |
emaxx
2017/08/03 18:31:49
nit: Is the comment accurate? This same patchset i
Denis Kuznetsov (DE-MUC)
2017/08/03 20:08:16
Done.
|
+ enrollment_screen_->Show(); |
+ |
+ // Once at login, once after picking license type. |
+ |
+ EXPECT_CALL(*GetMockScreenView(), ShowEnrollmentSpinnerScreen()).Times(2); |
+ EXPECT_CALL(*GetMockScreenView(), ShowLicenseTypeSelectionScreen(_)).Times(1); |
+ |
+ enrollment_screen_->OnLoginDone("user@domain.com", "oauth"); |
+ enrollment_screen_->OnLicenseTypeSelected("annual"); |
+} |
+ |
} // namespace chromeos |