blockbook/bchain/coins/dash/dashrpc_test.go
2018-06-14 17:27:03 +02:00

298 lines
20 KiB
Go

package dash
import (
"blockbook/bchain"
"encoding/hex"
"encoding/json"
"flag"
"fmt"
"reflect"
"testing"
)
var rpcURL = flag.String("rpcURL", "http://blockbook-dev.corp:18033", "RPC URL of backend server")
var rpcUser = flag.String("rpcUser", "rpc", "RPC user of backend server")
var rpcPass = flag.String("rpcPass", "rpc", "RPC password of backend server")
var rpcClient *DashRPC
func getRPCConfig() string {
config := `{
"coin_name": "Dash",
"rpcURL": "%s",
"rpcUser": "%s",
"rpcPass": "%s",
"rpcTimeout": 25,
"parse": true
}`
return fmt.Sprintf(config, *rpcURL, *rpcUser, *rpcPass)
}
func getRPCClient() (*DashRPC, error) {
if rpcClient == nil {
cfg := json.RawMessage(getRPCConfig())
c, err := NewDashRPC(cfg, nil)
if err != nil {
return nil, err
}
cli := c.(*DashRPC)
cli.Parser = NewDashParser(GetChainParams("main"), cli.ChainConfig)
rpcClient = cli
}
return rpcClient, nil
}
const blockHeight = 139521
const blockHash = "000000000296ea05e13b5479f6c041de575eec90759f58f57d311a8918b0af17"
const blockHex = "00000020ef45a540a35144679286a8af8aa7944b698dde61ea5e1f06cf937505000000003aa6e325f4d456f125b68a5fc19a68397b0fc9f33f324f3b69067e95dd844da422521e5be7d3061c0cb7bad71501000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4c030121020422521e5b08fabe6d6d3130343838393564323065633562323330336330376538666136636166326362010000000000000057ffffff010300000d2f6e6f64655374726174756d2f00000000052c8bc310000000001976a914c982406f087057a97456e48d335546ae8d93a03c88aca32c0e43000000001976a91434c32f942cf3e7b81d6ab8b6917235817fa9813888ac2b8bc310000000001976a914c2c29ebc787954ef99d01c5f79115abf7012fb8e88ac2b8bc310000000001976a914d7b47d4b40a23c389f5a17754d7f60f511c7d0ec88ac2b8bc310000000001976a914dc3e0793134b081145ec0c67a9c72a7b297df27c88ac00000000020000000109d37a59b7da8902b8822547c927e35554b16667ffd698daae985c58c71616a4010000006b483045022100f3ef92ae1c8442eff171bd2dbc69373db384c86617032917b3bb2c5cd892bb2702207485cf5f8e6aa9fe245f5708a5c6ec37580c1c35e54429c6b43b322678f54cad012102ba7dbd059cc4f03e9fa4b6007b407279a154a8fc2103241511df155a52b7ea58feffffff02a055e18e170000001976a914e2114cb0a8b5d6f1c3c720f314cbf79e14bb9cdd88ac8cb65df0440000001976a9141ed486862342afd134f96a6cee5ca105801375df88ac0021020002000000017d50060376941a898edaeac3861473de5b2657b28baa470ddaf636b0ff3190fb010000006a473044022003b663185d43a0f347a8359b91497159a94e1e8281a803d286706e5ea5fc512c02203e11e27d203175fc4c22c04f49b2dbfcf90cb0c0ef0d10e54798adc1f33ccf96012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff025e7c7982000000001976a914130c4d66b9ae50d3863a297c7281bd9bc11bb49a88acc06692d1010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac00210200020000000110d8c1402eb9ffdca121dee4fad5436674975e7f40a96d66fe727ede3d3ee632010000006a473044022027ba38cbf5e0f6e0a94a1e9a2a78efd2f3b5e80b85f54bbbd38beb0e65ec991502207369cf2de044b089e1fc756853bfd048d7378e7b682fcfbaac0d2075a0b6939b012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff029ee29e24010000001976a914ac0d571dbffbeebb3c26ce9b118e0a28aba81c2f88ac80006d2f010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001ff06583ae94458b579a49aeba5ab57ac27a4663a60753476799634cd5d64ad4d010000006a47304402202f383e81456b59206b6faead6b83b6ed229e3761d208b0f2a5e6631046e0b7ff022031f89dadb2d7faae8e61dc93d513ac6e28573fe0210de46c2ae18b3c3c887cf8012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff027019cbe6000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888acaec9406d010000001976a914b60b7763d5b321b7fa061494d998eaa0cfd3f0f288ac00210200020000000179fa3df11708289d6a78a8b76eb884adb98931301b7bf5fefc604728e3b3eb6e010000006a473044022074adcf3df1804b8437f1d2b321cdbbd15c76aec0a44aa664420bf247f8706be002200ea08d5acf4bd81589862a3d475e4ea33a7aa15b8871a099d4562e4afcc44784012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02d03e5555000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac4ea4b6fe010000001976a91447d2c0b1e21f2c36d130c3e975cadd3bf6c6ce8288ac00210200020000000169c8effd31ba59a10ad75a6e374d3290f991ecdbbb10d28698a4871def12deb0010000006b483045022100b0e0273c39d81dcdd0bd2492311faca54da084c037656fefc93fd1249f63d3f802201ddbd4bf92e51e40ee7cc59646f38f8dd526f7e25b043dfcbcad3d585933c7b1012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02809f8108010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac9e438a4b010000001976a914c70c6486ed98f72e7c523c296f3991d86e2a7bb588ac002102000200000001a1213c0f47d00a7c93c1b3dd34c886917c59a6318d00676a2b146751155c1577000000006946304302202b04b35b2aaab34cc0dbf285dc3b7b8ad3e1d5c4ffe867b49e9382835b9fd0a3021f2bf807068c6eef2815d541c6d1a3154b0d3724818a281a2ad5d1d74f687411012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff028e7de512000000001976a914313f01738ea31d3fb0bb26ac182975945ca9ef2a88ac90652641020000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001e7cbfc69314e6d6b3944cb34b7ef19993a45e6a59879c18c32cdab88cc4c6a1b010000006b483045022100dc1f84af6da9ca63bd5d92d106a764aa4df4cb37a30f1dbf9d07f8b066ce2818022011f5e729a903a557d2105c3841a62770f43539748f33aa55e4b9dbd6f99f77de012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff026e5355a6000000001976a9146d4f4c6f848a139f89120a5e3e8f92f718c8229d88acb08fb6ad010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001184242c203c4b091944369b9bed727284fe897e2d372ab47885cd7118cfbb3a3010000006b483045022100ddf663d3828c1c98bad65e1fc958e135da0c78b13fb42bc5a0cc6dc1d2a4888d022007e176b4e0a39bd90d3e0edbccd9aae93f6deadd86703686c566e11814154099012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff024e4b8b1f010000001976a9147acc906cdae8955574eaa7fc6366bbc42902a2e188acd0978034010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001e35e955d7765c19d04a699c98e3ed0d1507b6fb86f98e0330091b9612ec9f7df010000006b483045022100d3cc944c0ce021c6a3e2c5cb9284c21fa2a27fb30903e5712c3d4f175f18d9a702203f4281911f033aa5c7b263875111d947e8356505a8720e320c690c656b4d6e0c012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02a01fce76000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac7ec33ddd010000001976a914f75a3de06209430583c23b71669bf5df8c1c643f88ac002102000200000001754bdc58be116c685ea2f539c049ce4c1a38f7dbb8ee458d6b98830e3a2af8e2010000006b483045022100da544fd1c3225ad4402ba16ede27c201a23b637963789f5190c6ad48d68aea8e022065489bab58de50174b1d6458ad7533805fea39122e5b213ef49e5114d8d2ea35012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02ae51aab8000000001976a914cc2586f922dc54d5266ddacca54bf6f350c5287388ac7091619b010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac0021020002000000018fcbd82d4adbf8499450c1fcdd9d56ce11bc2fac6af8e70c3032b5ce02d59884010000006a4730440220451d5e1062e59fd8d5bc9852ca355c37207fbd9ea32a69156ae44d69ebd31f9802204fc26e7bf199c46bda4712b599cd18a1e09ecc2962ef89cd80426e4eb5c29eae012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff021e6ca132000000001976a914b284c168d27529145da7e78c0b07c948170cdacf88ac00776a21020000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001c186468c4a674322f74c32b056848fddd0c9390c20bbf85a9e847f2255ce485b010000006b483045022100aafad4b02781f9a132d42d6d5a9ea3b22fdd67f16bf517c03ddf26be6a90a6a802203b06dc2977cc4b3058b0266a3a3c16ac3b6bdceb72877adb9dbcb9b3b30bd993012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff023e5db50c010000001976a9149173fc4e4834e63e3a01a14ad5ab1b3ed4dd33fe88ace0855647010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac0021020002000000017187e2a6bb7890f5b7ecffdba3590fed709b0b1fdc5fb6d1928be295f3cb9bb2010000006a473044022005b37f92e5ea9cb2180f5ded09ebf4d2f0a8d3f04004ca0683078a5d54180659022057aa8c1024ba21cc39c08d5dd1304a602475113e0ff895dbbb5525dd3508154c012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02d02eb8bb000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac4eb45398010000001976a9147724133db7ec4c4960cfe92b697f226db2ed7d2e88ac0021020002000000010c87c69351a06be7a2e72ac5ca76914fa3acabb0af8bf32905ac43d9703f4b8f010000006b483045022100e64b1d3d9ea80a1ba5bd932a745c8679d824be05842424dd9e64d420c186fc8102206dc3aefa2daa97bb0a432025d0849226b9d79d93b70110852f839589f9bc06a1012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff0250a2d5cd000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888acce403686010000001976a914bda34c000d0970e44b570e3ae99e714fc4e5234988ac002102000200000001b4d10c0b88242ffccd8e4c69189475e699a6341afe754ed12da6dc842d85bd28010000006a4730440220426695c12ebf8f452c25ebd2d3515316b4d490750a864c5d02ca2d3940650cbf02203ab566745846e136ea9f14033508276a992bb4e2d8229733474c33dd4fc6b57a012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff02106b2315010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac0e78e83e010000001976a914549d59ef4d9f68bab8231ebeabe3b1c28c741f5088ac002102000200000001b141ff2096ab524c1c5b1310c63c35fea7b3aee3ddd1cc6b4d63af388a8024a9010000006a473044022035ffb0d2ae5da0532d11f4cf8c4f48ca5e8e3be67961f7765248ab9e28f26c7b02200d3e2d4ae42e744ca6f68dd1ce381fcbf04a36f611573f730ef8a70bbf107ffd012102931ec69676be99a4b481f26b9c745197bda02bb5ac43286d5eab2581d771963dfeffffff0220b18a44000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888acfe31810f020000001976a91484b4f613e2e5e7b54baf6dda54931d5bb90f621888acd5200200020000000327ee9a2a360c6304fda56fa029670a95db595f70ae185a6f76ff1de415e07a18000000006a473044022011e7aed7a1cf187a9b6ca294bb76e3576cadebce48b5b944ad8393a60e8aa485022000818546dc7ba47c625258223dcefd6e84dc3faa8d54c646bfc0f55c4506c8f00121023fe7680caadc7bf3f796936de04d77e1007dea53880621c01d7b34720345d4ecfeffffff1ae8beeed571f491410ed327a6821b683d8ae571aea56057634da7aa8ce1041f000000006b4830450221009277cfac065a076814e18613d89c7d85a6461cf5283f2a9cee7254ec83fce637022023cf7186be7714921fe24719450e65a204d803738a1cb9fe35f30753f0696b8b012102aff34da05a74891899aace72f2e650ec1c039bfc519c192e6c231a2b7fa05749feffffff6388454ad1e5718af92def6fe307e64e97c43324d30c322b31edf85088020dc9000000006a47304402204435602e00d22417ff489302758a246df5fbc05e9bc4d0025464556ae7f77e70022036e30d2d46937ee0fc0cdf9a63e7baf8351bd16454ec02311cac52655ac4c32801210395fbe30126fc97a2c8b1e29bc27028a5a6885e4a4116d13e2cbe32c9d71e7f03feffffff02ce177e09000000001976a91437617547a3e0ba0adeead7c8c33c03970341404088acd0f7aad1010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac002102000200000001b792e355e878df60982c967051581118561e08e475fa9c852e2bb66e146f5856010000006a47304402203aa597338441045e0203e033fccdb13182f44a27fe7d8d1258420903172754d8022014e13789708cbf46e171725191e074bad6cb65ced12d86a53b7fbb2093063b4c012102c024dbdeb04678f3bc3799231347ee8d0d2a1c8575e9700b7f15705beb1c85cffeffffff02c086e1c2000000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac8c5265cd000000001976a914fd1bfe89ca75cea2a003d415e5d737f90cf9e8b788ac00210200020000000120c4c8eccae876a644b960c74fac98521a85bc3ee77c4d23e3af7fce03a92856000000006a47304402206140098393f8ea920d0181fa96274e97fa8ece62d0751293b7b68c0a54d0e417022061e99761aec73147b6a8e26bdc6a9ffd59679e9272e99ffac526d48da4635164012102ef126bc0394e7d67502a5349c41c8167a664ad1adbd381baa7e9faf2538a6a66feffffff029a890722000000001976a914e974612a090bc5d4caea5354d95679aa19c6ebdf88ac004afa74000000001976a914e2114cb0a8b5d6f1c3c720f314cbf79e14bb9cdd88acdc200200"
var blockTxs = []string{
"cfe2d2c5bd9929349a9d8f3d8f2423f4f0c9b408ed41b3002be5e7437a20aa7d",
"3f7ac6c55c0b383feb17715aef3cebf29182039fc42577d7c517b2fc04096942",
"3f296b929f6ee4f0ad3d6fce35873d6aeacbdf06aaf2abe384beb6e3f2a4dd03",
"5ef4f9b7e4c0240687c3a6e6a073e0fbc753645d231ca35435b95325778b7186",
"805b5ba055227b0f7dbbdef8e603632c4d25b93f0e87c59fc74cbe8ad8dbe806",
"392785b88f03c82492172827f30cbed4761de3098a0faaa740999b412ff15e46",
"13fafd7c8afc6fd2c860d342eaf0cfe0edd2b994bb836898c02830b2f688155e",
"26bc95fcc71380f0d66e437314c72999c0848cab81fe1f91c9c95bf15b74855c",
"7873d8d774f2aae72100620a21b38ea681b488b328802b6ec3271b1d727c6b73",
"23147585fd4ed3970118027ce9b2e190e264f26fbf5d8c9708a483cee6cada43",
"e079894b2545eca7184a2f0eaccf4b069242f18fa0721aedc8f66b73112a1e8f",
"b36284854fa1947844ecc5d62768be3e14cc44c430db87b1b90184364b30dbf4",
"1fd3ad5d0392cedf318600908270986c801cac161ef06f660591634cc2a29652",
"7a5b8944589b0cfba9c408b24b095648b0040a37fd769a9785982603bb7ca1f7",
"7da1811ec3f2c6381d89e59f40957d36c898ba1bb70b976e0b5490d3b9fa8952",
"dbcfa65bdfe758353305eaff11b300463018efb7fa8f17c6c6a98bb8dba6bcc9",
"c046821e5503770304359792c20c1ed3e71509a19a867acf1dae113bf52d2a6f",
"d3cea11e1a4937323cc94172f93a2e0edc0981a706f2d2c3315ace94b01b375a",
"6ef2a57e38dd891690c8f230b65f26247799b2421860e6cf8a1c7c8cfdedd96e",
"53834414d8a88afe4268b85f959e526a0c677ac6b7dedba9a796d1549852fd41",
"b761ebaccfb6d0eeaa5350ccafdf6a7633e59d6baadc932c6d78491cb08052a6",
}
var txDetails map[string]*bchain.Tx
func init() {
var (
addr1, addr2, addr3, addr4 bchain.Address
err error
)
addr1, err = bchain.NewBaseAddress("ygvnHYy5TZgvS2LK2L7CBcRRnR52bJCv7k")
if err == nil {
addr2, err = bchain.NewBaseAddress("yP8TiVEB5X95MCfiDCuwnpd9SVDJ6cSPpp")
}
if err == nil {
addr3, err = bchain.NewBaseAddress("yRNGmGCjSKA42KHRZsVbByua3VgbZjLKfg")
}
if err == nil {
addr4, err = bchain.NewBaseAddress("yiGAWAWmZsULK2iyhGQhMdNsCiAYRA1bCt")
}
if err != nil {
panic(err)
}
txDetails = map[string]*bchain.Tx{
"3f7ac6c55c0b383feb17715aef3cebf29182039fc42577d7c517b2fc04096942": &bchain.Tx{
Hex: "020000000109d37a59b7da8902b8822547c927e35554b16667ffd698daae985c58c71616a4010000006b483045022100f3ef92ae1c8442eff171bd2dbc69373db384c86617032917b3bb2c5cd892bb2702207485cf5f8e6aa9fe245f5708a5c6ec37580c1c35e54429c6b43b322678f54cad012102ba7dbd059cc4f03e9fa4b6007b407279a154a8fc2103241511df155a52b7ea58feffffff02a055e18e170000001976a914e2114cb0a8b5d6f1c3c720f314cbf79e14bb9cdd88ac8cb65df0440000001976a9141ed486862342afd134f96a6cee5ca105801375df88ac00210200",
Blocktime: 1528713762,
Time: 1528713762,
Txid: "3f7ac6c55c0b383feb17715aef3cebf29182039fc42577d7c517b2fc04096942",
LockTime: 139520,
Vin: []bchain.Vin{
{
ScriptSig: bchain.ScriptSig{
Hex: "483045022100f3ef92ae1c8442eff171bd2dbc69373db384c86617032917b3bb2c5cd892bb2702207485cf5f8e6aa9fe245f5708a5c6ec37580c1c35e54429c6b43b322678f54cad012102ba7dbd059cc4f03e9fa4b6007b407279a154a8fc2103241511df155a52b7ea58",
},
Txid: "a41616c7585c98aeda98d6ff6766b15455e327c9472582b80289dab7597ad309",
Vout: 1,
Sequence: 4294967294,
},
},
Vout: []bchain.Vout{
{
Value: 1011.81380000,
N: 0,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a914e2114cb0a8b5d6f1c3c720f314cbf79e14bb9cdd88ac",
Addresses: []string{
"ygvnHYy5TZgvS2LK2L7CBcRRnR52bJCv7k",
},
},
Address: addr1,
},
{
Value: 2960.90449548,
N: 1,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a9141ed486862342afd134f96a6cee5ca105801375df88ac",
Addresses: []string{
"yP8TiVEB5X95MCfiDCuwnpd9SVDJ6cSPpp",
},
},
Address: addr2,
},
},
},
"6ef2a57e38dd891690c8f230b65f26247799b2421860e6cf8a1c7c8cfdedd96e": &bchain.Tx{
Hex: "020000000327ee9a2a360c6304fda56fa029670a95db595f70ae185a6f76ff1de415e07a18000000006a473044022011e7aed7a1cf187a9b6ca294bb76e3576cadebce48b5b944ad8393a60e8aa485022000818546dc7ba47c625258223dcefd6e84dc3faa8d54c646bfc0f55c4506c8f00121023fe7680caadc7bf3f796936de04d77e1007dea53880621c01d7b34720345d4ecfeffffff1ae8beeed571f491410ed327a6821b683d8ae571aea56057634da7aa8ce1041f000000006b4830450221009277cfac065a076814e18613d89c7d85a6461cf5283f2a9cee7254ec83fce637022023cf7186be7714921fe24719450e65a204d803738a1cb9fe35f30753f0696b8b012102aff34da05a74891899aace72f2e650ec1c039bfc519c192e6c231a2b7fa05749feffffff6388454ad1e5718af92def6fe307e64e97c43324d30c322b31edf85088020dc9000000006a47304402204435602e00d22417ff489302758a246df5fbc05e9bc4d0025464556ae7f77e70022036e30d2d46937ee0fc0cdf9a63e7baf8351bd16454ec02311cac52655ac4c32801210395fbe30126fc97a2c8b1e29bc27028a5a6885e4a4116d13e2cbe32c9d71e7f03feffffff02ce177e09000000001976a91437617547a3e0ba0adeead7c8c33c03970341404088acd0f7aad1010000001976a914f0b3dff509993e0b7035ce997b52763ce501d67888ac00210200",
Blocktime: 1528713762,
Time: 1528713762,
Txid: "6ef2a57e38dd891690c8f230b65f26247799b2421860e6cf8a1c7c8cfdedd96e",
LockTime: 139520,
Vin: []bchain.Vin{
{
ScriptSig: bchain.ScriptSig{
Hex: "473044022011e7aed7a1cf187a9b6ca294bb76e3576cadebce48b5b944ad8393a60e8aa485022000818546dc7ba47c625258223dcefd6e84dc3faa8d54c646bfc0f55c4506c8f00121023fe7680caadc7bf3f796936de04d77e1007dea53880621c01d7b34720345d4ec",
},
Txid: "187ae015e41dff766f5a18ae705f59db950a6729a06fa5fd04630c362a9aee27",
Vout: 0,
Sequence: 4294967294,
},
{
ScriptSig: bchain.ScriptSig{
Hex: "4830450221009277cfac065a076814e18613d89c7d85a6461cf5283f2a9cee7254ec83fce637022023cf7186be7714921fe24719450e65a204d803738a1cb9fe35f30753f0696b8b012102aff34da05a74891899aace72f2e650ec1c039bfc519c192e6c231a2b7fa05749",
},
Txid: "1f04e18caaa74d635760a5ae71e58a3d681b82a627d30e4191f471d5eebee81a",
Vout: 0,
Sequence: 4294967294,
},
{
ScriptSig: bchain.ScriptSig{
Hex: "47304402204435602e00d22417ff489302758a246df5fbc05e9bc4d0025464556ae7f77e70022036e30d2d46937ee0fc0cdf9a63e7baf8351bd16454ec02311cac52655ac4c32801210395fbe30126fc97a2c8b1e29bc27028a5a6885e4a4116d13e2cbe32c9d71e7f03",
},
Txid: "c90d028850f8ed312b320cd32433c4974ee607e36fef2df98a71e5d14a458863",
Vout: 0,
Sequence: 4294967294,
},
},
Vout: []bchain.Vout{
{
Value: 1.59258574,
N: 0,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a91437617547a3e0ba0adeead7c8c33c03970341404088ac",
Addresses: []string{
"yRNGmGCjSKA42KHRZsVbByua3VgbZjLKfg",
},
},
Address: addr3,
},
{
Value: 78.12610000,
N: 1,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a914f0b3dff509993e0b7035ce997b52763ce501d67888ac",
Addresses: []string{
"yiGAWAWmZsULK2iyhGQhMdNsCiAYRA1bCt",
},
},
Address: addr4,
},
},
},
}
}
func TestRPC_GetBlockHash(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
hash, err := cli.GetBlockHash(blockHeight)
if err != nil {
t.Error(err)
return
}
if hash != blockHash {
t.Errorf("GetBlockHash() got %q, want %q", hash, blockHash)
}
}
func TestRPC_GetBlockRaw(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
d, err := cli.GetBlockRaw(blockHash)
if err != nil {
t.Error(err)
return
}
blk := hex.EncodeToString(d)
if blk != blockHex {
t.Errorf("GetBlockRaw() got %q, want %q", blk, blockHex)
}
}
func TestRPC_GetBlock(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
blk, err := cli.GetBlock(blockHash, 0)
if err != nil {
t.Error(err)
return
}
if len(blk.Txs) != len(blockTxs) {
t.Errorf("GetBlock() number of transactions: got %d, want %d", len(blk.Txs), len(blockTxs))
}
for ti, tx := range blk.Txs {
if tx.Txid != blockTxs[ti] {
t.Errorf("GetBlock() transaction %d: got %s, want %s", ti, tx.Txid, blockTxs[ti])
}
}
}
func TestRPC_GetTransaction(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
for txid, want := range txDetails {
got, err := cli.GetTransaction(txid)
if err != nil {
t.Error(err)
return
}
// Confirmations is variable field, we just check if is set and reset it
if got.Confirmations > 0 {
got.Confirmations = 0
} else {
t.Errorf("GetTransaction() has empty Confirmations field")
continue
}
if !reflect.DeepEqual(got, want) {
t.Errorf("GetTransaction() got %v, want %v", got, want)
}
}
}