mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-15 12:50:47 +02:00
Get sent payments working in test (#299)
This commit is contained in:
parent
a8ef9bc8b4
commit
e834547cf6
6 changed files with 120 additions and 2 deletions
|
|
@ -880,3 +880,10 @@ def test_connect_other_node(server_stub, admin_stub, other_server_stub, other_ad
|
|||
get_squeak_display_response.squeak_display_entry.content_str
|
||||
== "Hello from the profile on the server!"
|
||||
)
|
||||
|
||||
# Get all sent payments
|
||||
get_sent_payments_response = other_admin_stub.GetSentPayments(
|
||||
squeak_admin_pb2.GetSentPaymentsRequest(),
|
||||
)
|
||||
squeak_hashes = [sent_payment.squeak_hash for sent_payment in get_sent_payments_response.sent_payments]
|
||||
assert saved_squeak_hash.hex() in squeak_hashes
|
||||
|
|
|
|||
|
|
@ -164,6 +164,10 @@ service SqueakAdmin {
|
|||
*/
|
||||
rpc PayOffer (PayOfferRequest) returns (PayOfferReply) {}
|
||||
|
||||
/** sqkadmin: `getsentpayments`
|
||||
*/
|
||||
rpc GetSentPayments (GetSentPaymentsRequest) returns (GetSentPaymentsReply) {}
|
||||
|
||||
}
|
||||
|
||||
message CreateSigningProfileRequest {
|
||||
|
|
@ -539,3 +543,50 @@ message PayOfferReply {
|
|||
/// Sent payment id
|
||||
int32 sent_payment_id = 1;
|
||||
}
|
||||
|
||||
message GetSentPaymentsRequest {
|
||||
}
|
||||
|
||||
message GetSentPaymentsReply {
|
||||
/// The sent payments
|
||||
repeated SentPayment sent_payments = 1;
|
||||
}
|
||||
|
||||
// message GetSentPaymentRequest {
|
||||
// /// Sent payment id
|
||||
// int32 sent_payment_id = 1;
|
||||
// }
|
||||
|
||||
// message GetSentPaymentReply {
|
||||
// /// The sent payment
|
||||
// SentPayment sent_payment = 1;
|
||||
// }
|
||||
|
||||
message SentPayment {
|
||||
/// The sent payment id
|
||||
int32 sent_payment_id = 1;
|
||||
|
||||
/// The offer id
|
||||
int32 offer_id = 2;
|
||||
|
||||
/// The peer id
|
||||
int32 peer_id = 3;
|
||||
|
||||
/// The squeak hash
|
||||
string squeak_hash = 4;
|
||||
|
||||
/// The preimage hash
|
||||
string preimage_hash = 5;
|
||||
|
||||
/// The preimage
|
||||
string preimage = 6;
|
||||
|
||||
/// The amount
|
||||
int64 amount = 7;
|
||||
|
||||
/// The seller node pubkey
|
||||
string node_pubkey = 8;
|
||||
|
||||
/// Valid preimage
|
||||
bool preimage_is_valid = 9;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -284,3 +284,7 @@ class SqueakAdminServerHandler(object):
|
|||
def handle_pay_offer(self, offer_id):
|
||||
logger.info("Handle pay offer for offer id: {}".format(offer_id))
|
||||
return self.squeak_node.pay_offer(offer_id)
|
||||
|
||||
def handle_get_sent_payments(self):
|
||||
logger.info("Handle get sent payments")
|
||||
return self.squeak_node.get_sent_payments()
|
||||
|
|
|
|||
|
|
@ -304,6 +304,19 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer):
|
|||
sent_payment_id=sent_payment_id,
|
||||
)
|
||||
|
||||
def GetSentPayments(self, request, context):
|
||||
sent_payments = self.handler.handle_get_sent_payments()
|
||||
sent_payment_msgs = [self._sent_payment_to_message(sent_payment) for sent_payment in sent_payments]
|
||||
logger.info("Returning sent payments: {}".format(sent_payment_msgs))
|
||||
return squeak_admin_pb2.GetSentPaymentsReply(
|
||||
sent_payments=sent_payment_msgs,
|
||||
)
|
||||
|
||||
# def GetSentPayment(self, request, context):
|
||||
# return squeak_admin_pb2.GetSentPaymentReply(
|
||||
# sent_payment=None,
|
||||
# )
|
||||
|
||||
def _squeak_entry_to_message(self, squeak_entry_with_profile):
|
||||
if squeak_entry_with_profile is None:
|
||||
return None
|
||||
|
|
@ -374,6 +387,22 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer):
|
|||
invoice_expiry=offer.invoice_expiry,
|
||||
)
|
||||
|
||||
def _sent_payment_to_message(self, sent_payment):
|
||||
if sent_payment is None:
|
||||
return None
|
||||
logger.info("sent_payment: {}".format(sent_payment))
|
||||
return squeak_admin_pb2.SentPayment(
|
||||
sent_payment_id=sent_payment.sent_payment_id,
|
||||
offer_id=sent_payment.offer_id,
|
||||
peer_id=sent_payment.peer_id,
|
||||
squeak_hash=sent_payment.squeak_hash,
|
||||
preimage_hash=sent_payment.preimage_hash,
|
||||
preimage=sent_payment.preimage,
|
||||
amount=sent_payment.amount,
|
||||
node_pubkey=sent_payment.node_pubkey,
|
||||
preimage_is_valid=sent_payment.preimage_is_valid,
|
||||
)
|
||||
|
||||
def serve(self):
|
||||
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
|
||||
squeak_admin_pb2_grpc.add_SqueakAdminServicer_to_server(self, server)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ from squeakserver.core.squeak_entry import SqueakEntry
|
|||
from squeakserver.core.squeak_entry_with_profile import SqueakEntryWithProfile
|
||||
from squeakserver.server.squeak_peer import SqueakPeer
|
||||
from squeakserver.server.squeak_profile import SqueakProfile
|
||||
from squeakserver.server.sent_payment import SentPayment
|
||||
from squeakserver.server.util import get_hash
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -1003,6 +1004,15 @@ class SqueakDb:
|
|||
sent_payment_id = res.inserted_primary_key[0]
|
||||
return sent_payment_id
|
||||
|
||||
def get_sent_payments(self):
|
||||
""" Get all sent payments. """
|
||||
s = select([self.sent_payments])
|
||||
with self.get_connection() as connection:
|
||||
result = connection.execute(s)
|
||||
rows = result.fetchall()
|
||||
sent_payments = [self._parse_sent_payment(row) for row in rows]
|
||||
return sent_payments
|
||||
|
||||
def _parse_squeak_entry(self, row):
|
||||
if row is None:
|
||||
return None
|
||||
|
|
@ -1101,3 +1111,18 @@ class SqueakDb:
|
|||
offer=offer,
|
||||
peer=peer,
|
||||
)
|
||||
|
||||
def _parse_sent_payment(self, row):
|
||||
if row is None:
|
||||
return None
|
||||
return SentPayment(
|
||||
sent_payment_id=row["sent_payment_id"],
|
||||
offer_id=row["offer_id"],
|
||||
peer_id=row["peer_id"],
|
||||
squeak_hash=row["squeak_hash"],
|
||||
preimage_hash=row["preimage_hash"],
|
||||
preimage=row["preimage"],
|
||||
amount=row["amount"],
|
||||
node_pubkey=row["node_pubkey"],
|
||||
preimage_is_valid=row["preimage_is_valid"],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ class SqueakNode:
|
|||
peer_id=offer.peer_id,
|
||||
squeak_hash=offer.squeak_hash,
|
||||
preimage_hash=offer.payment_hash,
|
||||
preimage=preimage,
|
||||
preimage=preimage.hex(),
|
||||
amount=offer.price_msat,
|
||||
node_pubkey=offer.destination,
|
||||
preimage_is_valid=is_valid_preimage,
|
||||
|
|
@ -322,6 +322,8 @@ class SqueakNode:
|
|||
serialized_decryption_key,
|
||||
)
|
||||
|
||||
|
||||
def sync_squeaks(self):
|
||||
self.squeak_peer_sync_worker.sync_peers()
|
||||
|
||||
def get_sent_payments(self):
|
||||
return self.postgres_db.get_sent_payments()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue