| // Copyright 2017 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 "chromeos/dbus/fake_auth_policy_client.h" |
| |
| #include "base/bind.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/run_loop.h" |
| #include "components/signin/core/account_id/account_id.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace chromeos { |
| namespace { |
| |
| const char kCorrectMachineName[] = "machine_name"; |
| const char kCorrectUserName[] = "user@realm.com"; |
| const char kObjectGUID[] = "user-object-guid"; |
| |
| } // namespace |
| |
| class FakeAuthPolicyClientTest : public ::testing::Test { |
| public: |
| FakeAuthPolicyClientTest() {} |
| |
| protected: |
| FakeAuthPolicyClient* authpolicy_client() { return &client_; } |
| |
| private: |
| FakeAuthPolicyClient client_; |
| base::MessageLoop loop_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeAuthPolicyClientTest); |
| }; |
| |
| // Tests parsing machine name. |
| TEST_F(FakeAuthPolicyClientTest, JoinAdDomain_ParseMachineName) { |
| authpolicy_client()->set_started(true); |
| authpolicy_client()->JoinAdDomain("correct_length1", kCorrectUserName, |
| /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_NONE, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| "", kCorrectUserName, /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_INVALID_MACHINE_NAME, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| "too_long_machine_name", kCorrectUserName, /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_MACHINE_NAME_TOO_LONG, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| "invalid:name", kCorrectUserName, /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_INVALID_MACHINE_NAME, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| ">nvalidname", kCorrectUserName, /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_INVALID_MACHINE_NAME, error); |
| })); |
| |
| base::RunLoop().RunUntilIdle(); |
| } |
| |
| // Tests parsing user name. |
| TEST_F(FakeAuthPolicyClientTest, JoinAdDomain_ParseUPN) { |
| authpolicy_client()->set_started(true); |
| authpolicy_client()->JoinAdDomain(kCorrectMachineName, "user@realm.com", |
| /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_NONE, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, "user", /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_PARSE_UPN_FAILED, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, "", /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_PARSE_UPN_FAILED, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, "user@", /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_PARSE_UPN_FAILED, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, "@realm", /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_PARSE_UPN_FAILED, error); |
| })); |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, "user@realm@com", |
| /* password_fd */ -1, base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_PARSE_UPN_FAILED, error); |
| })); |
| |
| base::RunLoop().RunUntilIdle(); |
| } |
| |
| // Test AuthenticateUser. |
| TEST_F(FakeAuthPolicyClientTest, AuthenticateUser_ByObjectGUID) { |
| authpolicy_client()->set_started(true); |
| // Check that objectGUID do not change. |
| authpolicy_client()->AuthenticateUser( |
| kCorrectUserName, kObjectGUID, /* password_fd */ -1, |
| base::Bind( |
| [](authpolicy::ErrorType error, |
| const authpolicy::ActiveDirectoryAccountInfo& account_info) { |
| EXPECT_EQ(authpolicy::ERROR_NONE, error); |
| EXPECT_EQ(kObjectGUID, account_info.account_id()); |
| })); |
| } |
| |
| // Tests calls to not started authpolicyd fails. |
| TEST_F(FakeAuthPolicyClientTest, NotStartedAuthPolicyService) { |
| authpolicy_client()->JoinAdDomain( |
| kCorrectMachineName, kCorrectUserName, |
| /* password_fd */ -1, base::Bind([](authpolicy::ErrorType error) { |
| EXPECT_EQ(authpolicy::ERROR_DBUS_FAILURE, error); |
| })); |
| authpolicy_client()->AuthenticateUser( |
| kCorrectUserName, std::string() /* object_guid */, /* password_fd */ -1, |
| base::Bind([](authpolicy::ErrorType error, |
| const authpolicy::ActiveDirectoryAccountInfo&) { |
| EXPECT_EQ(authpolicy::ERROR_DBUS_FAILURE, error); |
| })); |
| authpolicy_client()->RefreshDevicePolicy( |
| base::Bind([](bool success) { EXPECT_FALSE(success); })); |
| authpolicy_client()->RefreshUserPolicy( |
| AccountId::FromUserEmail(kCorrectUserName), |
| base::Bind([](bool success) { EXPECT_FALSE(success); })); |
| |
| base::RunLoop().RunUntilIdle(); |
| } |
| |
| } // namespace chromeos |