From 2d745ee892a80928373bd8a6ea844e8e212a4a15 Mon Sep 17 00:00:00 2001 From: Jeremy Liu Date: Thu, 9 Feb 2017 17:29:57 +0800 Subject: [PATCH] Fix serializable issues when retrieving json format resources Change-Id: Icc56feab767e5154588f2e3e32e1ded3d8c62f09 Closes-Bug: #1662144 --- barbicanclient/acls.py | 6 ++++-- barbicanclient/cas.py | 9 ++++++--- barbicanclient/containers.py | 3 ++- barbicanclient/orders.py | 9 ++++++--- barbicanclient/secrets.py | 6 ++++-- barbicanclient/tests/test_acls.py | 2 +- barbicanclient/tests/test_cas.py | 13 +++++++++++++ barbicanclient/tests/test_containers.py | 13 +++++++++++++ barbicanclient/tests/test_orders.py | 22 ++++++++++++++++++++++ barbicanclient/tests/test_secrets.py | 9 +++++++++ 10 files changed, 80 insertions(+), 12 deletions(-) diff --git a/barbicanclient/acls.py b/barbicanclient/acls.py index cec8378a..a7393e07 100644 --- a/barbicanclient/acls.py +++ b/barbicanclient/acls.py @@ -38,11 +38,13 @@ class ACLFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None + updated = self.updated.isoformat() if self.updated else None data = (self.operation_type, self.project_access, self.users, - self.created, - self.updated, + created, + updated, self.acl_ref, ) return data diff --git a/barbicanclient/cas.py b/barbicanclient/cas.py index 5fa3288c..71d64786 100644 --- a/barbicanclient/cas.py +++ b/barbicanclient/cas.py @@ -47,15 +47,18 @@ class CAFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None + updated = self.updated.isoformat() if self.updated else None + expiration = self.expiration.isoformat() if self.expiration else None data = (self.ca_ref, self.name, self.description, - self.created, - self.updated, + created, + updated, self.status, self.plugin_name, self.plugin_ca_id, - self.expiration + expiration ) return data diff --git a/barbicanclient/containers.py b/barbicanclient/containers.py index 3bf87895..74372612 100644 --- a/barbicanclient/containers.py +++ b/barbicanclient/containers.py @@ -58,9 +58,10 @@ class ContainerFormatter(formatter.EntityFormatter): )) if self.consumers: formatted_consumers = '\n'.join((str(c) for c in self.consumers)) + created = self.created.isoformat() if self.created else None data = (self.container_ref, self.name, - self.created, + created, self.status, self._type, formatted_secrets, diff --git a/barbicanclient/orders.py b/barbicanclient/orders.py index a087b3b1..be48ba07 100644 --- a/barbicanclient/orders.py +++ b/barbicanclient/orders.py @@ -48,11 +48,12 @@ class KeyOrderFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None data = (self.order_ref, "Key", "N/A", self.secret_ref, - self.created, + created, self.status, self.error_status_code, self.error_reason @@ -73,11 +74,12 @@ class AsymmetricOrderFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None data = (self.order_ref, "Asymmetric", self.container_ref, "N/A", - self.created, + created, self.status, self.error_status_code, self.error_reason @@ -98,11 +100,12 @@ class CertificateOrderFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None data = (self.order_ref, "Certificate", self.container_ref, "N/A", - self.created, + created, self.status, self.error_status_code, self.error_reason diff --git a/barbicanclient/secrets.py b/barbicanclient/secrets.py index 220d7f3d..5d537200 100644 --- a/barbicanclient/secrets.py +++ b/barbicanclient/secrets.py @@ -61,16 +61,18 @@ class SecretFormatter(formatter.EntityFormatter): ) def _get_formatted_data(self): + created = self.created.isoformat() if self.created else None + expiration = self.expiration.isoformat() if self.expiration else None data = (self.secret_ref, self.name, - self.created, + created, self.status, self.content_types, self.algorithm, self.bit_length, self.secret_type, self.mode, - self.expiration, + expiration, ) return data diff --git a/barbicanclient/tests/test_acls.py b/barbicanclient/tests/test_acls.py index f3a468eb..21b4394b 100644 --- a/barbicanclient/tests/test_acls.py +++ b/barbicanclient/tests/test_acls.py @@ -363,7 +363,7 @@ class WhenTestingACLEntity(ACLTestCase): self.assertEqual(acls.DEFAULT_OPERATION_TYPE, data[0]) self.assertIsNone(data[1]) self.assertEqual(self.users2, data[2]) - self.assertEqual(timeutils.parse_isotime(self.created), + self.assertEqual(timeutils.parse_isotime(self.created).isoformat(), data[3]) # created self.assertIsNone(data[4]) # updated self.assertEqual(self.container_acl_ref, data[5]) diff --git a/barbicanclient/tests/test_cas.py b/barbicanclient/tests/test_cas.py index 1a4961ee..86ac1189 100644 --- a/barbicanclient/tests/test_cas.py +++ b/barbicanclient/tests/test_cas.py @@ -131,3 +131,16 @@ class WhenTestingCAs(test_client.BaseEntityResource): # Verify the correct URL was used to make the GET call self.assertEqual(self.entity_href, m.last_request.url) + + def test_get_formatted_data(self): + c_entity = cas.CA(api=None, + expiration=self.ca.expiration, + plugin_name=self.ca.plugin_name, + created=self.ca.created) + + data = c_entity._get_formatted_data() + + self.assertEqual(self.ca.plugin_name, data[6]) + self.assertEqual(timeutils.parse_isotime( + self.ca.expiration).isoformat(), + data[8]) diff --git a/barbicanclient/tests/test_containers.py b/barbicanclient/tests/test_containers.py index 4be9fb92..6441c235 100644 --- a/barbicanclient/tests/test_containers.py +++ b/barbicanclient/tests/test_containers.py @@ -565,3 +565,16 @@ class WhenTestingContainers(test_client.BaseEntityResource): # Verify the correct URL was used to make the GET call self.assertEqual(acl_ref, n.last_request.url) + + def test_get_formatted_data(self): + data = self.container.get_dict(self.entity_href) + self.responses.get(self.entity_href, json=data) + + container = self.manager.get(container_ref=self.entity_href) + + data = container._get_formatted_data() + + self.assertEqual(self.container.name, data[1]) + self.assertEqual(timeutils.parse_isotime( + self.container.created).isoformat(), + data[2]) diff --git a/barbicanclient/tests/test_orders.py b/barbicanclient/tests/test_orders.py index 9c608221..cb45ac38 100644 --- a/barbicanclient/tests/test_orders.py +++ b/barbicanclient/tests/test_orders.py @@ -298,6 +298,17 @@ class WhenTestingOrderManager(OrdersTestCase): self.responses.get(self.entity_base, json={'total': 1}) total = self.manager.total() + def test_get_formatted_data(self): + self.responses.get(self.entity_href, text=self.key_order_data) + + order = self.manager.get(order_ref=self.entity_href) + data = order._get_formatted_data() + + order_args = self._get_order_args(self.key_order_data) + self.assertEqual(timeutils.parse_isotime( + order_args['created']).isoformat(), + data[4]) + class WhenTestingCertificateOrders(test_client.BaseEntityResource): def setUp(self): @@ -383,3 +394,14 @@ class WhenTestingCertificateOrders(test_client.BaseEntityResource): self.assertEqual(3, len(orders_list)) self.assertIsInstance(orders_list[0], orders.CertificateOrder) self.assertEqual(self.entity_href, orders_list[0].order_ref) + + def test_get_formatted_data(self): + self.responses.get(self.entity_href, text=self.cert_order_data) + + order = self.manager.get(order_ref=self.entity_href) + data = order._get_formatted_data() + + order_args = self._get_order_args(self.cert_order_data) + self.assertEqual(timeutils.parse_isotime( + order_args['created']).isoformat(), + data[4]) diff --git a/barbicanclient/tests/test_secrets.py b/barbicanclient/tests/test_secrets.py index 9be1be78..61efdb01 100644 --- a/barbicanclient/tests/test_secrets.py +++ b/barbicanclient/tests/test_secrets.py @@ -488,3 +488,12 @@ class WhenTestingSecrets(test_client.BaseEntityResource): self.responses.get(self.entity_base, json={'total': 1}) total = self.manager.total() self.assertEqual(1, total) + + def test_get_formatted_data(self): + data = self.secret.get_dict(self.entity_href) + m = self.responses.get(self.entity_href, json=data) + + secret = self.manager.get(secret_ref=self.entity_href) + f_data = secret._get_formatted_data() + self.assertEqual(timeutils.parse_isotime(data['created']).isoformat(), + f_data[2])