From c68aec5dc364d7f2ee6f0152c480e0e4610d4952 Mon Sep 17 00:00:00 2001 From: Santiago Lamora Date: Mon, 30 Mar 2020 15:26:01 +0200 Subject: [PATCH] Handle accounts without billing contact data. Fixes #7 --- musician/models.py | 2 ++ musician/tests.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/musician/models.py b/musician/models.py index bccd595..3239829 100644 --- a/musician/models.py +++ b/musician/models.py @@ -34,6 +34,8 @@ class OrchestraModel: Args: data: A JSON dict, as converted from the JSON in the orchestra API. """ + if data is None: + return cls() json_data = data.copy() if kwargs: diff --git a/musician/tests.py b/musician/tests.py index 44118a2..8becf4d 100644 --- a/musician/tests.py +++ b/musician/tests.py @@ -62,6 +62,31 @@ class UserAccountTest(TestCase): account = UserAccount.new_from_json(data) self.assertIsNone(account.last_login) + def test_user_without_billcontact(self): + data = { + 'billcontact': None, + 'date_joined': '2020-03-05T09:49:21Z', + 'full_name': 'David Rock', + 'id': 2, + 'is_active': True, + 'language': 'CA', + 'last_login': '2020-03-19T10:21:49.504266Z', + 'resources': [{'allocated': None, + 'name': 'disk', + 'unit': 'GiB', + 'used': '0.000'}, + {'allocated': None, + 'name': 'traffic', + 'unit': 'GiB', + 'used': '0.000'}], + 'short_name': '', + 'type': 'STAFF', + 'url': 'https://example.org/api/accounts/2/', + 'username': 'drock' + } + account = UserAccount.new_from_json(data) + self.assertIsNotNone(account.billing) + class GetBootstrapedPercentTest(TestCase): BS_WIDTH = [0, 25, 50, 100]