From 5a13fd0eda7cc97eed9ca2c65a3de936131ca1a3 Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 10:45:03 -0800 Subject: [PATCH 1/8] test for subscription id --- test/test_subscription.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 test/test_subscription.py diff --git a/test/test_subscription.py b/test/test_subscription.py new file mode 100644 index 0000000..9781f47 --- /dev/null +++ b/test/test_subscription.py @@ -0,0 +1,15 @@ +import json +from nostr.filter import Filter, Filters +from nostr.message_type import ClientMessageType +from nostr.subscription import Subscription + +def test_subscription_id(): + subscription = Subscription(id=123, filters=Filters([Filter()])) + request = [ClientMessageType.REQUEST, subscription.id] + request.extend(subscription.filters.to_json_array()) + message = json.dumps(request) + request_received = json.loads(message) + message_type, subscription_id, req_filters = request_received + assert isinstance(subscription_id, str) + assert message_type == ClientMessageType.REQUEST + assert isinstance(req_filters, dict) \ No newline at end of file From 44aee9c03145183fdb6427fed8d68863ad9d34d5 Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 11:16:26 -0800 Subject: [PATCH 2/8] test subscription creation types --- test/test_subscription.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test_subscription.py b/test/test_subscription.py index 9781f47..cf5e7e7 100644 --- a/test/test_subscription.py +++ b/test/test_subscription.py @@ -3,7 +3,12 @@ from nostr.message_type import ClientMessageType from nostr.subscription import Subscription + def test_subscription_id(): + """ + check that subscription contents dump to JSON and load + back to Python with expected types + """ subscription = Subscription(id=123, filters=Filters([Filter()])) request = [ClientMessageType.REQUEST, subscription.id] request.extend(subscription.filters.to_json_array()) From 23d3b8d7ba563389361c3dd34d5eea0b403d7412 Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 11:19:46 -0800 Subject: [PATCH 3/8] force subscription id to str --- nostr/subscription.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nostr/subscription.py b/nostr/subscription.py index 7afba20..b139952 100644 --- a/nostr/subscription.py +++ b/nostr/subscription.py @@ -2,7 +2,7 @@ class Subscription: def __init__(self, id: str, filters: Filters=None) -> None: - self.id = id + self.id = str(id) self.filters = filters def to_json_object(self): From 954d28393bf94ffbb72af65cd40238284d21b443 Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 11:20:29 -0800 Subject: [PATCH 4/8] remove unused default arg for filters --- nostr/subscription.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nostr/subscription.py b/nostr/subscription.py index b139952..005faef 100644 --- a/nostr/subscription.py +++ b/nostr/subscription.py @@ -1,7 +1,7 @@ from .filter import Filters class Subscription: - def __init__(self, id: str, filters: Filters=None) -> None: + def __init__(self, id: str, filters: Filters) -> None: self.id = str(id) self.filters = filters From 622b3eb5802bc0aafc62a019e7f042e963913dfa Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 15:00:10 -0800 Subject: [PATCH 5/8] raise error on wrong type for id --- nostr/subscription.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nostr/subscription.py b/nostr/subscription.py index 005faef..37829c1 100644 --- a/nostr/subscription.py +++ b/nostr/subscription.py @@ -2,7 +2,9 @@ class Subscription: def __init__(self, id: str, filters: Filters) -> None: - self.id = str(id) + if not isinstance(id, str): + raise TypeError("Argument 'id' must be of type str") + self.id = id self.filters = filters def to_json_object(self): From 38bd6eda23e83990a59053ceab98f1c23bd36eef Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 15:00:44 -0800 Subject: [PATCH 6/8] clean up subscription tests --- test/test_subscription.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/test_subscription.py b/test/test_subscription.py index cf5e7e7..3945942 100644 --- a/test/test_subscription.py +++ b/test/test_subscription.py @@ -1,3 +1,4 @@ +import pytest import json from nostr.filter import Filter, Filters from nostr.message_type import ClientMessageType @@ -9,7 +10,13 @@ def test_subscription_id(): check that subscription contents dump to JSON and load back to Python with expected types """ - subscription = Subscription(id=123, filters=Filters([Filter()])) + filters = Filters([Filter()]) + id = 123 + + with pytest.raises(TypeError) as e: + subscription = Subscription(id=id, filters=filters) + + subscription = Subscription(id=str(id), filters=filters) request = [ClientMessageType.REQUEST, subscription.id] request.extend(subscription.filters.to_json_array()) message = json.dumps(request) @@ -17,4 +24,4 @@ def test_subscription_id(): message_type, subscription_id, req_filters = request_received assert isinstance(subscription_id, str) assert message_type == ClientMessageType.REQUEST - assert isinstance(req_filters, dict) \ No newline at end of file + assert isinstance(req_filters, dict) From 0132345ab873d35287dfdd91c08b43fbdc8696d9 Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 16:16:30 -0800 Subject: [PATCH 7/8] Assert subscription id error is raise properly Co-authored-by: Jeff Thibault --- test/test_subscription.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_subscription.py b/test/test_subscription.py index 3945942..c32cb9f 100644 --- a/test/test_subscription.py +++ b/test/test_subscription.py @@ -15,7 +15,7 @@ def test_subscription_id(): with pytest.raises(TypeError) as e: subscription = Subscription(id=id, filters=filters) - + assert "Argument 'id' must be of type str" == str(e) subscription = Subscription(id=str(id), filters=filters) request = [ClientMessageType.REQUEST, subscription.id] request.extend(subscription.filters.to_json_array()) From 9f931c0fcd919c98bb36aee026d0bca8e04650ac Mon Sep 17 00:00:00 2001 From: Ryan Armstrong Date: Sat, 21 Jan 2023 17:18:13 -0800 Subject: [PATCH 8/8] clean up formatting --- test/test_subscription.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_subscription.py b/test/test_subscription.py index c32cb9f..dbb0893 100644 --- a/test/test_subscription.py +++ b/test/test_subscription.py @@ -16,6 +16,7 @@ def test_subscription_id(): with pytest.raises(TypeError) as e: subscription = Subscription(id=id, filters=filters) assert "Argument 'id' must be of type str" == str(e) + subscription = Subscription(id=str(id), filters=filters) request = [ClientMessageType.REQUEST, subscription.id] request.extend(subscription.filters.to_json_array())