def test_create_error(self): api = self.api resp = FakeAPIResponse() resp.status_code = 300 api._request = Mock(return_value=(resp, None)) self.assertRaises(exceptions.ClientException, api.create, self.account, self.name)
def test_from_response_http_status(self): fake_resp = FakeAPIResponse() fake_resp.status_code = 404 exc = exceptions.from_response(fake_resp, None) self.assertTrue(isinstance(exc, exceptions.NotFound)) fake_resp.status_code = 409 exc = exceptions.from_response(fake_resp, None) self.assertTrue(isinstance(exc, exceptions.Conflict))
def test_from_response(self): fake_resp = FakeAPIResponse() fake_resp.status_code = 500 exc = exceptions.from_response(fake_resp, None) self.assertTrue(isinstance(exc, exceptions.ClientException)) self.assertEqual(exc.http_status, fake_resp.status_code) self.assertEqual(exc.message, "n/a") self.assertTrue("HTTP 500" in str(exc))
def test_container_create_exist(self): api = self.api resp = FakeAPIResponse() resp.status_code = 201 api._request = Mock(return_value=(resp, None)) name = random_str(32) result = api.container_create(self.account, name) self.assertEqual(result, False)
def test_from_response_with_body(self): fake_resp = FakeAPIResponse() fake_resp.status_code = 500 body = {"status": 300, "message": "Fake error"} exc = exceptions.from_response(fake_resp, body) self.assertTrue(isinstance(exc, exceptions.ClientException)) self.assertEqual(exc.http_status, fake_resp.status_code) self.assertEqual(exc.status, 300) self.assertEqual(exc.message, "Fake error") self.assertTrue("HTTP 500" in str(exc)) self.assertTrue("STATUS 300" in str(exc))
def test_create_already_exists(self): api = self.api resp = FakeAPIResponse() resp.status_code = 200 api._request = Mock(return_value=(resp, None)) api.create(self.account, self.name) uri = "%s/reference/create" % self.uri_base params = {'acct': self.account, 'ref': self.name} api._request.assert_called_once_with( 'POST', uri, params=params, headers=None)
def test_create(self): api = self.api resp = FakeAPIResponse() resp.status_code = 201 api._request = Mock(return_value=(resp, None)) api.create(self.account, self.name) uri = "%s/reference/create" % self.uri_base params = {'acct': self.account, 'ref': self.name} data = json.dumps({'properties': {}}) api._request.assert_called_with( 'POST', uri, params=params, data=data, headers=None)
def test_container_delete(self): api = self.api resp = FakeAPIResponse() resp.status_code = 204 api._request = Mock(return_value=(resp, None)) api.directory.unlink = Mock(return_value=None) name = random_str(32) api.container_delete(self.account, name, headers=self.headers) uri = "%s/container/destroy" % self.uri_base params = {'acct': self.account, 'ref': name} api._request.assert_called_once_with( 'POST', uri, params=params, headers=self.headers)
def test_container_show(self): api = self.api resp = FakeAPIResponse() name = random_str(32) cont_size = random.randint(1, 1000) resp.headers = { container_headers["size"]: cont_size } api._request = Mock(return_value=(resp, {})) info = api.container_show(self.account, name, headers=self.headers) uri = "%s/container/get_properties" % self.uri_base params = {'acct': self.account, 'ref': name} api._request.assert_called_once_with( 'POST', uri, params=params, headers=self.headers) self.assertEqual(info, {})
def test_container_create(self): api = self.api resp = FakeAPIResponse() resp.status_code = 204 api._request = Mock(return_value=(resp, None)) name = random_str(32) result = api.container_create(self.account, name, headers=self.headers) self.assertEqual(result, True) uri = "%s/container/create" % self.uri_base params = {'acct': self.account, 'ref': name} self.headers['x-oio-action-mode'] = 'autocreate' api._request.assert_called_once_with( 'POST', uri, params=params, headers=self.headers)
def test_container_show(self): api = self.api resp = FakeAPIResponse() name = random_str(32) cont_size = random.randint(1, 1000) resp.headers = {container_headers["size"]: cont_size} api._request = Mock(return_value=(resp, {})) info = api.container_show(self.account, name, headers=self.headers) uri = "%s/container/get_properties" % self.uri_base params = {'acct': self.account, 'ref': name} api._request.assert_called_once_with('POST', uri, params=params, headers=self.headers) self.assertEqual(info, {})
def test_container_list(self): resp = FakeAPIResponse() name = random_str(32) marker = random_str(32) delimiter = random_str(32) end_marker = random_str(32) prefix = random_str(32) limit = random.randint(1, 1000) body = {"listing": [[name, 0, 0, 0]]} fake_endpoint = 'fake_endpoint' self.api.account._direct_request = Mock(return_value=(resp, body)) self.api.account._get_account_addr = Mock(return_value=fake_endpoint) containers = self.api.container_list(self.account, limit=limit, marker=marker, prefix=prefix, delimiter=delimiter, end_marker=end_marker, headers=self.headers) params = { "id": self.account, "prefix": prefix, "delimiter": delimiter, "marker": marker, "end_marker": end_marker, "limit": limit } uri = "http://%s/v1.0/account/containers" % fake_endpoint self.api.account._direct_request.assert_called_once_with( 'GET', uri, params=params, headers=self.headers) self.assertEqual(len(containers), 1)
def test_container_delete(self): api = self.api resp = FakeAPIResponse() resp.status_code = 204 api._request = Mock(return_value=(resp, None)) api.directory.unlink = Mock(return_value=None) name = random_str(32) api.container_delete(self.account, name, headers=self.headers) uri = "%s/container/destroy" % self.uri_base params = {'acct': self.account, 'ref': name} api._request.assert_called_once_with('POST', uri, params=params, headers=self.headers)
def test_container_create(self): api = self.api resp = FakeAPIResponse() resp.status_code = 201 api.container._direct_request = Mock(return_value=(resp, None)) name = random_str(32) result = api.container_create(self.account, name, headers=self.headers) self.assertEqual(result, True) uri = "%s/container/create" % self.uri_base params = {'acct': self.account, 'ref': name} self.headers['x-oio-action-mode'] = 'autocreate' data = json.dumps({'properties': {}, 'system': {}}) api.container._direct_request.assert_called_once_with( 'POST', uri, params=params, data=data, headers=self.headers)
def test_destroy(self): api = self.api resp = FakeAPIResponse() api._direct_request = Mock(return_value=(resp, None)) api.destroy(self.account, self.name) uri = "%s/reference/destroy" % self.uri_base params = {'acct': self.account, 'ref': self.name} api._direct_request.assert_called_once_with('POST', uri, params=params)
def test_has(self): api = self.api resp = FakeAPIResponse() api._request = Mock(return_value=(resp, None)) uri = "%s/reference/has" % self.uri_base params = {'acct': self.account, 'ref': self.name} self.assertTrue(api.has(self.account, self.name)) api._request.assert_called_once_with( 'GET', uri, params=params, headers=None)
def test_renew(self): api = self.api service_type = random_str(32) resp = FakeAPIResponse() api._direct_request = Mock(return_value=(resp, None)) api.renew(self.account, self.name, service_type) uri = "%s/reference/renew" % self.uri_base params = {'acct': self.account, 'ref': self.name, 'type': service_type} api._direct_request.assert_called_once_with('POST', uri, params=params)
def test_delete_properties(self): api = self.api properties = [random_str(64)] resp = FakeAPIResponse() api._request = Mock(return_value=(resp, None)) api.del_properties(self.account, self.name, properties) uri = "%s/reference/del_properties" % self.uri_base params = {'acct': self.account, 'ref': self.name} data = json.dumps(properties) api._request.assert_called_once_with( 'POST', uri, data=data, params=params, headers=None)
def test_object_show(self): api = self.api name = random_str(32) size = random.randint(1, 1000) content_hash = random_str(32) content_type = random_str(32) resp = FakeAPIResponse() resp.headers = {object_headers["name"]: name, object_headers["size"]: size, object_headers["hash"]: content_hash, object_headers["mime_type"]: content_type} api._request = Mock(return_value=(resp, {'properties': {}})) obj = api.object_show( self.account, self.container, name, headers=self.headers) uri = "%s/content/get_properties" % self.uri_base params = {'acct': self.account, 'ref': self.container, 'path': name} api._request.assert_called_once_with( 'POST', uri, params=params, headers=self.headers) self.assertIsNotNone(obj)
def test_set_properties(self): api = self.api properties = {random_str(64): random_str(64)} resp = FakeAPIResponse() api._direct_request = Mock(return_value=(resp, None)) api.set_properties(self.account, self.name, properties) uri = "%s/reference/set_properties" % self.uri_base params = {'acct': self.account, 'ref': self.name} data = json.dumps({'properties': properties}) api._direct_request.assert_called_once_with('POST', uri, data=data, params=params)
def test_force(self): api = self.api service_type = random_str(32) services = {'seq': 1, 'type': service_type, 'host': '127.0.0.1:8000'} resp = FakeAPIResponse() api._request = Mock(return_value=(resp, None)) api.force(self.account, self.name, service_type, services) uri = "%s/reference/force" % self.uri_base params = {'acct': self.account, 'ref': self.name, 'type': service_type} data = json.dumps(services) api._request.assert_called_once_with( 'POST', uri, data=data, params=params, headers=None)
def test_object_show(self): api = self.api name = random_str(32) size = random.randint(1, 1000) content_hash = random_str(32) content_type = random_str(32) resp = FakeAPIResponse() resp.headers = {object_headers["name"]: name, object_headers["size"]: str(size), object_headers["hash"]: content_hash, object_headers["mime_type"]: content_type} api.container._direct_request = Mock( return_value=(resp, {'properties': {}})) obj = api.object_show( self.account, self.container, name, headers=self.headers) uri = "%s/content/get_properties" % self.uri_base params = {'acct': self.account, 'ref': self.container, 'path': name} api.container._direct_request.assert_called_once_with( 'POST', uri, params=params, data=None, headers=self.headers) self.assertIsNotNone(obj)
def test_create_metadata(self): api = self.api resp = FakeAPIResponse() resp.status_code = 201 api._request = Mock(return_value=(resp, None)) metadata = {} k1 = random_str(32) v1 = random_str(32) k2 = random_str(32) v2 = random_str(32) metadata[k1] = v1 metadata[k2] = v2 api.create(self.account, self.name, metadata) uri = "%s/reference/create" % self.uri_base params = {'acct': self.account, 'ref': self.name} data = json.dumps({'properties': metadata}) api._request.assert_called_once_with( 'POST', uri, params=params, data=data, headers=None)
def test_list(self): api = self.api service_type = random_str(32) resp = FakeAPIResponse() resp_body = [{"seq": 1, "type": service_type, "host": "127.0.0.1:6000", "args": ""}] api._request = Mock(return_value=(resp, resp_body)) l = api.list_services(self.account, self.name, service_type) uri = "%s/reference/show" % self.uri_base params = {'acct': self.account, 'ref': self.name, 'type': service_type} api._request.assert_called_once_with( 'GET', uri, params=params, headers=None) self.assertEqual(l, resp_body)
def test_container_update(self): api = self.api name = random_str(32) key = random_str(32) value = random_str(32) meta = {key: value} resp = FakeAPIResponse() api.container._direct_request = Mock(return_value=(resp, None)) api.container_set_properties( self.account, name, meta, headers=self.headers) data = json.dumps({'properties': meta, 'system': {}}) uri = "%s/container/set_properties" % self.uri_base params = {'acct': self.account, 'ref': name} api.container._direct_request.assert_called_once_with( 'POST', uri, data=data, params=params, headers=self.headers)
def test_object_delete(self): api = self.api name = random_str(32) resp_body = [ chunk("AAAA", "0"), chunk("BBBB", "1"), chunk("CCCC", "2") ] resp = FakeAPIResponse() api.container._direct_request = Mock(return_value=(resp, resp_body)) api.object_delete( self.account, self.container, name, headers=self.headers) uri = "%s/content/delete" % self.uri_base params = {'acct': self.account, 'ref': self.container, 'path': name} api.container._direct_request.assert_called_once_with( 'POST', uri, params=params, headers=self.headers)
def test_object_update(self): api = self.api name = random_str(32) key = random_str(32) value = random_str(32) meta = {key: value} resp = FakeAPIResponse() api._request = Mock(return_value=(resp, None)) api.object_update(self.account, self.container, name, meta, headers=self.headers) data = json.dumps(meta) uri = "%s/content/set_properties" % self.uri_base params = {'acct': self.account, 'ref': self.container, 'path': name} api._request.assert_called_once_with('POST', uri, data=data, params=params, headers=self.headers)