From b378b33d3e224cc60b7e18fd118fc6ee723b8951 Mon Sep 17 00:00:00 2001 From: david Karchmer Date: Fri, 2 Mar 2018 14:04:27 -0800 Subject: [PATCH] Ensure IOTileDeviceSlug only considers 48 bits when converting formatted ids --- CHANGELOG.md | 6 +++++- iotile_cloud/utils/gid.py | 14 ++++++++++++-- tests/test_gid.py | 9 ++++++++- version.py | 2 +- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2152f94..7a52d95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,11 @@ +### v0.8.7 (2018-03-02) + + * Ensure IOTileDeviceSlug only considers 48 bits when converting formatted ids + ### v0.8.6 (2018-02-27) * Allow params to be passed to POST, PATCH, PUT and DELETE - + ### v0.8.5 (2018-02-23) * Fix get stream acknowledgment to get the right dictionary field (Issue #28) diff --git a/iotile_cloud/utils/gid.py b/iotile_cloud/utils/gid.py index 14da976..4e610b5 100644 --- a/iotile_cloud/utils/gid.py +++ b/iotile_cloud/utils/gid.py @@ -82,9 +82,19 @@ def __init__(self, id): return if isinstance(id, int): - did = int2did(id) + did = int2did(id) else: - did = id + assert isinstance(id, str) + parts = gid_split(id) + if len(parts) == 1: + did = parts[0] + else: + did = gid_join(parts[1:]) + + # Convert to int and back to get rid of anything above 48 bits + id = gid2int(did) + did = int2did(id) + self.set_from_single_id_slug('d', 4, did) diff --git a/tests/test_gid.py b/tests/test_gid.py index 2cda694..d20a3de 100644 --- a/tests/test_gid.py +++ b/tests/test_gid.py @@ -40,9 +40,16 @@ def test_device_slug(self): id = IOTileDeviceSlug('0005') self.assertEqual(str(id), 'd--0000-0000-0000-0005') - self.assertEqual(id.formatted_id(), '0000-0000-0000-0005') + id = IOTileDeviceSlug('d--1234-0000-0000-0001') + self.assertEqual(str(id), 'd--0000-0000-0000-0001') + self.assertEqual(id.get_id(), 1) + + id = IOTileDeviceSlug('1234-0000-0000-0001') + self.assertEqual(str(id), 'd--0000-0000-0000-0001') + self.assertEqual(id.get_id(), 1) + def test_block_slug(self): id = IOTileBlockSlug(5) self.assertEqual(str(id), 'b--0000-0000-0000-0005') diff --git a/version.py b/version.py index 83918bb..5cc5002 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -version = '0.8.6' +version = '0.8.7'