def test_as_context_mgr_w_error(self): from google.cloud.storage.batch import _FutureDict from google.cloud.storage.client import Client URL = 'http://example.com/api' http = _HTTP() connection = _Connection(http=http) project = 'PROJECT' credentials = object() client = Client(project=project, credentials=credentials) client._base_connection = connection self.assertEqual(list(client._batch_stack), []) target1 = _MockObject() target2 = _MockObject() target3 = _MockObject() try: with self._make_one(client) as batch: self.assertEqual(list(client._batch_stack), [batch]) batch._make_request('POST', URL, { 'foo': 1, 'bar': 2 }, target_object=target1) batch._make_request('PATCH', URL, {'bar': 3}, target_object=target2) batch._make_request('DELETE', URL, target_object=target3) raise ValueError() except ValueError: pass self.assertEqual(list(client._batch_stack), []) self.assertEqual(len(http._requests), 0) self.assertEqual(len(batch._requests), 3) self.assertEqual(batch._target_objects, [target1, target2, target3]) # Since the context manager fails, finish will not get called and # the _properties will still be futures. self.assertIsInstance(target1._properties, _FutureDict) self.assertIsInstance(target2._properties, _FutureDict) self.assertIsInstance(target3._properties, _FutureDict)
def test_create_hit(self): from google.cloud.storage.client import Client PROJECT = "PROJECT" BUCKET_NAME = "bucket-name" DATA = {"name": BUCKET_NAME} connection = _make_connection(DATA) client = Client(project=PROJECT) client._base_connection = connection bucket = client.create_bucket(BUCKET_NAME) connection.api_request.assert_called_once_with( method="POST", path="/b", query_params={"project": PROJECT}, data=DATA, _target_object=bucket, timeout=self._get_default_timeout(), )
def test_create_w_predefined_acl_valid(self): from google.cloud.storage.client import Client PROJECT = "PROJECT" BUCKET_NAME = "bucket-name" DATA = {"name": BUCKET_NAME} client = Client(project=PROJECT) connection = _make_connection(DATA) client._base_connection = connection bucket = client.create_bucket(BUCKET_NAME, predefined_acl="publicRead") connection.api_request.assert_called_once_with( method="POST", path="/b", query_params={ "project": PROJECT, "predefinedAcl": "publicRead" }, data=DATA, _target_object=bucket, )
def test_as_context_mgr_w_error(self): from google.cloud.storage.batch import _FutureDict from google.cloud.storage.client import Client URL = 'http://example.com/api' http = _HTTP() connection = _Connection(http=http) project = 'PROJECT' credentials = _make_credentials() client = Client(project=project, credentials=credentials) client._base_connection = connection self.assertEqual(list(client._batch_stack), []) target1 = _MockObject() target2 = _MockObject() target3 = _MockObject() try: with self._make_one(client) as batch: self.assertEqual(list(client._batch_stack), [batch]) batch._make_request('POST', URL, {'foo': 1, 'bar': 2}, target_object=target1) batch._make_request('PATCH', URL, {'bar': 3}, target_object=target2) batch._make_request('DELETE', URL, target_object=target3) raise ValueError() except ValueError: pass self.assertEqual(list(client._batch_stack), []) self.assertEqual(len(http._requests), 0) self.assertEqual(len(batch._requests), 3) self.assertEqual(batch._target_objects, [target1, target2, target3]) # Since the context manager fails, finish will not get called and # the _properties will still be futures. self.assertIsInstance(target1._properties, _FutureDict) self.assertIsInstance(target2._properties, _FutureDict) self.assertIsInstance(target3._properties, _FutureDict)
def test_as_context_mgr_w_error(self): from google.cloud.storage.batch import _FutureDict from google.cloud.storage.client import Client URL = "http://example.com/api" http = _make_requests_session([]) connection = _Connection(http=http) project = "PROJECT" credentials = _make_credentials() client = Client(project=project, credentials=credentials) client._base_connection = connection self.assertEqual(list(client._batch_stack), []) target1 = _MockObject() target2 = _MockObject() target3 = _MockObject() try: with self._make_one(client) as batch: self.assertEqual(list(client._batch_stack), [batch]) batch._make_request( "POST", URL, {"foo": 1, "bar": 2}, target_object=target1 ) batch._make_request("PATCH", URL, {"bar": 3}, target_object=target2) batch._make_request("DELETE", URL, target_object=target3) raise ValueError() except ValueError: pass http.request.assert_not_called() self.assertEqual(list(client._batch_stack), []) self.assertEqual(len(batch._requests), 3) self.assertEqual(batch._target_objects, [target1, target2, target3]) # Since the context manager fails, finish will not get called and # the _properties will still be futures. self.assertIsInstance(target1._properties, _FutureDict) self.assertIsInstance(target2._properties, _FutureDict) self.assertIsInstance(target3._properties, _FutureDict)
def test_create_w_explicit_location(self): from google.cloud.storage.client import Client PROJECT = "PROJECT" BUCKET_NAME = "bucket-name" LOCATION = "us-central1" DATA = {"location": LOCATION, "name": BUCKET_NAME} connection = _make_connection( DATA, "{'location': 'us-central1', 'name': 'bucket-name'}") client = Client(project=PROJECT) client._base_connection = connection bucket = client.create_bucket(BUCKET_NAME, location=LOCATION) connection.api_request.assert_called_once_with( method="POST", path="/b", data=DATA, _target_object=bucket, query_params={"project": "PROJECT"}, ) self.assertEqual(bucket.location, LOCATION)