summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-10-24 06:38:22 +0000
committerGerrit Code Review <review@openstack.org>2014-10-24 06:38:22 +0000
commit6a4b673e8828f3fc80c86ef8bfa7f3ab5a8f720f (patch)
tree56a56e5e02d086bd99ca3c7198dd0c1006c55554 /openstackclient
parent7153ff41fbdbb6f4cb0c0e291c801669af66fcef (diff)
parentbcf4b3caece9edc6a04be3ce59697301e48ad34a (diff)
downloadpython-openstackclient-6a4b673e8828f3fc80c86ef8bfa7f3ab5a8f720f.tar.gz
Merge "Update use of open() in object API"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/api/object_store_v1.py8
-rw-r--r--openstackclient/tests/api/test_object_store_v1.py21
2 files changed, 24 insertions, 5 deletions
diff --git a/openstackclient/api/object_store_v1.py b/openstackclient/api/object_store_v1.py
index 57db9063..c52eeb3a 100644
--- a/openstackclient/api/object_store_v1.py
+++ b/openstackclient/api/object_store_v1.py
@@ -13,6 +13,7 @@
"""Object Store v1 API Library"""
+import io
import os
import six
@@ -187,7 +188,12 @@ class APIv1(api.BaseAPI):
return {}
full_url = "%s/%s" % (container, object)
- response = self.create(full_url, method='PUT', data=open(object))
+ with io.open(object, 'rb') as f:
+ response = self.create(
+ full_url,
+ method='PUT',
+ data=f,
+ )
url_parts = urlparse(self.endpoint)
data = {
'account': url_parts.path.split('/')[-1],
diff --git a/openstackclient/tests/api/test_object_store_v1.py b/openstackclient/tests/api/test_object_store_v1.py
index 5a376a45..b18a003d 100644
--- a/openstackclient/tests/api/test_object_store_v1.py
+++ b/openstackclient/tests/api/test_object_store_v1.py
@@ -13,6 +13,8 @@
"""Object Store v1 API Library Tests"""
+import mock
+
from requests_mock.contrib import fixture
from keystoneclient import session
@@ -175,30 +177,41 @@ class TestObject(TestObjectAPIv1):
def setUp(self):
super(TestObject, self).setUp()
- def test_object_create(self):
+ @mock.patch('openstackclient.api.object_store_v1.io.open')
+ def base_object_create(self, file_contents, mock_open):
+ mock_open.read.return_value = file_contents
+
headers = {
'etag': 'youreit',
'x-trans-id': '1qaz2wsx',
}
+ # TODO(dtroyer): When requests_mock gains the ability to
+ # match against request.body add this check
+ # https://review.openstack.org/127316
self.requests_mock.register_uri(
'PUT',
- FAKE_URL + '/qaz/requirements.txt',
+ FAKE_URL + '/qaz/counter.txt',
headers=headers,
+ # body=file_contents,
status_code=201,
)
ret = self.api.object_create(
container='qaz',
- object='requirements.txt',
+ object='counter.txt',
)
data = {
'account': FAKE_ACCOUNT,
'container': 'qaz',
- 'object': 'requirements.txt',
+ 'object': 'counter.txt',
'etag': 'youreit',
'x-trans-id': '1qaz2wsx',
}
self.assertEqual(data, ret)
+ def test_object_create(self):
+ self.base_object_create('111\n222\n333\n')
+ self.base_object_create(bytes([0x31, 0x00, 0x0d, 0x0a, 0x7f, 0xff]))
+
def test_object_delete(self):
self.requests_mock.register_uri(
'DELETE',