Skip to content

Commit

Permalink
add integration test for utxo statistics - part 1
Browse files Browse the repository at this point in the history
  • Loading branch information
paweljakubas committed Feb 6, 2023
1 parent 8e993eb commit 21c32f2
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 34 deletions.
5 changes: 2 additions & 3 deletions lib/wallet/api/http/Cardano/Wallet/Api/Link.hs
Expand Up @@ -234,16 +234,15 @@ getWallet w = discriminate @style

getUTxOsStatistics
:: forall (style :: WalletStyle) w.
( HasCallStack
, Discriminate style
( Discriminate style
, HasType (ApiT WalletId) w
)
=> w
-> (Method, Text)
getUTxOsStatistics w = discriminate @style
(endpoint @Api.GetUTxOsStatistics (wid &))
(endpoint @Api.GetByronUTxOsStatistics (wid &))
(notSupported "Shared")
(endpoint @Api.GetUTxOsStatisticsShared (wid &))
where
wid = w ^. typed @(ApiT WalletId)

Expand Down
38 changes: 38 additions & 0 deletions lib/wallet/integration/src/Test/Integration/Framework/DSL.hs
Expand Up @@ -84,6 +84,7 @@ module Test.Integration.Framework.DSL
, emptyWalletAndMnemonicWith
, emptyByronWalletFromXPrvWith
, rewardWallet
, emptySharedWallet
, postSharedWallet
, deleteSharedWallet
, getSharedWallet
Expand Down Expand Up @@ -372,6 +373,8 @@ import Data.Aeson.QQ
( aesonQQ )
import Data.ByteString
( ByteString )
import Data.Either.Combinators
( swapEither )
import Data.Either.Extra
( eitherToMaybe )
import Data.Foldable
Expand Down Expand Up @@ -1624,6 +1627,41 @@ fixtureMultiAssetIcarusWallet ctx = do
]
return (getFromResponse id rb)

emptySharedWallet
:: forall m. MonadUnliftIO m
=> Context
-> ResourceT m ApiSharedWallet
emptySharedWallet ctx = do
m15txt <- liftIO $ genMnemonics M15
m12txt <- liftIO $ genMnemonics M12
let (Right m15) = mkSomeMnemonic @'[ 15 ] m15txt
let (Right m12) = mkSomeMnemonic @'[ 12 ] m12txt
let passphrase = Passphrase $
BA.convert $ T.encodeUtf8 fixturePassphrase
let index = 30
let accXPubDerived =
sharedAccPubKeyFromMnemonics m15 (Just m12) index passphrase
let payload = Json [aesonQQ| {
"name": "Shared Wallet",
"mnemonic_sentence": #{m15txt},
"mnemonic_second_factor": #{m12txt},
"passphrase": #{fixturePassphrase},
"account_index": "30H",
"payment_script_template":
{ "cosigners":
{ "cosigner#0": #{accXPubDerived} },
"template":
{ "all":
[ "cosigner#0" ]
}
}
} |]
rPost <- postSharedWallet ctx Default payload
verify (fmap (swapEither . view #wallet) <$> rPost)
[ expectResponseCode HTTP.status201
]
pure $ getFromResponse Prelude.id rPost

postSharedWallet
:: MonadUnliftIO m
=> Context
Expand Down
Expand Up @@ -113,6 +113,7 @@ import Test.Integration.Framework.DSL
, Payload (..)
, decodeErrorInfo
, deleteSharedWallet
, emptySharedWallet
, emptyWallet
, eventually
, expectErrorMessage
Expand Down Expand Up @@ -1721,37 +1722,6 @@ spec = describe "SHARED_TRANSACTIONS" $ do
(`shouldBe` Quantity amt)
]

emptySharedWallet ctx = do
m15txt <- liftIO $ genMnemonics M15
m12txt <- liftIO $ genMnemonics M12
let (Right m15) = mkSomeMnemonic @'[ 15 ] m15txt
let (Right m12) = mkSomeMnemonic @'[ 12 ] m12txt
let passphrase = Passphrase $
BA.convert $ T.encodeUtf8 fixturePassphrase
let index = 30
let accXPubDerived =
sharedAccPubKeyFromMnemonics m15 (Just m12) index passphrase
let payload = Json [json| {
"name": "Shared Wallet",
"mnemonic_sentence": #{m15txt},
"mnemonic_second_factor": #{m12txt},
"passphrase": #{fixturePassphrase},
"account_index": "30H",
"payment_script_template":
{ "cosigners":
{ "cosigner#0": #{accXPubDerived} },
"template":
{ "all":
[ "cosigner#0" ]
}
}
} |]
rPost <- postSharedWallet ctx Default payload
verify (fmap (swapEither . view #wallet) <$> rPost)
[ expectResponseCode HTTP.status201
]
pure $ getFromResponse Prelude.id rPost

fixtureSharedWallet ctx = do
walShared@(ApiSharedWallet (Right wal)) <- emptySharedWallet ctx
fundSharedWallet ctx faucetUtxoAmt (NE.fromList [walShared])
Expand Down
Expand Up @@ -35,6 +35,7 @@ import Cardano.Wallet.Api.Types
, ApiSharedWallet (..)
, ApiT (..)
, ApiTransaction
, ApiUtxoStatistics
, ApiWallet
, DecodeAddress
, DecodeStakeAddress
Expand Down Expand Up @@ -90,12 +91,14 @@ import Test.Integration.Framework.DSL
, bech32Text
, decodeErrorInfo
, deleteSharedWallet
, emptySharedWallet
, eventually
, expectErrorMessage
, expectField
, expectListField
, expectListSize
, expectResponseCode
, expectWalletUTxO
, faucetAmt
, fixturePassphrase
, fixtureWallet
Expand Down Expand Up @@ -1452,6 +1455,15 @@ spec = describe "SHARED_WALLETS" $ do
, expectField (traverse . #balance . #available)
(`shouldBe` Quantity amt)
]

it "SHARED_WALLETS_UTXO_01 - \
\Wallet's inactivity is reflected in utxo"$ \ctx -> runResourceT $ do
(ApiSharedWallet (Right w)) <- emptySharedWallet ctx
rStat <- request @ApiUtxoStatistics ctx
(Link.getUTxOsStatistics @'Shared w) Default Empty
expectResponseCode HTTP.status200 rStat
expectWalletUTxO [] (snd rStat)

where
acctHrp = [Bech32.humanReadablePart|acct_shared_xvk|]
getAccountWallet name = do
Expand Down

0 comments on commit 21c32f2

Please sign in to comment.