diff --git a/bchain/coins/namecoin/namecoinrpc_test.go b/bchain/coins/namecoin/namecoinrpc_test.go new file mode 100644 index 00000000..68a2ffff --- /dev/null +++ b/bchain/coins/namecoin/namecoinrpc_test.go @@ -0,0 +1,72 @@ +// +build integration + +package namecoin + +import ( + "blockbook/bchain" + "blockbook/bchain/tests/rpc" + "encoding/json" + "testing" +) + +func getRPCClient(cfg json.RawMessage) (bchain.BlockChain, error) { + c, err := NewNamecoinRPC(cfg, nil) + if err != nil { + return nil, err + } + cli := c.(*NamecoinRPC) + cli.Parser = NewNamecoinParser(GetChainParams("main"), cli.ChainConfig) + if err != nil { + return nil, err + } + cli.Mempool = bchain.NewUTXOMempool(cli, cli.ChainConfig.MempoolWorkers, cli.ChainConfig.MempoolSubWorkers) + return cli, nil +} + +var rpcTest *rpc.Test + +func init() { + t, err := rpc.NewTest("Namecoin", getRPCClient) + if err != nil { + panic(err) + } + rpcTest = t +} + +func TestNamecoinRPC_GetBlockHash(t *testing.T) { + rpcTest.TestGetBlockHash(t) +} + +func TestNamecoinRPC_GetBlock(t *testing.T) { + rpcTest.TestGetBlock(t) +} + +func TestNamecoinRPC_GetTransaction(t *testing.T) { + rpcTest.TestGetTransaction(t) +} + +func TestNamecoinRPC_TestGetTransactionForMempool(t *testing.T) { + // extra opcodes (name_new, name_firstupdate, name_update) aren't supported, so some transactions + // in mempool can't be parsed correctly + t.Skipf("Skipped because of instability") +} + +func TestNamecoinRPC_TestMempoolSync(t *testing.T) { + rpcTest.TestMempoolSync(t) +} + +func TestNamecoinRPC_GetMempoolEntry(t *testing.T) { + rpcTest.TestGetMempoolEntry(t) +} + +func TestNamecoinRPC_SendRawTransaction(t *testing.T) { + rpcTest.TestSendRawTransaction(t) +} + +func TestNamecoinRPC_EstimateSmartFee(t *testing.T) { + rpcTest.TestEstimateSmartFee(t) +} + +func TestNamecoinRPC_EstimateFee(t *testing.T) { + rpcTest.TestEstimateFee(t) +} diff --git a/bchain/tests/rpc/config.json b/bchain/tests/rpc/config.json index 0b8b05f9..170dda67 100644 --- a/bchain/tests/rpc/config.json +++ b/bchain/tests/rpc/config.json @@ -28,5 +28,10 @@ "url": "http://localhost:8040", "user": "rpc", "pass": "rpc" + }, + "Namecoin": { + "url": "http://localhost:8039", + "user": "rpc", + "pass": "rpc" } } diff --git a/bchain/tests/rpc/testdata/Namecoin.json b/bchain/tests/rpc/testdata/Namecoin.json new file mode 100644 index 00000000..4e1193cd --- /dev/null +++ b/bchain/tests/rpc/testdata/Namecoin.json @@ -0,0 +1,70 @@ +{ + "blockHeight": 404680, + "blockHash": "920fe53b840111f7e593d93ba58dc54e043e10f8fa4a678e86a98f5cb5b29614", + "blockTxs": [ + "80b8477d10df9ece7d8dde2d30817e2855af1fb66b7a9ac860e592118ae33f5f", + "afcd8e3638b11b1ce52055474dcce78c4129e95ebee3305574acda48deea8a65", + "6ab2278f25fe3ce914fb49ad79679cdb337c0d38211a865db126ca90c6850a60", + "88628abcb7014532daa9a084998e2f770c92e81833f4cc419e8da17bdea29a2e", + "cf04d4d9f1ebcec2d005922628af77dad24d7d735b56befc8b60014259ebfe0f", + "161ea9e2056c86559d5e593554dbe90c8ae8e99b2b38ce4f78866b4d586bddfc", + "89866c18f8effe8f7b15bb2973907ec50d5e2e5d79d9c8054d2f286b66c7a318", + "7269a55d870661d51611e91afd5963a2df69cb7cb70e55a0019128db42c07393", + "e94ff789e7cea0a9935baae202018d41ab238e4536e397d194f307afc126fd54", + "f144f6346a8ce5f5f350753738958b716845fdd76841f2fb691b74206de20099", + "2b4f85cead2f60224deedf8b9a65312221ccd531c3324211a5ab7bd1e4b3592e", + "c1b3ffdae37b61052bd7f7bd14b697402208bc6eeedffd3ef05e3b8eeeccf623", + "25562c32931c4a5b045076609c211c0d9d9f50dd49d669c49cabd50473677fc0", + "1e41bdcb5bc4038cd5ca6fd8fcfa115ce5ed8b4bb26849d8129a8f8cd1493f28", + "5d84a38142d07de023114252ac8efd5172c8334818d95c71b8053544ce57f817", + "7fe0c2a2746c1237a9b1af7a595bf56ce23bf834ac0c2a6d29b480a0a4fbd524", + "784104089ce84977bb235b2509651677a84789c415d60eccc9dbf77be585ad9c", + "f00c1aef90779f58ffe451ce026ab491c1750e7eedecfb65925f46b971507f88", + "3b9c23fd6730cf2e11bc9f009db6f21f35df6b50941a46fc0a83cff423dd0695", + "7c6f996288a7d82df333b897301267519d033d889c8490b30785d526efe3e36d", + "fb8f9c1e3139f389ae7e21fd66bd506ae749cb303a1838b2738a4f8c63096c2b", + "4cdd7b9596862643df7c63a5b0b0e2deaa843e8251bfc60716b94ce0cb656660", + "435880f0d752539150dd828ebe1e4fb2ef92b3269b160278b3b98248c22036fd", + "9a2c3c096d630c1abf2b3fa0da367d954f2213ad5d8136375d42de3cc98132d1", + "cff4f408645e25f3f093d42684449fc51b31e897213bd98ebace7d49acdb5f4b", + "be1370f1e514fbb0d2345ee28d274081d56267bfddc6aa64090e3af4fcce6310", + "e422f60e56f36a03e263d8f812a99dcbc3c790f051a59ee5604e1aff97143b71", + "5082cc9765402eb1ca84273adcd264a9fb44cc427b921e5e776252eca2c6584a", + "08eb38fe093951404debe36ccc0e528dde6ee983c9d6f5d6752bcd160748fb7f" + ], + "txDetails": { + "08eb38fe093951404debe36ccc0e528dde6ee983c9d6f5d6752bcd160748fb7f": { + "hex": "010000000101292738408181cc445a937124bad53f0c1bfeff9e7fc6fb3f1713a6f74f3a22020000006b483045022100bc7c33f785866e688e7de7cdf385dd710159e9300e7c2702dcb556433c635e4f02202c9fa4659db2648061a14ef9108424866116695367d9042e7c1234a4556e900c012103fbb34dd0aca298fb23ba79af2c007880e593b6832e75784cdba1661f110f751efeffffff02a0870300000000001976a9145090f77ac9d008d11fe1da3283486b05a15920b688ac2827760c000000001976a91404a56a80df5913d9a65095d2498db77ad3bd690f88acc62c0600", + "txid": "08eb38fe093951404debe36ccc0e528dde6ee983c9d6f5d6752bcd160748fb7f", + "blocktime": 1530003649, + "time": 1530003649, + "locktime": 404678, + "vin": [ + { + "txid": "223a4ff7a613173ffbc67f9efffe1b0c3fd5ba2471935a44cc81814038272901", + "vout": 2, + "sequence": 4294967294, + "scriptSig": { + "hex": "483045022100bc7c33f785866e688e7de7cdf385dd710159e9300e7c2702dcb556433c635e4f02202c9fa4659db2648061a14ef9108424866116695367d9042e7c1234a4556e900c012103fbb34dd0aca298fb23ba79af2c007880e593b6832e75784cdba1661f110f751e" + } + } + ], + "vout": [ + { + "value": 0.00231328, + "n": 0, + "scriptPubKey": { + "hex": "76a9145090f77ac9d008d11fe1da3283486b05a15920b688ac" + } + }, + { + "value": 2.09069864, + "n": 1, + "scriptPubKey": { + "hex": "76a91404a56a80df5913d9a65095d2498db77ad3bd690f88ac" + } + } + ] + } + } +}