Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Unified Diff: webkit/fileapi/sandbox_mount_point_provider_unittest.cc

Issue 12193007: Deprecate MountPointProvider::IsAccessAllowed in favor of GetPermissionPolicy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/fileapi/sandbox_mount_point_provider_unittest.cc
diff --git a/webkit/fileapi/sandbox_mount_point_provider_unittest.cc b/webkit/fileapi/sandbox_mount_point_provider_unittest.cc
index abdd2feb5e9d28f3407e7ad443b3ee8c3cf7c2a4..6f6d56e76ce0ba448ba1609d10159ba528bc855b 100644
--- a/webkit/fileapi/sandbox_mount_point_provider_unittest.cc
+++ b/webkit/fileapi/sandbox_mount_point_provider_unittest.cc
@@ -15,11 +15,22 @@
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "webkit/fileapi/file_system_mount_point_provider.h"
+#include "webkit/fileapi/file_system_url.h"
#include "webkit/fileapi/file_system_util.h"
#include "webkit/fileapi/mock_file_system_options.h"
namespace fileapi {
+namespace {
+
+FileSystemURL CreateFileSystemURL(const char* path) {
+ const GURL kOrigin("http://foo/");
+ return FileSystemURL::CreateForTest(
+ kOrigin, kFileSystemTypeTemporary, FilePath::FromUTF8Unsafe(path));
+}
+
+} // namespace
+
class SandboxMountPointProviderOriginEnumeratorTest : public testing::Test {
public:
virtual void SetUp() {
@@ -104,4 +115,76 @@ TEST_F(SandboxMountPointProviderOriginEnumeratorTest, EnumerateOrigins) {
EXPECT_EQ(persistent_size, persistent_actual_size);
}
+TEST(SandboxMountPointProviderTest, AccessPermissions) {
+ MessageLoop message_loop_;
+ SandboxMountPointProvider provider(
+ NULL, base::MessageLoopProxy::current(), FilePath(),
+ CreateAllowFileAccessOptions());
+
+ // Any access should be allowed in sandbox directory.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
+ kReadFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
+ kWriteFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL("foo"),
+ kCreateFilePermissions));
+
+ // Access to a path with parent references ('..') should be disallowed.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
+ provider.GetPermissionPolicy(CreateFileSystemURL("a/../b"),
+ kReadFilePermissions));
+
+ // Access from non-allowed scheme should be disallowed.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
+ provider.GetPermissionPolicy(
+ FileSystemURL::CreateForTest(
+ GURL("unknown://bar"), kFileSystemTypeTemporary,
+ FilePath::FromUTF8Unsafe("foo")),
+ kReadFilePermissions));
+
+ // Access for non-sandbox type should be disallowed.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
+ provider.GetPermissionPolicy(
+ FileSystemURL::CreateForTest(
+ GURL("http://foo/"), kFileSystemTypeTest,
+ FilePath::FromUTF8Unsafe("foo")),
+ kReadFilePermissions));
+
+ // Create access with restricted name should be disallowed.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
+ provider.GetPermissionPolicy(CreateFileSystemURL(".."),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_DENY,
+ provider.GetPermissionPolicy(CreateFileSystemURL("."),
+ kCreateFilePermissions));
+
+ // Similar but safe cases.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL(" ."),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL(". "),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL(" .."),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL(".. "),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL("b."),
+ kCreateFilePermissions));
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL(".b"),
+ kCreateFilePermissions));
+
+ // A path that looks like a drive letter.
+ EXPECT_EQ(FILE_PERMISSION_ALWAYS_ALLOW,
+ provider.GetPermissionPolicy(CreateFileSystemURL("c:"),
+ kCreateFilePermissions));
ericu 2013/02/13 01:45:56 Missing: test for modifying the root directory.
kinuko 2013/02/13 03:36:30 Done.
+}
+
} // namespace fileapi

Powered by Google App Engine
This is Rietveld 408576698