예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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")
    }
예제 #5
0
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)
예제 #6
0
 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
예제 #7
0
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"
예제 #8
0
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
예제 #9
0
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"
예제 #10
0
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
예제 #11
0
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)
예제 #12
0
 def send(packet):
     assert Payload.from_packet(packet) == Payload.from_packet(
         resume_payload)
예제 #13
0
 def send(packet):
     assert Payload.from_packet(packet) == Payload.from_packet(
         identify_payload)
예제 #14
0
 def send(packet):
     assert Payload.from_packet(packet) == Payload.from_packet(
         hello_payload)
예제 #15
0
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
예제 #16
0
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"