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

Side by Side Diff: chrome/common/extensions/permissions/permission_set_unittest.cc

Issue 23506021: Require confirmation for writable directory access. (Closed) Base URL: http://git.chromium.org/chromium/src.git@directory-permission-hack
Patch Set: Created 7 years, 3 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 unified diff | Download patch
OLDNEW
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/command_line.h" 5 #include "base/command_line.h"
6 #include "base/json/json_file_value_serializer.h" 6 #include "base/json/json_file_value_serializer.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/common/chrome_paths.h" 10 #include "chrome/common/chrome_paths.h"
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 if (skip.count(i->id())) { 752 if (skip.count(i->id())) {
753 EXPECT_EQ(PermissionMessage::kNone, permission_info->message_id()) 753 EXPECT_EQ(PermissionMessage::kNone, permission_info->message_id())
754 << "unexpected message_id for " << permission_info->name(); 754 << "unexpected message_id for " << permission_info->name();
755 } else { 755 } else {
756 EXPECT_NE(PermissionMessage::kNone, permission_info->message_id()) 756 EXPECT_NE(PermissionMessage::kNone, permission_info->message_id())
757 << "missing message_id for " << permission_info->name(); 757 << "missing message_id for " << permission_info->name();
758 } 758 }
759 } 759 }
760 } 760 }
761 761
762 TEST(PermissionsTest, FileSystemWritePermissionMessages) { 762 TEST(PermissionsTest, FileSystemPermissionMessages) {
763 APIPermissionSet api_permissions;
764 api_permissions.insert(APIPermission::kFileSystemWrite);
765 scoped_refptr<PermissionSet> permissions(
766 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
767 PermissionMessages messages =
768 permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
769 ASSERT_EQ(1u, messages.size());
770 EXPECT_EQ(PermissionMessage::kFileSystemWrite, messages[0].id());
771 }
772
773 TEST(PermissionsTest, FileSystemDirectoryPermissionMessages) {
774 APIPermissionSet api_permissions;
775 api_permissions.insert(APIPermission::kFileSystemDirectory);
776 scoped_refptr<PermissionSet> permissions(
777 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
778 PermissionMessages messages =
779 permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
780 ASSERT_EQ(1u, messages.size());
781 EXPECT_EQ(PermissionMessage::kFileSystemDirectory, messages[0].id());
782 }
783
784 TEST(PermissionsTest, MergedFileSystemPermissionMessages) {
785 APIPermissionSet api_permissions; 763 APIPermissionSet api_permissions;
786 api_permissions.insert(APIPermission::kFileSystemWrite); 764 api_permissions.insert(APIPermission::kFileSystemWrite);
787 api_permissions.insert(APIPermission::kFileSystemDirectory); 765 api_permissions.insert(APIPermission::kFileSystemDirectory);
788 scoped_refptr<PermissionSet> permissions( 766 scoped_refptr<PermissionSet> permissions(
789 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet())); 767 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
790 PermissionMessages messages = 768 PermissionMessages messages =
769 permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
770 ASSERT_EQ(2u, messages.size());
771 std::sort(messages.begin(), messages.end());
772 std::set<PermissionMessage::ID> ids;
773 for (PermissionMessages::const_iterator it = messages.begin();
774 it != messages.end(); ++it) {
775 ids.insert(it->id());
776 }
777 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory));
778 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite));
779 }
780
781 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
782 APIPermissionSet api_permissions;
783 api_permissions.insert(APIPermission::kFileSystemWrite);
784 api_permissions.insert(APIPermission::kFileSystemDirectory);
785 api_permissions.insert(APIPermission::kFileSystemWriteDirectory);
786 scoped_refptr<PermissionSet> permissions(
787 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
788 PermissionMessages messages =
791 permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP); 789 permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
792 ASSERT_EQ(1u, messages.size()); 790 ASSERT_EQ(1u, messages.size());
793 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id()); 791 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id());
794 } 792 }
795 793
796 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { 794 TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
797 APIPermissionSet write_api_permissions; 795 APIPermissionSet write_api_permissions;
798 write_api_permissions.insert(APIPermission::kFileSystemWrite); 796 write_api_permissions.insert(APIPermission::kFileSystemWrite);
799 scoped_refptr<PermissionSet> write_permissions(new PermissionSet( 797 scoped_refptr<PermissionSet> write_permissions(new PermissionSet(
800 write_api_permissions, URLPatternSet(), URLPatternSet())); 798 write_api_permissions, URLPatternSet(), URLPatternSet()));
801 799
802 APIPermissionSet directory_api_permissions; 800 APIPermissionSet directory_api_permissions;
803 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); 801 directory_api_permissions.insert(APIPermission::kFileSystemDirectory);
804 scoped_refptr<PermissionSet> directory_permissions(new PermissionSet( 802 scoped_refptr<PermissionSet> directory_permissions(new PermissionSet(
805 directory_api_permissions, URLPatternSet(), URLPatternSet())); 803 directory_api_permissions, URLPatternSet(), URLPatternSet()));
806 804
807 APIPermissionSet both_api_permissions; 805 APIPermissionSet write_directory_api_permissions;
808 both_api_permissions.insert(APIPermission::kFileSystemWrite); 806 write_directory_api_permissions.insert(
809 both_api_permissions.insert(APIPermission::kFileSystemDirectory); 807 APIPermission::kFileSystemWriteDirectory);
810 scoped_refptr<PermissionSet> both_permissions(new PermissionSet( 808 scoped_refptr<PermissionSet> write_directory_permissions(new PermissionSet(
811 both_api_permissions, URLPatternSet(), URLPatternSet())); 809 write_directory_api_permissions, URLPatternSet(), URLPatternSet()));
812 810
813 EXPECT_FALSE(both_permissions->HasLessPrivilegesThan( 811 EXPECT_FALSE(write_directory_permissions->HasLessPrivilegesThan(
814 write_permissions, Manifest::TYPE_PLATFORM_APP)); 812 write_permissions, Manifest::TYPE_PLATFORM_APP));
815 EXPECT_FALSE(both_permissions->HasLessPrivilegesThan( 813 EXPECT_FALSE(write_directory_permissions->HasLessPrivilegesThan(
816 directory_permissions, Manifest::TYPE_PLATFORM_APP)); 814 directory_permissions, Manifest::TYPE_PLATFORM_APP));
817 EXPECT_TRUE(write_permissions->HasLessPrivilegesThan( 815 EXPECT_TRUE(write_permissions->HasLessPrivilegesThan(
818 directory_permissions, Manifest::TYPE_PLATFORM_APP)); 816 directory_permissions, Manifest::TYPE_PLATFORM_APP));
819 EXPECT_TRUE(write_permissions->HasLessPrivilegesThan( 817 EXPECT_TRUE(write_permissions->HasLessPrivilegesThan(
820 both_permissions, Manifest::TYPE_PLATFORM_APP)); 818 write_directory_permissions, Manifest::TYPE_PLATFORM_APP));
821 EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan( 819 EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan(
822 write_permissions, Manifest::TYPE_PLATFORM_APP)); 820 write_permissions, Manifest::TYPE_PLATFORM_APP));
823 EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan( 821 EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan(
824 both_permissions, Manifest::TYPE_PLATFORM_APP)); 822 write_directory_permissions, Manifest::TYPE_PLATFORM_APP));
825 } 823 }
826 824
827 TEST(PermissionsTest, GetWarningMessages_ManyHosts) { 825 TEST(PermissionsTest, GetWarningMessages_ManyHosts) {
828 scoped_refptr<Extension> extension; 826 scoped_refptr<Extension> extension;
829 827
830 extension = LoadManifest("permissions", "many-hosts.json"); 828 extension = LoadManifest("permissions", "many-hosts.json");
831 std::vector<string16> warnings = 829 std::vector<string16> warnings =
832 PermissionsData::GetPermissionMessageStrings(extension.get()); 830 PermissionsData::GetPermissionMessageStrings(extension.get());
833 ASSERT_EQ(1u, warnings.size()); 831 ASSERT_EQ(1u, warnings.size());
834 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", 832 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com",
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1435 1433
1436 scoped_refptr<Extension> extension_dwr( 1434 scoped_refptr<Extension> extension_dwr(
1437 LoadManifest("permissions", "web_request_all_host_permissions.json")); 1435 LoadManifest("permissions", "web_request_all_host_permissions.json"));
1438 scoped_refptr<const PermissionSet> permissions_dwr( 1436 scoped_refptr<const PermissionSet> permissions_dwr(
1439 extension_dwr->GetActivePermissions()); 1437 extension_dwr->GetActivePermissions());
1440 1438
1441 EXPECT_FALSE(permissions->HasLessPrivilegesThan(permissions_dwr.get(), 1439 EXPECT_FALSE(permissions->HasLessPrivilegesThan(permissions_dwr.get(),
1442 extension->GetType())); 1440 extension->GetType()));
1443 } 1441 }
1444 } // namespace extensions 1442 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/permissions/permission_set.cc ('k') | chrome/common/extensions/permissions/permissions_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698