Skip to content

Commit

Permalink
Ngutech21-fix-get-quote-api (#397)
Browse files Browse the repository at this point in the history
* fix: v1 mint-quote api in router

* fix get mint quote

* test new endpoints

---------

Co-authored-by: ngutech21 <[email protected]>
  • Loading branch information
callebtc and ngutech21 authored Jan 24, 2024
1 parent 2645eb5 commit b307c4d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
12 changes: 6 additions & 6 deletions cashu/mint/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ async def mint_quote(payload: PostMintQuoteRequest) -> PostMintQuoteResponse:


@router.get(
"/v1/mint/quote/{quote}",
"/v1/mint/quote/bolt11/{quote}",
summary="Get mint quote",
response_model=PostMintQuoteResponse,
response_description="Get an existing mint quote to check its status.",
Expand All @@ -199,15 +199,15 @@ async def get_mint_quote(quote: str) -> PostMintQuoteResponse:
"""
Get mint quote state.
"""
logger.trace(f"> POST /v1/mint/quote/{quote}")
logger.trace(f"> GET /v1/mint/quote/bolt11/{quote}")
mint_quote = await ledger.get_mint_quote(quote)
resp = PostMintQuoteResponse(
quote=mint_quote.quote,
request=mint_quote.request,
paid=mint_quote.paid,
expiry=mint_quote.expiry,
)
logger.trace(f"< POST /v1/mint/quote/{quote}")
logger.trace(f"< GET /v1/mint/quote/bolt11/{quote}")
return resp


Expand Down Expand Up @@ -253,7 +253,7 @@ async def get_melt_quote(payload: PostMeltQuoteRequest) -> PostMeltQuoteResponse


@router.get(
"/v1/melt/quote/{quote}",
"/v1/melt/quote/bolt11/{quote}",
summary="Get melt quote",
response_model=PostMeltQuoteResponse,
response_description="Get an existing melt quote to check its status.",
Expand All @@ -262,15 +262,15 @@ async def melt_quote(quote: str) -> PostMeltQuoteResponse:
"""
Get melt quote state.
"""
logger.trace(f"> POST /v1/melt/quote/{quote}")
logger.trace(f"> GET /v1/melt/quote/bolt11/{quote}")
melt_quote = await ledger.get_melt_quote(quote)
resp = PostMeltQuoteResponse(
quote=melt_quote.quote,
amount=melt_quote.amount,
fee_reserve=melt_quote.fee_reserve,
paid=melt_quote.paid,
)
logger.trace(f"< POST /v1/melt/quote/{quote}")
logger.trace(f"< GET /v1/melt/quote/bolt11/{quote}")
return resp


Expand Down
16 changes: 16 additions & 0 deletions tests/test_mint_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@ async def test_mint_quote(ledger: Ledger):
invoice = bolt11.decode(result["request"])
assert invoice.amount_msat == 100 * 1000

# get mint quote again from api
response = httpx.get(
f"{BASE_URL}/v1/mint/quote/bolt11/{result['quote']}",
)
assert response.status_code == 200, f"{response.url} {response.status_code}"
result2 = response.json()
assert result2["quote"] == result["quote"]


@pytest.mark.asyncio
@pytest.mark.skipif(
Expand Down Expand Up @@ -236,6 +244,14 @@ async def test_melt_quote_internal(ledger: Ledger, wallet: Wallet):
# TODO: internal invoice, fee should be 0
assert result["fee_reserve"] == 0

# get melt quote again from api
response = httpx.get(
f"{BASE_URL}/v1/melt/quote/bolt11/{result['quote']}",
)
assert response.status_code == 200, f"{response.url} {response.status_code}"
result2 = response.json()
assert result2["quote"] == result["quote"]


@pytest.mark.asyncio
@pytest.mark.skipif(
Expand Down

0 comments on commit b307c4d

Please sign in to comment.