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

Unified Diff: services/identity/identity_manager_unittest.cc

Issue 2854083002: [Identity Service] Add service tests of IdentityManager (Closed)
Patch Set: Fix for elimination of InterfaceFactory Created 3 years, 8 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
« no previous file with comments | « services/identity/DEPS ('k') | services/identity/unittest_manifest.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/identity/identity_manager_unittest.cc
diff --git a/services/identity/identity_manager_unittest.cc b/services/identity/identity_manager_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..410d668c184b0508d92774ff05121f8080494325
--- /dev/null
+++ b/services/identity/identity_manager_unittest.cc
@@ -0,0 +1,136 @@
+// 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 "base/run_loop.h"
+#include "components/signin/core/account_id/account_id.h"
+#include "components/signin/core/browser/account_tracker_service.h"
+#include "components/signin/core/browser/fake_signin_manager.h"
+#include "components/signin/core/browser/test_signin_client.h"
+#include "components/sync_preferences/testing_pref_service_syncable.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
+#include "services/identity/identity_service.h"
+#include "services/identity/public/interfaces/constants.mojom.h"
+#include "services/identity/public/interfaces/identity_manager.mojom.h"
+#include "services/service_manager/public/cpp/binder_registry.h"
+#include "services/service_manager/public/cpp/service_context.h"
+#include "services/service_manager/public/cpp/service_test.h"
+#include "services/service_manager/public/interfaces/service_factory.mojom.h"
+
+namespace identity {
+namespace {
+
+const std::string kTestGaiaId = "dummyId";
+const std::string kTestEmail = "me@dummy.com";
+
+class ServiceTestClient : public service_manager::test::ServiceTestClient,
+ public service_manager::mojom::ServiceFactory {
+ public:
+ ServiceTestClient(service_manager::test::ServiceTest* test,
+ SigninManagerBase* signin_manager)
+ : service_manager::test::ServiceTestClient(test),
+ signin_manager_(signin_manager) {
+ registry_.AddInterface<service_manager::mojom::ServiceFactory>(
+ base::Bind(&ServiceTestClient::Create, base::Unretained(this)));
+ }
+
+ protected:
+ void OnBindInterface(const service_manager::BindSourceInfo& source_info,
+ const std::string& interface_name,
+ mojo::ScopedMessagePipeHandle interface_pipe) override {
+ registry_.BindInterface(source_info, interface_name,
+ std::move(interface_pipe));
+ }
+
+ void CreateService(service_manager::mojom::ServiceRequest request,
+ const std::string& name) override {
+ if (name == mojom::kServiceName) {
+ identity_service_context_.reset(new service_manager::ServiceContext(
+ base::MakeUnique<IdentityService>(signin_manager_),
+ std::move(request)));
+ }
+ }
+
+ void Create(const service_manager::BindSourceInfo& source_info,
+ service_manager::mojom::ServiceFactoryRequest request) {
+ service_factory_bindings_.AddBinding(this, std::move(request));
+ }
+
+ private:
+ SigninManagerBase* signin_manager_;
+ service_manager::BinderRegistry registry_;
+ mojo::BindingSet<service_manager::mojom::ServiceFactory>
+ service_factory_bindings_;
+ std::unique_ptr<service_manager::ServiceContext> identity_service_context_;
+};
+
+class IdentityManagerTest : public service_manager::test::ServiceTest {
+ public:
+ IdentityManagerTest()
+ : ServiceTest("identity_unittests", false),
+ signin_client_(&pref_service_),
+ signin_manager_(&signin_client_, &account_tracker_) {
+ AccountTrackerService::RegisterPrefs(pref_service_.registry());
+ SigninManagerBase::RegisterProfilePrefs(pref_service_.registry());
+ SigninManagerBase::RegisterPrefs(pref_service_.registry());
+
+ account_tracker_.Initialize(&signin_client_);
+ }
+
+ void OnReceivedPrimaryAccountId(base::Closure quit_closure,
+ const base::Optional<AccountId>& account_id) {
+ primary_account_id_ = account_id;
+ quit_closure.Run();
+ }
+
+ protected:
+ void SetUp() override {
+ ServiceTest::SetUp();
+
+ connector()->BindInterface(mojom::kServiceName, &identity_manager_);
+ }
+
+ // service_manager::test::ServiceTest:
+ std::unique_ptr<service_manager::Service> CreateService() override {
+ return base::MakeUnique<ServiceTestClient>(this, &signin_manager_);
+ }
+
+ mojom::IdentityManagerPtr identity_manager_;
+ base::Optional<AccountId> primary_account_id_;
+
+ SigninManagerBase* signin_manager() { return &signin_manager_; }
+
+ private:
+ sync_preferences::TestingPrefServiceSyncable pref_service_;
+ AccountTrackerService account_tracker_;
+ TestSigninClient signin_client_;
+ FakeSigninManagerBase signin_manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(IdentityManagerTest);
+};
+
+// Check that the primary account ID is null if not signed in.
+TEST_F(IdentityManagerTest, NotSignedIn) {
+ base::RunLoop run_loop;
+ identity_manager_->GetPrimaryAccountId(
+ base::Bind(&IdentityManagerTest::OnReceivedPrimaryAccountId,
+ base::Unretained(this), run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_FALSE(primary_account_id_);
+}
+
+// Check that the primary account ID has expected values if signed in.
+TEST_F(IdentityManagerTest, SignedIn) {
+ signin_manager()->SetAuthenticatedAccountInfo(kTestGaiaId, kTestEmail);
+ base::RunLoop run_loop;
+ identity_manager_->GetPrimaryAccountId(
+ base::Bind(&IdentityManagerTest::OnReceivedPrimaryAccountId,
+ base::Unretained(this), run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_TRUE(primary_account_id_);
+ EXPECT_EQ(kTestGaiaId, primary_account_id_->GetGaiaId());
+ EXPECT_EQ(kTestEmail, primary_account_id_->GetUserEmail());
+}
+
+} // namespace
+} // namespace identity
« no previous file with comments | « services/identity/DEPS ('k') | services/identity/unittest_manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698