packages feed

electrs-client-0.1.0.0: test/RpcSpec.hs

module RpcSpec
  ( spec,
  )
where

import ElectrsClient.Data.Env
import ElectrsClient.Helper
import ElectrsClient.Import.External
import ElectrsClient.Rpc as Rpc
import ElectrsClient.Type
import Network.Bitcoin
import Test.Hspec

spec :: Spec
spec = do
  it "Version" $ do
    rc <- liftIO readRawConfig
    let env = rawConfigElectrsEnv rc
    ver <- Rpc.version env ()
    ver `shouldSatisfy` isRight
  it "Get Balance" $ do
    elecBal <- do
      rc <- liftIO readRawConfig
      let env = rawConfigElectrsEnv rc
      let btcdEnv = rawConfigBtcEnv rc
      btcClient <-
        liftIO $
          getClient
            (unpack . bitcoindEnvHost $ btcdEnv)
            (encodeUtf8 . bitcoindEnvUsername $ btcdEnv)
            (encodeUtf8 . bitcoindEnvPassword $ btcdEnv)
      addr <- liftIO $ getNewAddress btcClient Nothing
      _ <- liftIO $ generateToAddress btcClient 3 addr Nothing
      _ <- runExceptT $ waitTillLastBlockProcessedT btcClient env 100
      Rpc.getBalance env btcdEnv (Left $ OnChainAddress addr)
    elecBal `shouldSatisfy` isRight
    case elecBal of
      Right bal -> confirmed bal `shouldSatisfy` (> 0)
      Left _ -> error "Error getting balance"