def test_single_channel(self): ch = "state-native-sync-ch" pubnub = PubNub(pnconf_copy()) pubnub.config.uuid = "state-native-sync-uuid" state = {"name": "Alex", "count": 5} pubnub.set_state() \ .channels(ch) \ .state(state) \ .pn_async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNSetStateResult) assert self.response.state['name'] == "Alex" assert self.response.state['count'] == 5 self.event.clear() pubnub.get_state() \ .channels(ch) \ .pn_async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNGetStateResult) assert self.response.channels[ch]['name'] == "Alex" assert self.response.channels[ch]['count'] == 5
def test_multiple_channels(self): ch1 = "state-native-sync-ch-1" ch2 = "state-native-sync-ch-2" pubnub = PubNub(pnconf_copy()) pubnub.config.uuid = "state-native-sync-uuid" state = {"name": "Alex", "count": 5} pubnub.set_state().channels([ch1, ch2]).state(state).async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNSetStateResult) assert self.response.state["name"] == "Alex" assert self.response.state["count"] == 5 self.event.clear() pubnub.get_state().channels([ch1, ch2]).async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNGetStateResult) assert self.response.channels[ch1]["name"] == "Alex" assert self.response.channels[ch1]["count"] == 5 assert self.response.channels[ch2]["name"] == "Alex" assert self.response.channels[ch2]["count"] == 5
def test_multiple_channels(self): ch1 = "state-native-sync-ch-1" ch2 = "state-native-sync-ch-2" pubnub = PubNub(pnconf_copy()) pubnub.config.uuid = "state-native-sync-uuid" state = {"name": "Alex", "count": 5} pubnub.set_state() \ .channels([ch1, ch2]) \ .state(state) \ .pn_async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNSetStateResult) assert self.response.state['name'] == "Alex" assert self.response.state['count'] == 5 self.event.clear() pubnub.get_state() \ .channels([ch1, ch2]) \ .pn_async(self.callback) self.event.wait() assert not self.status.is_error() assert isinstance(self.response, PNGetStateResult) assert self.response.channels[ch1]['name'] == "Alex" assert self.response.channels[ch1]['count'] == 5 assert self.response.channels[ch2]['name'] == "Alex" assert self.response.channels[ch2]['count'] == 5
def test_get_state_passes_user_defined_uuid(self): ch = "state-native-sync-ch" pubnub = PubNub(pnconf_copy()) pubnub.config.uuid = "test_uuid" client_uuid = "state-native-sync-uuid" envelope = pubnub.get_state().channels(ch).uuid(client_uuid).sync() assert isinstance(envelope.result, PNGetStateResult) assert envelope.result.channels[ch]['name'] == "Alex" assert envelope.result.channels[ch]['count'] == 5
def test_single_channel(self): ch = "state-native-sync-ch" pubnub = PubNub(pnconf_copy()) pubnub.config.uuid = "state-native-sync-uuid" state = {"name": "Alex", "count": 5} envelope = pubnub.set_state().channels(ch).state(state).sync() assert isinstance(envelope.result, PNSetStateResult) assert envelope.result.state['name'] == "Alex" assert envelope.result.state['count'] == 5 envelope = pubnub.get_state().channels(ch).sync() assert isinstance(envelope.result, PNGetStateResult) assert envelope.result.channels[ch]['name'] == "Alex" assert envelope.result.channels[ch]['count'] == 5
def test_super_call(self): ch1 = "state-tornado-ch1" ch2 = "state-tornado-ch2" pnconf = pnconf_pam_copy() pubnub = PubNub(pnconf) pubnub.config.uuid = 'test-state-native-uuid-|.*$' state = {"name": "Alex", "count": 5} env = pubnub.set_state() \ .channels([ch1, ch2]) \ .state(state) \ .sync() assert env.result.state['name'] == "Alex" assert env.result.state['count'] == 5 env = pubnub.get_state() \ .channels([ch1, ch2]) \ .sync() assert env.result.channels[ch1]['name'] == "Alex" assert env.result.channels[ch2]['name'] == "Alex" assert env.result.channels[ch1]['count'] == 5 assert env.result.channels[ch2]['count'] == 5
from pubnub.enums import PNOperationType, PNStatusCategory from pubnub.pnconfiguration import PNConfiguration from pubnub.pubnub import PubNub, SubscribeListener pubnub.set_stream_logger('pubnub', logging.DEBUG) pnconfig = PNConfiguration() pnconfig.subscribe_key = 'demo' pnconfig.publish_key = 'demo' pubnub = PubNub(pnconfig) def get_state_handler(result, status): if status.is_error(): # handle error return print(result) pubnub.set_state().channels("my_channel").state({'age': 30}).sync() pubnub.get_state().channels("my_channel").async(get_state_handler)