- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / fileapi / file_access_permissions_unittest.cc
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