GNU Taler Demo Upgrade Checklist

Domains

The checklist uses the demo.taler.net domains. However, the same sandcastle demo can also be hosted at other domains. The same instructions should apply.

Post-upgrade checks

  • Run the headless wallet to check that services are actually working:

    taler-wallet-cli api 'runIntegrationTestV2' '{"exchangeBaseUrl":"https://exchange.demo.taler.net", "corebankApiBaseUrl": "https://bank.demo.taler.net", "merchantBaseUrl": "https://backend.demo.taler.net", "merchantAuthToken":"secret-token:sandbox"}'
    
    

Wallets

We consider the following published wallets to be “production wallets”:

  • Browser: Firefox Add-On Store

  • Browser: Chrome Web Store

  • Android: Google Play

  • Android: F-Droid

  • iOS: Apple Store / Testflight

Basics

  • Visit https://demo.taler.net/ to see if the landing page is displayed correctly

  • landing language switcher

  • Visit the wallet installation page, install the wallet

  • see if the wallet presence indicator is updated correctly (in browsers).

  • Visit https://bank.demo.taler.net/, register a new user

  • bank language switcher

  • bank logout

  • bank login

  • bank-integrated withdraw process, abort in bank

  • transaction history: delete pending withdraw

  • do bank-integrated withdraw process (5 KUDOS)

  • do wallet-initiated withdraw process (5 KUDOS)

  • withdraw process of large amount (20 KUDOS) runs into KYC check

  • fail KYC check (if possible for the given setup)

  • pass KYC check (tests that 2nd attempt is possible)

  • withdraw process of very large amount (50 KUDOS) runs into AML check

  • visit exchange SPA, create AML officer key

  • register AML officer key with offline tool (if possible)

  • allow withdraw process blocked on AML to proceed (if possible)

Exchange AML SPA

  • enter non-trivial form, change status to frozen

  • check account status in history is now frozen and shows in that category

  • enter another form, change status to normal, increase AML threshold

  • view forms in history, view previously submitted form

  • check account status in history is now normal and shows in that category

  • log out

  • check log in succeeds with correct password

  • check log in fails from different browser with same password

Blog demo

  • Visit https://shop.demo.taler.net/

  • blog page article list renders

  • payment for blog article

  • Verify that the balance in the wallet was updated correctly.

  • Go back to https://shop.demo.taler.net/ and click on the same article link. Verify that the article is shown and no repeated payment is requested.

  • Open the fulfillment page from the previous step in an anonymous browsing session (without the wallet installed) and verify that it requests a payment again.

  • Delete cookies on https://shop.demo.taler.net/ and click on the same article again. Verify that the wallet detects that the article has already purchased and successfully redirects to the article without spending more money.

  • payment for other blog article

  • refund of 2nd blog article (button at the end)

  • wallet transaction history rendering

  • delete refund history entry; check original purchase entry was also deleted

  • payment for other blog article

  • refund of 3rd blog article (button at the end)

  • wallet transaction history rendering

  • delete 3rd block purchase history entry; check refund entry was also deleted

Donation demo

  • Reset wallet

  • Withdraw age-restricted coins (< 14)

  • Try to make a donation on https://donations.demo.taler.net/, fail due to age-restriction

  • Withdraw age-restricted coins (>= 14)

  • Make a donation on https://donations.demo.taler.net/

  • Make another donation with the same parameters and verify that the payment is requested again, instead of showing the previous fulfillment page.

Merchant SPA

  • test SPA loads

  • try to login with wrong password

  • try to login with correct password

  • create instance, check default is set to cover (STEFAN) fees

  • modify instance

  • add bank account

  • edit bank account

  • remove bank account

  • check order creation fails without bank account

  • add bank account again

  • add product with 1 in stock and preview image

  • add “advanced” order with inventory product and a 2 minute wire delay

  • claim order, check available stock goes down in inventory

  • create 2nd order, check this fails due to missing inventory

  • pay for 1st order with wallet

  • check transaction history for preview image

  • trigger partial refund

  • accept refund with wallet

  • create template with fixed summary, default editable price

  • scan template QR code, edit price and pay

  • add TOTP device (using some TOTP app to share secret with)

  • edit template to add TOTP device, set price to fixed, summary to be entered

  • scan template QR code, edit summary and pay

  • check displayed TOTP code matches TOTP app

  • do manual wire transfer in bank to establish reserve funding

  • check that partially refunded order is marked as awaiting wire transfer

  • check bank wired funds to merchant (if needed, wait)

  • add bank wire transfer manually to backend

  • change settings for merchant to not pay for (STEFAN) fees

  • create and pay for another order with 1 minute wire transfer delay

  • edit bank account details, adding revenue facade with credentials

  • wait and check if wire transfer is automatically imported

  • check that orders are marked as completed

P2P payments

  • generating push payment (to self is OK)

  • accepting push payment (from self is OK)

  • generating pull payment (to self is OK)

  • accepting pull payment (from self is OK)

  • sending money back from wallet to bank account

  • wallet transaction history rendering

  • delete history entry

Shutdown

  • create two full wallets, fill one only via (a large) P2P transfer

  • revoke highest-value denomination

  • spend money in a wallet such that the balance falls below highest denomination value

  • revoke all remaining denominations

  • fail to spend any more money

  • if wallet was filled via p2p payments, wallet asks for target deposit account (exchange going out of business)

  • enter bank account (if possible)

  • wallet balance goes to zero

  • specified bank account receives remaining balance