blob: 822d2292c6aeadc3f26b9a97a61d7147e479641e [file] [log] [blame] [edit]
// Copyright (c) 2012 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 "chrome/browser/chromeos/gdata/mock_drive_service.h"
#include "base/bind.h"
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/location.h"
#include "base/json/json_file_value_serializer.h"
#include "base/message_loop_proxy.h"
#include "base/path_service.h"
#include "base/platform_file.h"
#include "chrome/browser/chromeos/gdata/drive_test_util.h"
#include "chrome/common/chrome_paths.h"
#include "testing/gmock/include/gmock/gmock.h"
using ::testing::_;
using ::testing::Invoke;
using ::testing::Return;
namespace gdata {
MockDriveService::MockDriveService() {
ON_CALL(*this, GetProgressStatusList())
.WillByDefault(Return(OperationProgressStatusList()));
ON_CALL(*this, Authenticate(_))
.WillByDefault(Invoke(this, &MockDriveService::AuthenticateStub));
ON_CALL(*this, GetDocuments(_, _, _, _, _))
.WillByDefault(Invoke(this, &MockDriveService::GetDocumentsStub));
ON_CALL(*this, GetAccountMetadata(_))
.WillByDefault(Invoke(this,
&MockDriveService::GetAccountMetadataStub));
ON_CALL(*this, DeleteDocument(_, _))
.WillByDefault(Invoke(this, &MockDriveService::DeleteDocumentStub));
ON_CALL(*this, DownloadDocument(_, _, _, _, _))
.WillByDefault(Invoke(this, &MockDriveService::DownloadDocumentStub));
ON_CALL(*this, CopyDocument(_, _, _))
.WillByDefault(Invoke(this, &MockDriveService::CopyDocumentStub));
ON_CALL(*this, RenameResource(_, _, _))
.WillByDefault(Invoke(this, &MockDriveService::RenameResourceStub));
ON_CALL(*this, AddResourceToDirectory(_, _, _))
.WillByDefault(
Invoke(this, &MockDriveService::AddResourceToDirectoryStub));
ON_CALL(*this, RemoveResourceFromDirectory(_, _, _, _))
.WillByDefault(
Invoke(this, &MockDriveService::RemoveResourceFromDirectoryStub));
ON_CALL(*this, CreateDirectory(_, _, _))
.WillByDefault(Invoke(this, &MockDriveService::CreateDirectoryStub));
ON_CALL(*this, DownloadFile(_, _, _, _, _))
.WillByDefault(Invoke(this, &MockDriveService::DownloadFileStub));
// Fill in the default values for mock feeds.
account_metadata_ =
test_util::LoadJSONFile("gdata/account_metadata.json");
feed_data_ = test_util::LoadJSONFile("gdata/basic_feed.json");
directory_data_ =
test_util::LoadJSONFile("gdata/new_folder_entry.json");
}
MockDriveService::~MockDriveService() {}
void MockDriveService::set_search_result(
const std::string& search_result_feed) {
search_result_ = test_util::LoadJSONFile(search_result_feed);
}
void MockDriveService::AuthenticateStub(
const AuthStatusCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, "my_auth_token"));
}
void MockDriveService::GetDocumentsStub(
const GURL& feed_url,
int64 start_changestamp,
const std::string& search_string,
const std::string& directory_resource_id,
const GetDataCallback& callback) {
if (search_string.empty()) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, base::Passed(&feed_data_)));
} else {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, base::Passed(&search_result_)));
}
}
void MockDriveService::GetAccountMetadataStub(
const GetDataCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, base::Passed(&account_metadata_)));
}
void MockDriveService::DeleteDocumentStub(
const GURL& document_url,
const EntryActionCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, document_url));
}
void MockDriveService::DownloadDocumentStub(
const FilePath& virtual_path,
const FilePath& local_tmp_path,
const GURL& content_url,
DocumentExportFormat format,
const DownloadActionCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, content_url, local_tmp_path));
}
void MockDriveService::CopyDocumentStub(
const std::string& resource_id,
const FilePath::StringType& new_name,
const GetDataCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, base::Passed(&document_data_)));
}
void MockDriveService::RenameResourceStub(
const GURL& resource_url,
const FilePath::StringType& new_name,
const EntryActionCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, resource_url));
}
void MockDriveService::AddResourceToDirectoryStub(
const GURL& parent_content_url,
const GURL& resource_url,
const EntryActionCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, resource_url));
}
void MockDriveService::RemoveResourceFromDirectoryStub(
const GURL& parent_content_url,
const GURL& resource_url,
const std::string& resource_id,
const EntryActionCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, resource_url));
}
void MockDriveService::CreateDirectoryStub(
const GURL& parent_content_url,
const FilePath::StringType& directory_name,
const GetDataCallback& callback) {
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(callback, HTTP_SUCCESS, base::Passed(&directory_data_)));
}
void MockDriveService::DownloadFileStub(
const FilePath& virtual_path,
const FilePath& local_tmp_path,
const GURL& content_url,
const DownloadActionCallback& download_action_callback,
const GetContentCallback& get_content_callback) {
GDataErrorCode error = HTTP_SUCCESS;
if (file_data_.get()) {
int file_data_size = static_cast<int>(file_data_->size());
ASSERT_EQ(file_data_size,
file_util::WriteFile(local_tmp_path, file_data_->data(),
file_data_size));
}
base::MessageLoopProxy::current()->PostTask(
FROM_HERE,
base::Bind(download_action_callback, error, content_url, local_tmp_path));
}
} // namespace gdata