drive_backend_test_util.cc revision 58537e28ecd584eab876aee8be7156509866d23a
1e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// Copyright 2013 The Chromium Authors. All rights reserved.
2e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// Use of this source code is governed by a BSD-style license that can be
3e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver// found in the LICENSE file.
4e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
5e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.h"
6e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
7e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include <set>
8e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
9e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/google_apis/drive_api_parser.h"
10e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
11e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
12e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver#include "testing/gtest/include/gtest/gtest.h"
13e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
14e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace sync_file_system {
15e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace drive_backend {
16e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvernamespace test_util {
17e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
18e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentServiceMetadata(const ServiceMetadata& left,
19e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                                     const ServiceMetadata& right) {
20e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.largest_change_id(), right.largest_change_id());
21e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.sync_root_tracker_id(), right.sync_root_tracker_id());
22e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.next_tracker_id(), right.next_tracker_id());
23e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver}
24e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
25e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentDetails(const FileDetails& left,
26e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                             const FileDetails& right) {
27e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  std::set<std::string> parents;
28e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  for (int i = 0; i < left.parent_folder_ids_size(); ++i)
29e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    EXPECT_TRUE(parents.insert(left.parent_folder_ids(i)).second);
30e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
31e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  for (int i = 0; i < right.parent_folder_ids_size(); ++i)
32e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver    EXPECT_EQ(1u, parents.erase(left.parent_folder_ids(i)));
33e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_TRUE(parents.empty());
34e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
35e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.title(), right.title());
36e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.file_kind(), right.file_kind());
37e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.md5(), right.md5());
38e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.etag(), right.etag());
39e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.creation_time(), right.creation_time());
40e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.modification_time(), right.modification_time());
41e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.deleted(), right.deleted());
42e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.change_id(), right.change_id());
43e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver}
44e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
45e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentMetadata(const FileMetadata& left,
46e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                              const FileMetadata& right) {
47e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.file_id(), right.file_id());
48e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  ExpectEquivalentDetails(left.details(), right.details());
49e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver}
50e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver
51e80efa670f1027fdf3882a298216a460199e38d0Ben Gruvervoid ExpectEquivalentTrackers(const FileTracker& left,
52e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver                              const FileTracker& right) {
53e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.tracker_id(), right.tracker_id());
54e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.parent_tracker_id(), right.parent_tracker_id());
55e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.file_id(), right.file_id());
56e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.app_id(), right.app_id());
57e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.tracker_kind(), right.tracker_kind());
58e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  ExpectEquivalentDetails(left.synced_details(), right.synced_details());
59e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.dirty(), right.dirty());
60e80efa670f1027fdf3882a298216a460199e38d0Ben Gruver  EXPECT_EQ(left.active(), right.active());
61  EXPECT_EQ(left.needs_folder_listing(), right.needs_folder_listing());
62}
63
64void ExpectCompatibleResourceAndMetadata(
65    const google_apis::FileResource& resource,
66    const FileMetadata& metadata) {
67  EXPECT_EQ(resource.file_id(), metadata.file_id());
68  const FileDetails& details = metadata.details();
69  EXPECT_EQ(resource.title(), details.title());
70
71  google_apis::DriveEntryKind resource_kind = resource.GetKind();
72  switch (details.file_kind()) {
73    case FILE_KIND_UNSUPPORTED:
74      EXPECT_NE(google_apis::ENTRY_KIND_FILE, resource_kind);
75      EXPECT_NE(google_apis::ENTRY_KIND_FOLDER, resource_kind);
76      break;
77    case FILE_KIND_FILE:
78      EXPECT_EQ(google_apis::ENTRY_KIND_FILE, resource_kind);
79      break;
80    case FILE_KIND_FOLDER:
81      EXPECT_EQ(google_apis::ENTRY_KIND_FOLDER, resource_kind);
82      break;
83  }
84
85  EXPECT_EQ(resource.md5_checksum(), details.md5());
86  EXPECT_EQ(resource.etag(), details.etag());
87  EXPECT_EQ(resource.created_date(),
88            base::Time::FromInternalValue(details.creation_time()));
89  EXPECT_EQ(resource.modified_date(),
90            base::Time::FromInternalValue(details.modification_time()));
91  EXPECT_EQ(resource.labels().is_trashed(), details.deleted());
92}
93
94void ExpectCompatibleMetadataAndTracker(const FileMetadata& metadata,
95                                        const FileTracker& tracker) {
96  EXPECT_EQ(metadata.file_id(), tracker.file_id());
97  if (!tracker.dirty())
98    ExpectEquivalentDetails(metadata.details(), tracker.synced_details());
99}
100
101void SyncStatusResultCallback(SyncStatusCode* status_out,
102                              SyncStatusCode status) {
103  EXPECT_EQ(SYNC_STATUS_UNKNOWN, *status_out);
104  *status_out = status;
105}
106
107void DatabaseCreateResultCallback(SyncStatusCode* status_out,
108                                  scoped_ptr<MetadataDatabase>* database_out,
109                                  SyncStatusCode status,
110                                  scoped_ptr<MetadataDatabase> database) {
111  EXPECT_EQ(SYNC_STATUS_UNKNOWN, *status_out);
112  *status_out = status;
113  *database_out = database.Pass();
114}
115
116void ResourceEntryResultCallback(
117    google_apis::GDataErrorCode* error_out,
118    scoped_ptr<google_apis::ResourceEntry>* entry_out,
119    google_apis::GDataErrorCode error,
120    scoped_ptr<google_apis::ResourceEntry> entry) {
121  ASSERT_TRUE(error_out);
122  ASSERT_TRUE(entry_out);
123  EXPECT_EQ(google_apis::GDATA_OTHER_ERROR, *error_out);
124  *error_out = error;
125  *entry_out = entry.Pass();
126}
127
128}  // namespace test_util
129}  // namespace drive_backend
130}  // namespace sync_file_system
131