def on_message(client: mqtt.Client, userdata, msg: mqtt.MQTTMessage):
    ack: AckMessage = AckMessage.from_json(msg.payload)
    tokens = msg.topic.split('/')
    session_id = tokens[1]

    if ack.status == Status.NEW:
        new_ack = AckMessage(txid=ack.txid,
                             status=Status.PENDING,
                             transaction_currency="NANO",
                             transaction_hash="B50DB45966850AD4B11ECFDD8AE0A7AD97DF74864631D8C1495E46DDDFC1802A")
        logging.info("Waiting...")

        time.sleep(WAITING_INTERVAL)

        logging.info("Sending first ack...")

        client.publish("acks/{}".format(session_id), new_ack.to_json())

        new_ack.status = Status.PAID

        logging.info("Waiting...")

        def pub_second_ack():
            logging.info("Sending second ack...")
            client.publish("acks/{}".format(session_id), new_ack.to_json())

        t = Timer(WAITING_INTERVAL, pub_second_ack)
        t.start()
async def test_on_ack(mock_mqtt):
    wallet = Wallet.factory("manta://localhost:8000/123")

    expected = AckMessage(txid="0", transaction_hash="myhash", status=Status.PENDING)

    mock_mqtt.push("acks/123", expected.to_json())

    ack_message = await wallet.acks.get()

    assert ack_message == expected
Beispiel #3
0
def reply(topic, payload):
    order = MerchantOrderRequestMessage.from_json(payload)
    tokens = topic.split("/")
    device = tokens[1]

    r = AckMessage(txid="0",
                   status=Status.NEW,
                   url="manta://testpp.com/{}".format(order.session_id))

    return "acks/{}".format(device), r.to_json()
Beispiel #4
0
async def test_ack(mock_mqtt):
    store = Store('device1')
    ack_message: AckMessage = None

    expected_ack = AckMessage(txid='1234',
                              transaction_hash="hash_1234",
                              status=Status.PENDING)

    mock_mqtt.push('acks/123', expected_ack.to_json())

    ack_message = await store.acks.get()
    assert expected_ack == ack_message
Beispiel #5
0
    def se(topic, payload):
        nonlocal mock_mqtt

        if topic == "merchant_order_request/device1":
            order = MerchantOrderRequestMessage.from_json(payload)
            reply = AckMessage(status=Status.NEW,
                               url="manta://testpp.com/{}".format(
                                   order.session_id),
                               txid="0")

            topic = "acks/{}".format(order.session_id)

            mock_mqtt.push(topic, reply.to_json())