190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/file_system/touch_operation.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/files/file_path.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/drive.pb.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/file_errors.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/chromeos/drive/resource_metadata.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/test/test_utils.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/test_util.h" 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace drive { 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace file_system { 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)typedef OperationTestBase TouchOperationTest; 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST_F(TouchOperationTest, TouchFile) { 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TouchOperation operation(blocking_task_runner(), 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) delegate(), 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) metadata()); 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::FilePath kTestPath(FILE_PATH_LITERAL("drive/root/File 1.txt")); 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::Time::Exploded kLastAccessTime = { 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2012, 7, 0, 19, 15, 59, 13, 123 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::Time::Exploded kLastModifiedTime = { 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2013, 7, 0, 19, 15, 59, 13, 123 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FileError error = FILE_ERROR_FAILED; 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) operation.TouchFile( 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) kTestPath, 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Time::FromUTCExploded(kLastAccessTime), 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Time::FromUTCExploded(kLastModifiedTime), 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) google_apis::test_util::CreateCopyResultCallback(&error)); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::RunAllBlockingPoolTasksUntilIdle(); 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(FILE_ERROR_OK, error); 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceEntry entry; 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kTestPath, &entry)); 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(base::Time::FromUTCExploded(kLastAccessTime), 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Time::FromInternalValue(entry.file_info().last_accessed())); 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(base::Time::FromUTCExploded(kLastModifiedTime), 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Time::FromInternalValue(entry.file_info().last_modified())); 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state()); 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(1U, delegate()->get_changed_files().size()); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_TRUE(delegate()->get_changed_files().count(kTestPath)); 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(1U, delegate()->updated_local_ids().size()); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_TRUE(delegate()->updated_local_ids().count(entry.local_id())); 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace file_system 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace drive 61