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/chromeos/fileapi/file_access_permissions.h" 6 7 #include "testing/gtest/include/gtest/gtest.h" 8 9 namespace chromeos { 10 11 TEST(FileAccessPermissionsTest, FileAccessChecks) { 12 base::FilePath good_dir(FILE_PATH_LITERAL("/root/dir")); 13 base::FilePath bad_dir(FILE_PATH_LITERAL("/root")); 14 base::FilePath good_file(FILE_PATH_LITERAL("/root/dir/good_file.txt")); 15 base::FilePath bad_file(FILE_PATH_LITERAL("/root/dir/bad_file.txt")); 16 17 std::string extension1("ddammdhioacbehjngdmkjcjbnfginlla"); 18 std::string extension2("jkhdjkhkhsdkfhsdkhrterwmtermeter"); 19 20 FileAccessPermissions permissions; 21 // By default extension have no access to any local file. 22 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_dir)); 23 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_file)); 24 EXPECT_FALSE(permissions.HasAccessPermission(extension1, bad_file)); 25 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_dir)); 26 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_file)); 27 EXPECT_FALSE(permissions.HasAccessPermission(extension2, bad_file)); 28 29 // After granting file access to the handler extension for a given file, it 30 // can only access that file an nothing else. 31 permissions.GrantAccessPermission(extension1, good_file); 32 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_dir)); 33 EXPECT_TRUE(permissions.HasAccessPermission(extension1, good_file)); 34 EXPECT_FALSE(permissions.HasAccessPermission(extension1, bad_file)); 35 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_dir)); 36 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_file)); 37 EXPECT_FALSE(permissions.HasAccessPermission(extension2, bad_file)); 38 39 40 // After granting file access to the handler extension for a given directory, 41 // it can access that directory and all files within it. 42 permissions.GrantAccessPermission(extension2, good_dir); 43 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_dir)); 44 EXPECT_TRUE(permissions.HasAccessPermission(extension1, good_file)); 45 EXPECT_FALSE(permissions.HasAccessPermission(extension1, bad_file)); 46 EXPECT_TRUE(permissions.HasAccessPermission(extension2, good_dir)); 47 EXPECT_TRUE(permissions.HasAccessPermission(extension2, good_file)); 48 EXPECT_TRUE(permissions.HasAccessPermission(extension2, bad_file)); 49 50 // After revoking rights for extensions, they should not be able to access 51 // any file system element anymore. 52 permissions.RevokePermissions(extension1); 53 permissions.RevokePermissions(extension2); 54 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_dir)); 55 EXPECT_FALSE(permissions.HasAccessPermission(extension1, good_file)); 56 EXPECT_FALSE(permissions.HasAccessPermission(extension1, bad_file)); 57 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_dir)); 58 EXPECT_FALSE(permissions.HasAccessPermission(extension2, good_file)); 59 EXPECT_FALSE(permissions.HasAccessPermission(extension2, bad_file)); 60 } 61 62 } // namespace chromeos 63