Skip to content

Commit 1109fad

Browse files
committed
Tests
1 parent 0a49f60 commit 1109fad

23 files changed

+26581
-16992
lines changed

pubnub/endpoints/fetch_messages.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ def __init__(self, pubnub):
3131
self._count = None
3232
self._include_meta = None
3333
self._include_message_actions = None
34-
self._include_message_type = None
34+
self._include_message_type = True
35+
self._include_space_id = None
3536
self._include_uuid = None
3637

3738
def channels(self, channels):
@@ -76,8 +77,16 @@ def include_uuid(self, include_uuid):
7677
self._include_uuid = include_uuid
7778
return self
7879

80+
def include_space_id(self, include_space_id):
81+
assert isinstance(include_space_id, bool)
82+
self._include_space_id = include_space_id
83+
return self
84+
7985
def custom_params(self):
80-
params = {'max': int(self._count)}
86+
params = {
87+
'max': int(self._count),
88+
'include_message_type': "true" if self._include_message_type else "false",
89+
}
8190

8291
if self._start is not None:
8392
params['start'] = str(self._start)
@@ -88,8 +97,8 @@ def custom_params(self):
8897
if self._include_meta is not None:
8998
params['include_meta'] = "true" if self._include_meta else "false"
9099

91-
if self._include_message_type is not None:
92-
params['include_message_type'] = "true" if self._include_message_type else "false"
100+
if self._include_space_id is not None:
101+
params['include_space_id'] = "true" if self._include_space_id else "false"
93102

94103
if self.include_message_actions and self._include_uuid is not None:
95104
params['include_uuid'] = "true" if self._include_uuid else "false"

pubnub/endpoints/pubsub/publish.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pubnub.models.consumer.pubsub import PNPublishResult
66
from pubnub.enums import HttpMethod, PNOperationType
77
from pubnub.endpoints.mixins import TimeTokenOverrideMixin
8+
from pubnub.models.consumer.message_type import PNMessageType
9+
from typing import Union
810

911

1012
class Publish(Endpoint, TimeTokenOverrideMixin):
@@ -37,7 +39,7 @@ def message(self, message):
3739
self._message = message
3840
return self
3941

40-
def message_type(self, message_type):
42+
def message_type(self, message_type: Union[PNMessageType, str]):
4143
self._message_type = message_type
4244
return self
4345

pubnub/endpoints/signal.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from pubnub.endpoints.endpoint import Endpoint
33
from pubnub.enums import HttpMethod, PNOperationType
44
from pubnub.models.consumer.signal import PNSignalResult
5+
from pubnub.models.consumer.message_type import PNMessageType
6+
from typing import Union
57

68

79
class Signal(Endpoint):
@@ -22,11 +24,11 @@ def message(self, message):
2224
self._message = message
2325
return self
2426

25-
def space(self, space):
27+
def space_id(self, space):
2628
self._space = str(space)
2729
return self
2830

29-
def message_type(self, message_type):
31+
def message_type(self, message_type: Union[PNMessageType, str]):
3032
self._message_type = message_type
3133
return self
3234

tests/functional/test_publish.py

+51-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
import unittest
33

44

5-
from unittest.mock import MagicMock
6-
75
from pubnub.endpoints.pubsub.publish import Publish
6+
from pubnub.managers import TelemetryManager
7+
from pubnub.models.consumer.message_type import PNMessageType
88
from pubnub.pubnub import PubNub
99
from tests.helper import pnconf, sdk_name, url_encode
10-
from pubnub.managers import TelemetryManager
10+
from unittest.mock import MagicMock
1111

1212

1313
class TestPublish(unittest.TestCase):
@@ -93,6 +93,54 @@ def test_pub_store(self):
9393
'store': '1',
9494
})
9595

