OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "sql/connection.h" | 9 #include "sql/connection.h" |
10 #include "sql/meta_table.h" | 10 #include "sql/meta_table.h" |
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
682 // will need to be updated. | 682 // will need to be updated. |
683 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 683 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); |
684 | 684 |
685 base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); | 685 base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); |
686 int mode; | 686 int mode; |
687 | 687 |
688 // Given a permissive umask, the database is created with permissive | 688 // Given a permissive umask, the database is created with permissive |
689 // read access for the database and journal. | 689 // read access for the database and journal. |
690 ASSERT_TRUE(base::PathExists(db_path())); | 690 ASSERT_TRUE(base::PathExists(db_path())); |
691 ASSERT_TRUE(base::PathExists(journal)); | 691 ASSERT_TRUE(base::PathExists(journal)); |
692 mode = file_util::FILE_PERMISSION_MASK; | 692 mode = base::FILE_PERMISSION_MASK; |
693 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 693 EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); |
694 ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 694 ASSERT_NE((mode & base::FILE_PERMISSION_USER_MASK), mode); |
695 mode = file_util::FILE_PERMISSION_MASK; | 695 mode = base::FILE_PERMISSION_MASK; |
696 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 696 EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); |
697 ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 697 ASSERT_NE((mode & base::FILE_PERMISSION_USER_MASK), mode); |
698 | 698 |
699 // Re-open with restricted permissions and verify that the modes | 699 // Re-open with restricted permissions and verify that the modes |
700 // changed for both the main database and the journal. | 700 // changed for both the main database and the journal. |
701 db().Close(); | 701 db().Close(); |
702 db().set_restrict_to_user(); | 702 db().set_restrict_to_user(); |
703 ASSERT_TRUE(db().Open(db_path())); | 703 ASSERT_TRUE(db().Open(db_path())); |
704 ASSERT_TRUE(base::PathExists(db_path())); | 704 ASSERT_TRUE(base::PathExists(db_path())); |
705 ASSERT_TRUE(base::PathExists(journal)); | 705 ASSERT_TRUE(base::PathExists(journal)); |
706 mode = file_util::FILE_PERMISSION_MASK; | 706 mode = base::FILE_PERMISSION_MASK; |
707 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 707 EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); |
708 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 708 ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); |
709 mode = file_util::FILE_PERMISSION_MASK; | 709 mode = base::FILE_PERMISSION_MASK; |
710 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 710 EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); |
711 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 711 ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); |
712 | 712 |
713 // Delete and re-create the database, the restriction should still apply. | 713 // Delete and re-create the database, the restriction should still apply. |
714 db().Close(); | 714 db().Close(); |
715 sql::Connection::Delete(db_path()); | 715 sql::Connection::Delete(db_path()); |
716 ASSERT_TRUE(db().Open(db_path())); | 716 ASSERT_TRUE(db().Open(db_path())); |
717 ASSERT_TRUE(base::PathExists(db_path())); | 717 ASSERT_TRUE(base::PathExists(db_path())); |
718 ASSERT_FALSE(base::PathExists(journal)); | 718 ASSERT_FALSE(base::PathExists(journal)); |
719 mode = file_util::FILE_PERMISSION_MASK; | 719 mode = base::FILE_PERMISSION_MASK; |
720 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 720 EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); |
721 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 721 ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); |
722 | 722 |
723 // Verify that journal creation inherits the restriction. | 723 // Verify that journal creation inherits the restriction. |
724 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 724 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); |
725 ASSERT_TRUE(base::PathExists(journal)); | 725 ASSERT_TRUE(base::PathExists(journal)); |
726 mode = file_util::FILE_PERMISSION_MASK; | 726 mode = base::FILE_PERMISSION_MASK; |
727 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 727 EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); |
728 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 728 ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); |
729 } | 729 } |
730 #endif // defined(OS_POSIX) | 730 #endif // defined(OS_POSIX) |
731 | 731 |
732 // Test that errors start happening once Poison() is called. | 732 // Test that errors start happening once Poison() is called. |
733 TEST_F(SQLConnectionTest, Poison) { | 733 TEST_F(SQLConnectionTest, Poison) { |
734 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 734 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); |
735 | 735 |
736 // Before the Poison() call, things generally work. | 736 // Before the Poison() call, things generally work. |
737 EXPECT_TRUE(db().IsSQLValid("INSERT INTO x VALUES ('x')")); | 737 EXPECT_TRUE(db().IsSQLValid("INSERT INTO x VALUES ('x')")); |
738 EXPECT_TRUE(db().Execute("INSERT INTO x VALUES ('x')")); | 738 EXPECT_TRUE(db().Execute("INSERT INTO x VALUES ('x')")); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 } | 816 } |
817 | 817 |
818 // Detach succeeds outside of a transaction. | 818 // Detach succeeds outside of a transaction. |
819 db().RollbackTransaction(); | 819 db().RollbackTransaction(); |
820 EXPECT_TRUE(db().DetachDatabase(kAttachmentPoint)); | 820 EXPECT_TRUE(db().DetachDatabase(kAttachmentPoint)); |
821 | 821 |
822 EXPECT_FALSE(db().IsSQLValid("SELECT count(*) from other.bar")); | 822 EXPECT_FALSE(db().IsSQLValid("SELECT count(*) from other.bar")); |
823 } | 823 } |
824 | 824 |
825 } // namespace | 825 } // namespace |
OLD | NEW |