from pubnub import Pubnub import time pubnub = Pubnub("demo","demo") pubnub_pam = Pubnub("pam", "pam", "pam") # Grant permission read true, write true, on channel ( Sync Mode ) def test_1(): resp = pubnub_pam.grant(channel="abcd", auth_key="abcd", read=True, write=True, ttl=1) print resp assert resp['message'] == 'Success' assert resp['payload'] == { 'auths': {'abcd': {'r': 1, 'w': 1, 'm' : 0}}, 'subscribe_key': 'pam', 'level': 'user', 'channel': 'abcd', 'ttl': 1 } # Grant permission read false, write false, on channel ( Sync Mode ) def test_2(): resp = pubnub_pam.grant(channel="abcd", auth_key="abcd", read=False, write=False, ttl=1) assert resp['message'] == 'Success' assert resp['payload'] == { 'auths': {'abcd': {'r': 0, 'w': 0, 'm' : 0}}, 'subscribe_key': 'pam', 'level': 'user', 'channel': 'abcd', 'ttl': 1 } # Grant permission read True, write false, on channel ( Sync Mode ) def test_3(): resp = pubnub_pam.grant(channel="abcd", auth_key="abcd", read=True, write=False, ttl=1) assert resp['message'] == 'Success' assert resp['payload'] == { 'auths': {'abcd': {'r': 1, 'w': 0, 'm' : 0}}, 'subscribe_key': 'pam', 'level': 'user', 'channel': 'abcd', 'ttl': 1 } # Grant permission read False, write True, on channel ( Sync Mode ) def test_4(): resp = pubnub_pam.grant(channel="abcd", auth_key="abcd", read=True, write=False, ttl=1) assert resp['message'] == 'Success' assert resp['payload'] == { 'auths': {'abcd': {'r': 1, 'w': 0, 'm' : 0}}, 'subscribe_key': 'pam', 'level': 'user', 'channel': 'abcd', 'ttl': 1 } # Grant permission read False, write True, on channel ( Sync Mode ), TTL 10 def test_5(): resp = pubnub_pam.grant(channel="abcd", auth_key="abcd", read=True, write=False, ttl=10) assert resp['message'] == 'Success' assert resp['payload'] == { 'auths': {'abcd': {'r': 1, 'w': 0, 'm' : 0}}, 'subscribe_key': 'pam', 'level': 'user', 'channel': 'abcd', 'ttl': 10 } # Grant permission read False, write True, without channel ( Sync Mode ), TTL 10 def test_6(): resp = pubnub_pam.grant(auth_key="abcd", read=True, write=False, ttl=10) assert resp['message'] == 'Success' assert resp['payload'] == { 'subscribe_key': 'pam', 'level': 'subkey' , u'r': 1, u'w': 0, 'm' : 0, 'ttl': 10 } # Grant permission read False, write False, without channel ( Sync Mode ) def test_7(): resp = pubnub_pam.grant(auth_key="abcd", read=False, write=False) assert resp['message'] == 'Success' assert resp['payload'] == { 'subscribe_key': 'pam', 'level': 'subkey' , u'r': 0, u'w': 0, 'm' : 0, 'ttl': 1 } # Complete flow , try publish on forbidden channel, grant permission to auth key and try again. ( Sync Mode) def test_8(): channel = "test_8-" + str(time.time()) message = "Hello World" auth_key = "auth-" + channel pubnub_pam.set_auth_key(auth_key) resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} resp = pubnub_pam.grant(channel=channel, read=True, write=True, auth_key=auth_key, ttl=10) assert resp == { 'message': u'Success', 'payload': {u'auths': {auth_key : {u'r': 1, u'w': 1, 'm' : 0}}, u'subscribe_key': u'pam', u'level': u'user', u'channel': channel, u'ttl': 10} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp[0] == 1 # Complete flow , try publish on forbidden channel, grant permission to authkey and try again. ( Sync Mode) # then revoke and try again def test_9(): channel = "test_9-" + str(time.time()) message = "Hello World" auth_key = "auth-" + channel pubnub_pam.set_auth_key(auth_key) resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} resp = pubnub_pam.grant(channel=channel, read=True, write=True, auth_key=auth_key, ttl=10) print resp assert resp == { 'message': u'Success', 'payload': {u'auths': {auth_key : {u'r': 1, u'w': 1, 'm' : 0}}, u'subscribe_key': u'pam', u'level': u'user', u'channel': channel, u'ttl': 10} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp[0] == 1 resp = pubnub_pam.revoke(channel=channel, auth_key=auth_key) print resp assert resp == { 'message': u'Success', 'payload': {u'auths': {auth_key : {u'r': 0, u'w': 0, 'm' : 0}}, u'subscribe_key': u'pam', u'level': u'user', u'channel': channel, u'ttl': 1} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} # Complete flow , try publish on forbidden channel, grant permission channel level for subkey and try again. ( Sync Mode) # then revoke and try again def test_10(): channel = "test_10-" + str(time.time()) message = "Hello World" auth_key = "auth-" + channel pubnub_pam.set_auth_key(auth_key) resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} resp = pubnub_pam.grant(channel=channel, read=True, write=True, ttl=10) print resp assert resp == { 'message': u'Success', 'payload': { u'channels': {channel: {u'r': 1, u'w': 1, 'm' : 0}}, u'subscribe_key': u'pam', u'level': u'channel', u'ttl': 10} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp[0] == 1 resp = pubnub_pam.revoke(channel=channel) print resp assert resp == { 'message': u'Success', 'payload': { u'channels': {channel : {u'r': 0, u'w': 0, 'm' : 0}}, u'subscribe_key': u'pam', u'level': u'channel', u'ttl': 1} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} # Complete flow , try publish on forbidden channel, grant permission subkey level for subkey and try again. ( Sync Mode) # then revoke and try again def test_11(): channel = "test_11-" + str(time.time()) message = "Hello World" auth_key = "auth-" + channel pubnub_pam.set_auth_key(auth_key) resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]} resp = pubnub_pam.grant(read=True, write=True, ttl=10) print resp assert resp == { 'message': u'Success', 'payload': { u'r': 1, u'w': 1, 'm' : 0, u'subscribe_key': u'pam', u'level': u'subkey', u'ttl': 10} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp[0] == 1 resp = pubnub_pam.revoke() print resp assert resp == { 'message': u'Success', 'payload': {u'r': 0, u'w': 0, 'm' : 0, u'subscribe_key': u'pam', u'level': u'subkey', u'ttl': 1} } resp = pubnub_pam.publish(channel=channel,message=message) assert resp['message'] == 'Forbidden' assert resp['payload'] == {u'channels': [channel]}