96+
def test_pub_with_space_id(self):
97+
message = "hi"
98+
space_id = "test_space"
99+
encoded_message = url_encode(message)
100+
101+
self.pub.channel("ch1").message(message).space_id(space_id)
102+
103+
self.assertEqual(self.pub.build_path(), "/publish/%s/%s/0/ch1/0/%s"
104+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
105+
106+
self.assertEqual(self.pub.build_params_callback()({}), {
107+
'space-id': space_id,
108+
'pnsdk': sdk_name,
109+
'uuid': self.pubnub.uuid,
110+
})
111+
112+
def test_pub_with_pn_message_type(self):
113+
message = "hi"
114+
message_type = 'test_type'
115+
encoded_message = url_encode(message)
116+
117+
self.pub.channel("ch1").message(message).message_type(PNMessageType(message_type))
118+
119+
self.assertEqual(self.pub.build_path(), "/publish/%s/%s/0/ch1/0/%s"
120+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
121+
122+
self.assertEqual(self.pub.build_params_callback()({}), {
123+
'type': message_type,
124+
'pnsdk': sdk_name,
125+
'uuid': self.pubnub.uuid,
126+
})
127+
128+
def test_pub_with_str_message_type(self):
129+
message = "hi"
130+
message_type = 'test_type'
131+
encoded_message = url_encode(message)
132+
133+
self.pub.channel("ch1").message(message).message_type(message_type)
134+
135+
self.assertEqual(self.pub.build_path(), "/publish/%s/%s/0/ch1/0/%s"
136+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
137+
138+
self.assertEqual(self.pub.build_params_callback()({}), {
139+
'type': message_type,
140+
'pnsdk': sdk_name,
141+
'uuid': self.pubnub.uuid,
142+
})
143+
96144
def test_pub_do_not_store(self):
97145
self.pubnub.uuid = "UUID_PublishUnitTest"
98146

tests/functional/test_signal.py

+76-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import pytest
2+
import unittest
23

34
from pubnub.pubnub import PubNub
45
from pubnub.exceptions import PubNubException
56
from pubnub.endpoints.signal import Signal
6-
from tests.helper import url_encode, pnconf_copy
7+
from pubnub.models.consumer.message_type import PNMessageType
8+
from pubnub.managers import TelemetryManager
9+
from tests.helper import url_encode, pnconf_copy, sdk_name
10+
from unittest.mock import MagicMock
11+
712

813
pnconf = pnconf_copy()
914
SUB_KEY = pnconf.subscribe_key
@@ -28,3 +33,73 @@ def test_signal():
2833
assert signal.build_path() == Signal.SIGNAL_PATH % (PUB_KEY, SUB_KEY, CHAN, MSG_ENCODED)
2934
assert 'auth' in signal.build_params_callback()({})
3035
assert AUTH == signal.build_params_callback()({})['auth']
36+
37+
38+
class TestPublish(unittest.TestCase):
39+
def setUp(self):
40+
self.sm = MagicMock(
41+
get_next_sequence=MagicMock(return_value=2)
42+
)
43+
44+
self.pubnub = MagicMock(
45+
spec=PubNub,
46+
config=pnconf,
47+
sdk_name=sdk_name,
48+
_publish_sequence_manager=self.sm,
49+
_get_token=lambda: None
50+
)
51+
52+
self.pubnub.uuid = "UUID_PublishUnitTest"
53+
self.pubnub._telemetry_manager = TelemetryManager()
54+
self.signal = Signal(self.pubnub)
55+
56+
def test_signal_with_space_id(self):
57+
message = "hi"
58+
space_id = "test_space"
59+
encoded_message = url_encode(message)
60+
61+
self.signal.channel("ch1").message(message).space_id(space_id)
62+
63+
self.assertEqual(self.signal.build_path(), "/signal/%s/%s/0/ch1/0/%s"
64+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
65+
66+
self.assertEqual(self.signal.build_params_callback()({}), {
67+
'auth': 'auth',
68+
'pnsdk': sdk_name,
69+
'space-id': space_id,
70+
'uuid': self.pubnub.uuid,
71+
})
72+
73+
def test_signal_with_pn_message_type(self):
74+
message = "hi"
75+
message_type = 'test_type'
76+
encoded_message = url_encode(message)
77+
78+
self.signal.channel("ch1").message(message).message_type(PNMessageType(message_type))
79+
80+
self.assertEqual(self.signal.build_path(), "/signal/%s/%s/0/ch1/0/%s"
81+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
82+
83+
self.assertEqual(self.signal.build_params_callback()({}), {
84+
'auth': 'auth',
85+
'pnsdk': sdk_name,
86+
'type': message_type,
87+
'uuid': self.pubnub.uuid,
88+
})
89+
90+
def test_signal_with_str_message_type(self):
91+
message = "hi"
92+
message_type = 'test_type'
93+
encoded_message = url_encode(message)
94+
95+
self.signal.channel("ch1").message(message).message_type(message_type)
96+
97+
self.assertEqual(self.signal.build_path(), "/signal/%s/%s/0/ch1/0/%s"
98+
% (pnconf.publish_key, pnconf.subscribe_key, encoded_message))
99+
100+
self.assertEqual(self.signal.build_params_callback()({}), {
101+
'auth': 'auth',
102+
'pnsdk': sdk_name,
103+
'type': message_type,
104+
'uuid': self.pubnub.uuid,
105+
})

tests/helper.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
pnconf_env.publish_key = os.environ.get('PN_KEY_PUBLISH')
134134
pnconf_env.subscribe_request_timeout = 10
135135
pnconf_env.subscribe_key = os.environ.get('PN_KEY_SUBSCRIBE')
136-
pnconf_env.enable_subscribe = False
136+
pnconf_env.enable_subscribe = True
137137
pnconf_env.uuid = uuid_mock
138138

139139
# configuration with keys from PN_KEY_* (enabled all except PAM, PUSH and FUNCTIONS) and encryption enabled
@@ -142,7 +142,7 @@
142142
pnconf_enc_env.subscribe_request_timeout = 10
143143
pnconf_enc_env.subscribe_key = os.environ.get('PN_KEY_SUBSCRIBE')
144144
pnconf_enc_env.cipher_key = "testKey"
145-
pnconf_enc_env.enable_subscribe = False
145+
pnconf_enc_env.enable_subscribe = True
146146
pnconf_enc_env.uuid = uuid_mock
147147

148148
# configuration with keys from PN_KEY_PAM_* (enabled with all including PAM except PUSH and FUNCTIONS)

tests/integrational/asyncio/test_subscribe.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from tests.integrational.vcr_asyncio_sleeper import get_sleeper, VCR599Listener, VCR599ReconnectionManager
1212
from tests.integrational.vcr_helper import pn_vcr
1313

14+
1415
pn.set_stream_logger('pubnub', logging.DEBUG)
1516

1617

@@ -396,8 +397,8 @@ async def test_subscribe_publish_space_id(event_loop, sleeper=asyncio.sleep):
396397
pubnub_sub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop)
397398
pubnub_pub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop)
398399

399-
patch_pubnub(pubnub_sub)
400-
patch_pubnub(pubnub_pub)
400+
await patch_pubnub(pubnub_sub)
401+
await patch_pubnub(pubnub_pub)
401402

402403
pubnub_sub.config.uuid = 'test-subscribe-asyncio-uuid-sub'
403404
pubnub_pub.config.uuid = 'test-subscribe-asyncio-uuid-pub'
@@ -438,8 +439,8 @@ async def test_subscribe_publish_space_id(event_loop, sleeper=asyncio.sleep):
438439
pubnub_sub.unsubscribe().channels(channel).execute()
439440
# await callback.wait_for_disconnect()
440441

441-
pubnub_pub.stop()
442-
pubnub_sub.stop()
442+
await pubnub_pub.stop()
443+
await pubnub_sub.stop()
443444

444445

445446
@get_sleeper('tests/integrational/fixtures/asyncio/subscription/publish_message_type.yaml')
@@ -453,8 +454,8 @@ async def test_subscribe_publish_message_type(event_loop, sleeper=asyncio.sleep)
453454
pubnub_sub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop)
454455
pubnub_pub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop)
455456

456-
patch_pubnub(pubnub_sub)
457-
patch_pubnub(pubnub_pub)
457+
await patch_pubnub(pubnub_sub)
458+
await patch_pubnub(pubnub_pub)
458459

459460
pubnub_sub.config.uuid = 'test-subscribe-asyncio-uuid-sub'
460461
pubnub_pub.config.uuid = 'test-subscribe-asyncio-uuid-pub'
@@ -497,5 +498,5 @@ async def test_subscribe_publish_message_type(event_loop, sleeper=asyncio.sleep)
497498
pubnub_sub.unsubscribe().channels(channel).execute()
498499
# await callback.wait_for_disconnect()
499500

500-
pubnub_pub.stop()
501-
pubnub_sub.stop()
501+
await pubnub_pub.stop()
502+
await pubnub_sub.stop()

tests/integrational/fixtures/native_sync/fetch_messages/include_message_type.yaml

-78
This file was deleted.

0 commit comments

Comments
 (0)