Beispiel #1
0
    def test_shh_async_filter(self, web3: "Web3") -> None:
        received_messages: List[ShhMessage] = []

        sender = web3.parity.shh.new_key_pair()
        sender_pub = web3.parity.shh.get_public_key(sender)

        receiver = web3.parity.shh.new_key_pair()
        receiver_pub = web3.parity.shh.get_public_key(receiver)

        topic = '0x13370000'
        payloads = [
            web3.toHex(text="test message :)"),
            web3.toHex(text="2nd test message")
        ]

        shh_filter_id = web3.parity.shh.new_message_filter({
            'decryptWith': receiver,
            'from': sender_pub,
            'topics': [topic]
        })
        shh_filter = ShhFilter(web3, shh_filter_id, poll_interval=0.5)
        watcher = shh_filter.watch(received_messages.extend)

        web3.parity.shh.post({
            'from': sender,
            'payload': payloads[0],
            'topics': [topic],
            'to': {
                'public': receiver_pub
            },
            'priority': 1000,
            'ttl': 100,
        })
        time.sleep(1)

        web3.parity.shh.post({
            'from': sender,
            'payload': payloads[1],
            'topics': [topic],
            'to': {
                'identity': receiver
            },
            'priority': 1000,
            'ttl': 100,
        })
        time.sleep(1)

        assert len(received_messages) == 1

        message = received_messages[0]

        assert message["payload"] == HexBytes(payloads[0])
        assert message["topic"] == HexBytes(topic)

        watcher.stop()
Beispiel #2
0
    def test_shh_async_filter_deprecated(self, web3: "Web3") -> None:
        received_messages: List[ShhMessage] = []

        with pytest.warns(DeprecationWarning) as warnings:
            info = web3.geth.shh.info()
            sender = web3.geth.shh.newKeyPair()
            sender_pub = web3.geth.shh.getPublicKey(sender)

            receiver = web3.geth.shh.newKeyPair()
            receiver_pub = web3.geth.shh.getPublicKey(receiver)

            topic = HexStr('0x13370000')
            payloads = [
                web3.toHex(text="test message :)"),
                web3.toHex(text="2nd test message")
            ]

            shh_filter_id = web3.geth.shh.newMessageFilter({
                'privateKeyID': receiver,
                'sig': sender_pub,
                'topics': [topic]
            })

            shh_filter = ShhFilter(web3, shh_filter_id, poll_interval=0.5)
            watcher = shh_filter.watch(received_messages.extend)

            web3.geth.shh.post({
                'sig': sender,
                'powTarget': info['minPow'],
                'powTime': 2,
                'payload': payloads[0],
                'topic': topic,
                'pubKey': receiver_pub
            })
            time.sleep(1)

            web3.geth.shh.post({
                'sig': sender,
                'powTarget': info['minPow'],
                'powTime': 2,
                'payload': payloads[1],
                'pubKey': receiver_pub
            })
            time.sleep(1)

            assert len(received_messages) == 1
            assert len(warnings) == 5

            message = received_messages[0]

            assert message["payload"] == HexBytes(payloads[0])
            assert message["topic"] == HexBytes(topic)

            watcher.stop()
Beispiel #3
0
    def test_shh_async_filter(self, web3: "Web3") -> None:
        received_messages: List[ShhMessage] = []

        sender = web3.geth.shh.new_key_pair()
        sender_pub = web3.geth.shh.get_public_key(sender)
        receiver = web3.geth.shh.new_key_pair()
        receiver_pub = web3.geth.shh.get_public_key(receiver)

        topic = '0x13370000'
        payloads = [
            web3.toHex(text="test message :)"),
            web3.toHex(text="2nd test message")
        ]

        shh_filter_id = web3.geth.shh.new_message_filter({
            'privateKeyID': receiver,
            'sig': sender_pub,
            'topics': [topic]
        })

        shh_filter = ShhFilter(web3, shh_filter_id, poll_interval=0.5)
        watcher = shh_filter.watch(received_messages.extend)

        web3.geth.shh.post({
            'sig': sender,
            'powTarget': 2.5,
            'powTime': 2,
            'payload': payloads[0],
            'topic': topic,
            'pubKey': receiver_pub
        })
        time.sleep(1)

        web3.geth.shh.post({
            'sig': sender,
            'powTarget': 2.5,
            'powTime': 2,
            'payload': payloads[1],
            'pubKey': receiver_pub
        })
        time.sleep(1)

        assert len(received_messages) == 1

        message = received_messages[0]

        assert message["payload"] == HexBytes(payloads[0])
        assert message["topic"] == HexBytes(topic)

        watcher.stop()