def test_send_payload_doesnt_log_token(): conn = GatewayConnection(wslib=MockWebsocket, logging=MockLogger) conn.open() identify_payload = '{"op": 2, "d": {"token": "SENSITIVE_INFO", "properties": {"$os": "linux", "$browser": "Charlotte", "$device": "Charlotte"}}, "s": null, "t": null}' def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( identify_payload) conn.ws.send = send payload = Payload.from_packet(identify_payload) conn.send_payload(payload) resume_payload = '{"op": 6, "d": {"token": "SENSITIVE_INFO", "properties": {"$os": "linux", "$browser": "Charlotte", "$device": "Charlotte"}}, "s": null, "t": null}' def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( resume_payload) conn.ws.send = send payload = Payload.from_packet(resume_payload) conn.send_payload(payload)
def test_store(db): # Test non-existant member packet = ' {"t":"MESSAGE_CREATE","s":6,"op":0,"d":{"type":0,"tts":false,"timestamp":"2019-01-12T02:05:59.275000+00:00","pinned":false,"nonce":"533466598925664256","mentions":[],"mention_roles":[],"mention_everyone":false,"member":{"roles":[],"mute":false,"joined_at":"2018-12-14T14:18:16.822000+00:00","deaf":false},"id":"533466644060831764","embeds":[],"edited_timestamp":null,"content":"hello there","channel_id":"523141683379175426","author":{"username":"******","id":"181098168266653698","discriminator":"5175","avatar":"7625f24396b5fad487d5b90d36315032"},"attachments":[],"guild_id":"523141683379175424"}}' payload = Payload.from_packet(packet) message = Message.from_payload(payload) store(message, db) # Test existing member packet = ' {"t":"MESSAGE_CREATE","s":6,"op":0,"d":{"type":0,"tts":false,"timestamp":"2019-01-12T02:05:59.275000+00:00","pinned":false,"nonce":"533466598925664256","mentions":[],"mention_roles":[],"mention_everyone":false,"member":{"roles":[],"mute":false,"joined_at":"2018-12-14T14:18:16.822000+00:00","deaf":false},"id":"533466644060831764","embeds":[],"edited_timestamp":null,"content":"hello there","channel_id":"523141683379175426","author":{"username":"******","id":"181098168266653698","discriminator":"5175","avatar":"7625f24396b5fad487d5b90d36315032"},"attachments":[],"guild_id":"523141683379175424"}}' payload = Payload.from_packet(packet) message = Message.from_payload(payload) store(message, db)
def test_identify(): identify_payload = Payload.Identify("my_token", "linux", "Charlotte") assert identify_payload == Payload.IDENTIFY assert identify_payload.data["token"] == "my_token" assert identify_payload.data["properties"]["$os"] == "linux" assert identify_payload.data["properties"]["$browser"] == "Charlotte" assert identify_payload.data["properties"]["$device"] == "Charlotte"
def lambda_handler(event): http = urllib3.PoolManager() e = JiraEvent(event) payload = Payload('JIRA', e) url = CONFIG["discordWarningWebhookUrl"] if not e.is_handled( ) else CONFIG["discordWebhookUrl"] if e.is_ignored(): return { "isBase64Encoded": False, "statusCode": 200, "headers": { "headerName": "headerValue" }, "body": {"ignored"} } r = http.request('POST', '' if CONFIG["doNotSend"] else url, headers={"Content-type": "application/json"}, body=json.dumps(payload.data).encode("utf-8")) return { "isBase64Encoded": False, "statusCode": r.status, "headers": { "headerName": "headerValue" }, "body": r.data.decode("utf-8") }
def test_top(db): packet = '{"t":"MESSAGE_CREATE","s":5,"op":0,"d":{"type":0,"tts":false,"timestamp":"2019-01-12T01:42:21.512000+00:00","pinned":false,"nonce":"533460652941901824","mentions":[],"mention_roles":[],"mention_everyone":false,"member":{"roles":[],"mute":false,"joined_at":"2018-12-14T14:18:16.822000+00:00","deaf":false},"id":"533460697531809803","embeds":[],"edited_timestamp":null,"content":"!c/top/9","channel_id":"523141683379175426","author":{"username":"******","id":"181098168266653698","discriminator":"5175","avatar":"7625f24396b5fad487d5b90d36315032"},"attachments":[],"guild_id":"523141683379175424"}}' payload = Payload.from_packet(packet) message = Message.from_payload(payload) top(message, db, 5)
def receive_payload(self): assert self.connected, "Attempting to recv payloads before connecting." if self.payload_id >= len(self.payloads): raise DisconnectionException() payload = self.payloads[self.payload_id] payload = Payload.from_packet(payload) self.payload_id += 1 return payload
def test_create_payload_from_packet(): PAYLOAD = '{"t":null,"s":null,"op":10,"d":{"heartbeat_interval":41250,"_trace":["gateway-prd-main-bwx0"]}}' payload = Payload.from_packet(PAYLOAD) assert payload.opcode == 10 assert payload.seq_number == None assert payload.data == { "heartbeat_interval": 41250, "_trace": ["gateway-prd-main-bwx0"] } assert payload.event_name == None PAYLOAD = '{"t":"GATEWAY_EVENT_NAME","s":42,"op":0,"d":{}}' payload = Payload.from_packet(PAYLOAD) assert payload.opcode == 0 assert payload.seq_number == 42 assert payload.data == {} assert payload.event_name == "GATEWAY_EVENT_NAME"
def test_process_payload_heartbeat_request(): message_queue = queue.Queue() gw = Gateway("SENSITIVE_INFO_TOKEN", message_queue, MockConnection) connection = MockConnection() connection.open() heartbeat_req = '{"t":null,"s":null,"op":1,"d":null}' heartbeat_req = Payload.from_packet(heartbeat_req) gw.process_payload(heartbeat_req, connection) assert connection.last_payload_sent == Payload.HEARTBEAT
def test_process_payload_message(): message_queue = queue.Queue() gw = Gateway("SENSITIVE_INFO_TOKEN", message_queue, MockConnection) connection = MockConnection() connection.open() message = '{"t":"MESSAGE_CREATE","s":13,"op":0,"d":{"type":0,"tts":false,"timestamp":"2018-12-14T14:24:37.826000+00:00","pinned":false,"nonce":"523143245568409600","mentions":[],"mention_roles":[],"mention_everyone":false,"member":{"roles":[],"mute":false,"joined_at":"2018-12-14T14:18:16.822000+00:00","deaf":false},"id":"523143281433903104","embeds":[],"edited_timestamp":null,"content":"qesdfzsezfsf","channel_id":"523141683379175426","author":{"username":"******","id":"181098168266653698","discriminator":"5175","avatar":"7625f24396b5fad487d5b90d36315032"},"attachments":[],"guild_id":"523141683379175424"}}' message = Payload.from_packet(message) gw.process_payload(message, connection) added = message_queue.get() assert added.content == "qesdfzsezfsf"
def test_process_payload_heartbeat_ack(): message_queue = queue.Queue() gw = Gateway("SENSITIVE_INFO_TOKEN", message_queue, MockConnection) connection = MockConnection() connection.open() heartbeat_ack = '{"t":null,"s":null,"op":11,"d":null}' heartbeat_ack = Payload.from_packet(heartbeat_ack) gw.process_payload(heartbeat_ack, connection) epsilon = 0.01 assert abs(gw.last_ack - time.time()) < epsilon
def test_send_payload_success(): conn = GatewayConnection(wslib=MockWebsocket) conn.open() hello_payload = '{"t":"hello1","s":3,"op":10,"d":{"heartbeat_interval":41250,"_trace":["gateway-prd-main-jptr"]}}' def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( hello_payload) conn.ws.send = send payload = Payload.from_packet(hello_payload) conn.send_payload(payload)
def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( resume_payload)
def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( identify_payload)
def send(packet): assert Payload.from_packet(packet) == Payload.from_packet( hello_payload)
def test_resume(): resume_payload = Payload.Resume("my_token", "session_id", 21) assert resume_payload == Payload.RESUME assert resume_payload.data["token"] == "my_token" assert resume_payload.data["session_id"] == "session_id" assert resume_payload.data["seq"] == 21
def test_equality_operator(): payload = Payload(opcode=10, data={"hello": "world"}, seq_number=20, event_name="Hello") assert payload == 10 assert payload != 11 payload2 = Payload(opcode=10, data={"hello": "world"}, seq_number=20, event_name="Hello") assert payload2 == payload payload2.opcode = 11 assert payload2 != payload payload2.opcode = payload.opcode payload2.seq_number = 21 assert payload2 != payload payload2.seq_number = payload.seq_number payload2.event_name = "Not Hello" assert payload2 != payload payload2.event_name = payload.event_name payload2.data = {"hello": "not world"} assert payload2 != payload payload2.data = payload.data assert payload2 == payload assert payload != "ksldfe"