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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc

Issue 23949002: [SyncFS] Implement SyncEngineInitializer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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/sync_file_system/drive_backend/sync_engine_initializer. h"
6
7 #include "base/bind.h"
8 #include "base/files/scoped_temp_dir.h"
9 #include "base/message_loop/message_loop.h"
10 #include "chrome/browser/drive/drive_api_util.h"
11 #include "chrome/browser/drive/fake_drive_service.h"
12 #include "chrome/browser/google_apis/drive_api_parser.h"
13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 namespace sync_file_system {
19 namespace drive_backend {
20
21 namespace {
22
23 void SyncStatusResultCallback(SyncStatusCode* status_out,
24 SyncStatusCode status) {
25 ASSERT_TRUE(status_out);
26 EXPECT_EQ(SYNC_STATUS_UNKNOWN, *status_out);
27 *status_out = status;
28 }
29
30 void ResourceEntryResultCallback(
31 google_apis::GDataErrorCode* error_out,
32 scoped_ptr<google_apis::ResourceEntry>* entry_out,
33 google_apis::GDataErrorCode error,
34 scoped_ptr<google_apis::ResourceEntry> entry) {
35 ASSERT_TRUE(error_out);
36 ASSERT_TRUE(entry_out);
37 EXPECT_EQ(google_apis::GDATA_OTHER_ERROR, *error_out);
38 *error_out = error;
39 *entry_out = entry.Pass();
40 }
41
42 } // namespace
43
44 class SyncEngineInitializerTest : public testing::Test {
45 public:
46 struct TrackedFile {
47 scoped_ptr<google_apis::FileResource> resource;
48 FileMetadata metadata;
49 FileTracker tracker;
50 };
51
52 SyncEngineInitializerTest() {}
53 virtual ~SyncEngineInitializerTest() {}
54
55 virtual void SetUp() OVERRIDE {
56 ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
57 ASSERT_TRUE(fake_drive_service_.LoadAccountMetadataForWapi(
58 "sync_file_system/account_metadata.json"));
59 ASSERT_TRUE(fake_drive_service_.LoadResourceListForWapi(
60 "gdata/empty_feed.json"));
61 }
62
63 virtual void TearDown() OVERRIDE {
64 }
65
66 base::FilePath database_path() {
67 return database_dir_.path();
68 }
69
70 SyncStatusCode RunInitializer() {
71 initializer_.reset(new SyncEngineInitializer(
72 base::MessageLoopProxy::current(),
73 &fake_drive_service_,
74 database_path()));
75 SyncStatusCode status = SYNC_STATUS_UNKNOWN;
76
77 initializer_->Run(base::Bind(&SyncStatusResultCallback, &status));
78 base::MessageLoop::current()->RunUntilIdle();
79
80 metadata_database_ = initializer_->PassMetadataDatabase();
81 return status;
82 }
83
84 google_apis::GDataErrorCode FillTrackedFileByTrackerID(
85 int64 tracker_id,
86 scoped_ptr<TrackedFile>* file_out) {
87 scoped_ptr<TrackedFile> file(new TrackedFile);
88 if (!metadata_database_->FindTrackerByTrackerID(
89 tracker_id, &file->tracker))
90 return google_apis::HTTP_NOT_FOUND;
91 if (!metadata_database_->FindFileByFileID(
92 file->tracker.file_id(), &file->metadata))
93 return google_apis::HTTP_NOT_FOUND;
94
95 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR;
96 scoped_ptr<google_apis::ResourceEntry> entry;
97 fake_drive_service_.GetResourceEntry(
98 file->metadata.file_id(),
99 base::Bind(&ResourceEntryResultCallback,
100 &error, &entry));
101 base::MessageLoop::current()->RunUntilIdle();
102
103 if (entry) {
104 file->resource =
105 drive::util::ConvertResourceEntryToFileResource(*entry);
106 }
107
108 if (file_out)
109 *file_out = file.Pass();
110 return error;
111 }
112
113 google_apis::GDataErrorCode GetSyncRoot(
114 scoped_ptr<TrackedFile>* sync_root_out) {
115 return FillTrackedFileByTrackerID(
116 metadata_database_->GetSyncRootTrackerID(),
117 sync_root_out);
118 }
119
120 private:
121 content::TestBrowserThreadBundle browser_threads_;
122 base::ScopedTempDir database_dir_;
123 drive::FakeDriveService fake_drive_service_;
124
125 scoped_ptr<SyncEngineInitializer> initializer_;
126 scoped_ptr<MetadataDatabase> metadata_database_;
127
128 DISALLOW_COPY_AND_ASSIGN(SyncEngineInitializerTest);
129 };
130
131 TEST_F(SyncEngineInitializerTest, EmptyDatabase_NoRemoteSyncRoot) {
132 EXPECT_EQ(SYNC_STATUS_OK, RunInitializer());
133
134 scoped_ptr<TrackedFile> sync_root;
135 ASSERT_EQ(google_apis::HTTP_SUCCESS, GetSyncRoot(&sync_root));
136 EXPECT_EQ("Chrome Syncable FileSystem", sync_root->resource->title());
137 }
138
139 } // namespace drive_backend
140 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.cc ('k') | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698