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

Side by Side Diff: third_party/gsutil/boto/tests/integration/gs/test_storage_uri.py

Issue 12317103: Added gsutil to depot tools (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: added readme Created 7 years, 9 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
(Empty)
1 # -*- coding: utf-8 -*-
2 # Copyright (c) 2013, Google, Inc.
3 # All rights reserved.
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish, dis-
9 # tribute, sublicense, and/or sell copies of the Software, and to permit
10 # persons to whom the Software is furnished to do so, subject to the fol-
11 # lowing conditions:
12 #
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
18 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22 # IN THE SOFTWARE.
23
24 """Unit tests for StorageUri interface."""
25
26 import re
27 import StringIO
28
29 from boto import storage_uri
30 from boto.gs.acl import SupportedPermissions as perms
31 from tests.integration.gs.testcase import GSTestCase
32
33
34 class GSStorageUriTest(GSTestCase):
35
36 def testHasVersion(self):
37 uri = storage_uri("gs://bucket/obj")
38 self.assertFalse(uri.has_version())
39 uri.version_id = "versionid"
40 self.assertTrue(uri.has_version())
41
42 uri = storage_uri("gs://bucket/obj")
43 # Generation triggers versioning.
44 uri.generation = 12345
45 self.assertTrue(uri.has_version())
46 uri.generation = None
47 self.assertFalse(uri.has_version())
48
49 # Zero-generation counts as a version.
50 uri = storage_uri("gs://bucket/obj")
51 uri.generation = 0
52 self.assertTrue(uri.has_version())
53
54 def testCloneReplaceKey(self):
55 b = self._MakeBucket()
56 k = b.new_key("obj")
57 k.set_contents_from_string("stringdata")
58
59 orig_uri = storage_uri("gs://%s/" % b.name)
60
61 uri = orig_uri.clone_replace_key(k)
62 self.assertTrue(uri.has_version())
63 self.assertRegexpMatches(str(uri.generation), r"[0-9]+")
64
65 def testSetAclXml(self):
66 """Ensures that calls to the set_xml_acl functions succeed."""
67 b = self._MakeBucket()
68 k = b.new_key("obj")
69 k.set_contents_from_string("stringdata")
70 bucket_uri = storage_uri("gs://%s/" % b.name)
71
72 # Get a valid ACL for an object.
73 bucket_uri.object_name = "obj"
74 bucket_acl = bucket_uri.get_acl()
75 bucket_uri.object_name = None
76
77 # Add a permission to the ACL.
78 all_users_read_permission = ("<Entry><Scope type='AllUsers'/>"
79 "<Permission>READ</Permission></Entry>")
80 acl_string = re.sub(r"</Entries>",
81 all_users_read_permission + "</Entries>",
82 bucket_acl.to_xml())
83
84 # Test-generated owner IDs are not currently valid for buckets
85 acl_no_owner_string = re.sub(r"<Owner>.*</Owner>", "", acl_string)
86
87 # Set ACL on an object.
88 bucket_uri.set_xml_acl(acl_string, "obj")
89 # Set ACL on a bucket.
90 bucket_uri.set_xml_acl(acl_no_owner_string)
91 # Set the default ACL for a bucket.
92 bucket_uri.set_def_xml_acl(acl_no_owner_string)
93
94 # Verify all the ACLs were successfully applied.
95 new_obj_acl_string = k.get_acl().to_xml()
96 new_bucket_acl_string = bucket_uri.get_acl().to_xml()
97 new_bucket_def_acl_string = bucket_uri.get_def_acl().to_xml()
98 self.assertRegexpMatches(new_obj_acl_string, r"AllUsers")
99 self.assertRegexpMatches(new_bucket_acl_string, r"AllUsers")
100 self.assertRegexpMatches(new_bucket_def_acl_string, r"AllUsers")
101
102 def testPropertiesUpdated(self):
103 b = self._MakeBucket()
104 bucket_uri = storage_uri("gs://%s" % b.name)
105 key_uri = bucket_uri.clone_replace_name("obj")
106 key_uri.set_contents_from_string("data1")
107
108 self.assertRegexpMatches(str(key_uri.generation), r"[0-9]+")
109 k = b.get_key("obj")
110 self.assertEqual(k.generation, key_uri.generation)
111 self.assertEquals(k.get_contents_as_string(), "data1")
112
113 key_uri.set_contents_from_stream(StringIO.StringIO("data2"))
114 self.assertRegexpMatches(str(key_uri.generation), r"[0-9]+")
115 self.assertGreater(key_uri.generation, k.generation)
116 k = b.get_key("obj")
117 self.assertEqual(k.generation, key_uri.generation)
118 self.assertEquals(k.get_contents_as_string(), "data2")
119
120 key_uri.set_contents_from_file(StringIO.StringIO("data3"))
121 self.assertRegexpMatches(str(key_uri.generation), r"[0-9]+")
122 self.assertGreater(key_uri.generation, k.generation)
123 k = b.get_key("obj")
124 self.assertEqual(k.generation, key_uri.generation)
125 self.assertEquals(k.get_contents_as_string(), "data3")
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698