Home | History | Annotate | Download | only in drive
      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
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/chromeos/drive/drive_integration_service.h"
      6 
      7 #include "chrome/browser/chromeos/drive/dummy_file_system.h"
      8 #include "chrome/browser/drive/dummy_drive_service.h"
      9 #include "chrome/test/base/testing_browser_process.h"
     10 #include "chrome/test/base/testing_profile.h"
     11 #include "chrome/test/base/testing_profile_manager.h"
     12 #include "content/public/test/test_browser_thread_bundle.h"
     13 #include "content/public/test/test_utils.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 namespace drive {
     17 
     18 namespace{
     19 const char kTestProfileName[] = "test-profile";
     20 }
     21 
     22 class DriveIntegrationServiceTest : public testing::Test {
     23  public:
     24   DriveIntegrationServiceTest()
     25       : profile_manager_(TestingBrowserProcess::GetGlobal()) {}
     26 
     27   virtual void SetUp() OVERRIDE {
     28     ASSERT_TRUE(profile_manager_.SetUp());
     29   }
     30 
     31  protected:
     32   content::TestBrowserThreadBundle thread_bundle_;
     33   // DriveIntegrationService depends on DriveNotificationManager which depends
     34   // on InvalidationService. On Chrome OS, the InvalidationServiceFactory
     35   // uses chromeos::ProfileHelper, which needs the ProfileManager or a
     36   // TestProfileManager to be running.
     37   TestingProfileManager profile_manager_;
     38 };
     39 
     40 TEST_F(DriveIntegrationServiceTest, InitializeAndShutdown) {
     41   scoped_ptr<DriveIntegrationService> integration_service(
     42       new DriveIntegrationService(
     43           profile_manager_.CreateTestingProfile(kTestProfileName),
     44           NULL,
     45           new DummyDriveService,
     46           std::string(),
     47           base::FilePath(),
     48           new DummyFileSystem));
     49   integration_service->SetEnabled(true);
     50   content::RunAllBlockingPoolTasksUntilIdle();
     51   integration_service->Shutdown();
     52 }
     53 
     54 TEST_F(DriveIntegrationServiceTest, ServiceInstanceIdentity) {
     55   TestingProfile* user1 = profile_manager_.CreateTestingProfile("user1");
     56 
     57   // Integration Service is created as a profile keyed service.
     58   EXPECT_TRUE(DriveIntegrationServiceFactory::GetForProfile(user1));
     59 
     60   // Shares the same instance with the incognito mode profile.
     61   Profile* user1_incognito = user1->GetOffTheRecordProfile();
     62   EXPECT_EQ(DriveIntegrationServiceFactory::GetForProfile(user1),
     63             DriveIntegrationServiceFactory::GetForProfile(user1_incognito));
     64 
     65   // For different profiles, different services are running.
     66   TestingProfile* user2 = profile_manager_.CreateTestingProfile("user2");
     67   EXPECT_NE(DriveIntegrationServiceFactory::GetForProfile(user1),
     68             DriveIntegrationServiceFactory::GetForProfile(user2));
     69 }
     70 
     71 }  // namespace drive
     72