You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1261 lines
40 KiB
1261 lines
40 KiB
// Copyright (c) 2014 The btcsuite developers |
|
// Use of this source code is governed by an ISC |
|
// license that can be found in the LICENSE file. |
|
|
|
package btcjson_test |
|
|
|
import ( |
|
"bytes" |
|
"encoding/json" |
|
"fmt" |
|
"reflect" |
|
"testing" |
|
|
|
"github.com/btcsuite/btcd/btcjson" |
|
) |
|
|
|
// TestWalletSvrCmds tests all of the wallet server commands marshal and |
|
// unmarshal into valid results include handling of optional fields being |
|
// omitted in the marshalled command, while optional fields with defaults have |
|
// the default assigned on unmarshalled commands. |
|
func TestWalletSvrCmds(t *testing.T) { |
|
t.Parallel() |
|
|
|
testID := int(1) |
|
tests := []struct { |
|
name string |
|
newCmd func() (interface{}, error) |
|
staticCmd func() interface{} |
|
marshalled string |
|
unmarshalled interface{} |
|
}{ |
|
{ |
|
name: "addmultisigaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("addmultisigaddress", 2, []string{"031234", "035678"}) |
|
}, |
|
staticCmd: func() interface{} { |
|
keys := []string{"031234", "035678"} |
|
return btcjson.NewAddMultisigAddressCmd(2, keys, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"addmultisigaddress","params":[2,["031234","035678"]],"id":1}`, |
|
unmarshalled: &btcjson.AddMultisigAddressCmd{ |
|
NRequired: 2, |
|
Keys: []string{"031234", "035678"}, |
|
Account: nil, |
|
}, |
|
}, |
|
{ |
|
name: "addmultisigaddress optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("addmultisigaddress", 2, []string{"031234", "035678"}, "test") |
|
}, |
|
staticCmd: func() interface{} { |
|
keys := []string{"031234", "035678"} |
|
return btcjson.NewAddMultisigAddressCmd(2, keys, btcjson.String("test")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"addmultisigaddress","params":[2,["031234","035678"],"test"],"id":1}`, |
|
unmarshalled: &btcjson.AddMultisigAddressCmd{ |
|
NRequired: 2, |
|
Keys: []string{"031234", "035678"}, |
|
Account: btcjson.String("test"), |
|
}, |
|
}, |
|
{ |
|
name: "createmultisig", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("createmultisig", 2, []string{"031234", "035678"}) |
|
}, |
|
staticCmd: func() interface{} { |
|
keys := []string{"031234", "035678"} |
|
return btcjson.NewCreateMultisigCmd(2, keys) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"createmultisig","params":[2,["031234","035678"]],"id":1}`, |
|
unmarshalled: &btcjson.CreateMultisigCmd{ |
|
NRequired: 2, |
|
Keys: []string{"031234", "035678"}, |
|
}, |
|
}, |
|
{ |
|
name: "dumpprivkey", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("dumpprivkey", "1Address") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewDumpPrivKeyCmd("1Address") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"dumpprivkey","params":["1Address"],"id":1}`, |
|
unmarshalled: &btcjson.DumpPrivKeyCmd{ |
|
Address: "1Address", |
|
}, |
|
}, |
|
{ |
|
name: "encryptwallet", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("encryptwallet", "pass") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewEncryptWalletCmd("pass") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"encryptwallet","params":["pass"],"id":1}`, |
|
unmarshalled: &btcjson.EncryptWalletCmd{ |
|
Passphrase: "pass", |
|
}, |
|
}, |
|
{ |
|
name: "estimatefee", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("estimatefee", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewEstimateFeeCmd(6) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"estimatefee","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.EstimateFeeCmd{ |
|
NumBlocks: 6, |
|
}, |
|
}, |
|
{ |
|
name: "estimatepriority", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("estimatepriority", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewEstimatePriorityCmd(6) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"estimatepriority","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.EstimatePriorityCmd{ |
|
NumBlocks: 6, |
|
}, |
|
}, |
|
{ |
|
name: "getaccount", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getaccount", "1Address") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetAccountCmd("1Address") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getaccount","params":["1Address"],"id":1}`, |
|
unmarshalled: &btcjson.GetAccountCmd{ |
|
Address: "1Address", |
|
}, |
|
}, |
|
{ |
|
name: "getaccountaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getaccountaddress", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetAccountAddressCmd("acct") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getaccountaddress","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetAccountAddressCmd{ |
|
Account: "acct", |
|
}, |
|
}, |
|
{ |
|
name: "getaddressesbyaccount", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getaddressesbyaccount", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetAddressesByAccountCmd("acct") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getaddressesbyaccount","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetAddressesByAccountCmd{ |
|
Account: "acct", |
|
}, |
|
}, |
|
{ |
|
name: "getbalance", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getbalance") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetBalanceCmd(nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getbalance","params":[],"id":1}`, |
|
unmarshalled: &btcjson.GetBalanceCmd{ |
|
Account: nil, |
|
MinConf: btcjson.Int(1), |
|
}, |
|
}, |
|
{ |
|
name: "getbalance optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getbalance", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetBalanceCmd(btcjson.String("acct"), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getbalance","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetBalanceCmd{ |
|
Account: btcjson.String("acct"), |
|
MinConf: btcjson.Int(1), |
|
}, |
|
}, |
|
{ |
|
name: "getbalance optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getbalance", "acct", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetBalanceCmd(btcjson.String("acct"), btcjson.Int(6)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getbalance","params":["acct",6],"id":1}`, |
|
unmarshalled: &btcjson.GetBalanceCmd{ |
|
Account: btcjson.String("acct"), |
|
MinConf: btcjson.Int(6), |
|
}, |
|
}, |
|
{ |
|
name: "getnewaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getnewaddress") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetNewAddressCmd(nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getnewaddress","params":[],"id":1}`, |
|
unmarshalled: &btcjson.GetNewAddressCmd{ |
|
Account: nil, |
|
}, |
|
}, |
|
{ |
|
name: "getnewaddress optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getnewaddress", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetNewAddressCmd(btcjson.String("acct")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getnewaddress","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetNewAddressCmd{ |
|
Account: btcjson.String("acct"), |
|
}, |
|
}, |
|
{ |
|
name: "getrawchangeaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getrawchangeaddress") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetRawChangeAddressCmd(nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getrawchangeaddress","params":[],"id":1}`, |
|
unmarshalled: &btcjson.GetRawChangeAddressCmd{ |
|
Account: nil, |
|
}, |
|
}, |
|
{ |
|
name: "getrawchangeaddress optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getrawchangeaddress", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetRawChangeAddressCmd(btcjson.String("acct")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getrawchangeaddress","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetRawChangeAddressCmd{ |
|
Account: btcjson.String("acct"), |
|
}, |
|
}, |
|
{ |
|
name: "getreceivedbyaccount", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getreceivedbyaccount", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetReceivedByAccountCmd("acct", nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getreceivedbyaccount","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.GetReceivedByAccountCmd{ |
|
Account: "acct", |
|
MinConf: btcjson.Int(1), |
|
}, |
|
}, |
|
{ |
|
name: "getreceivedbyaccount optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getreceivedbyaccount", "acct", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetReceivedByAccountCmd("acct", btcjson.Int(6)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getreceivedbyaccount","params":["acct",6],"id":1}`, |
|
unmarshalled: &btcjson.GetReceivedByAccountCmd{ |
|
Account: "acct", |
|
MinConf: btcjson.Int(6), |
|
}, |
|
}, |
|
{ |
|
name: "getreceivedbyaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getreceivedbyaddress", "1Address") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetReceivedByAddressCmd("1Address", nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getreceivedbyaddress","params":["1Address"],"id":1}`, |
|
unmarshalled: &btcjson.GetReceivedByAddressCmd{ |
|
Address: "1Address", |
|
MinConf: btcjson.Int(1), |
|
}, |
|
}, |
|
{ |
|
name: "getreceivedbyaddress optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getreceivedbyaddress", "1Address", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetReceivedByAddressCmd("1Address", btcjson.Int(6)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getreceivedbyaddress","params":["1Address",6],"id":1}`, |
|
unmarshalled: &btcjson.GetReceivedByAddressCmd{ |
|
Address: "1Address", |
|
MinConf: btcjson.Int(6), |
|
}, |
|
}, |
|
{ |
|
name: "gettransaction", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("gettransaction", "123") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetTransactionCmd("123", nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"gettransaction","params":["123"],"id":1}`, |
|
unmarshalled: &btcjson.GetTransactionCmd{ |
|
Txid: "123", |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "gettransaction optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("gettransaction", "123", true) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetTransactionCmd("123", btcjson.Bool(true)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"gettransaction","params":["123",true],"id":1}`, |
|
unmarshalled: &btcjson.GetTransactionCmd{ |
|
Txid: "123", |
|
IncludeWatchOnly: btcjson.Bool(true), |
|
}, |
|
}, |
|
{ |
|
name: "getwalletinfo", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("getwalletinfo") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewGetWalletInfoCmd() |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"getwalletinfo","params":[],"id":1}`, |
|
unmarshalled: &btcjson.GetWalletInfoCmd{}, |
|
}, |
|
{ |
|
name: "importprivkey", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("importprivkey", "abc") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewImportPrivKeyCmd("abc", nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"importprivkey","params":["abc"],"id":1}`, |
|
unmarshalled: &btcjson.ImportPrivKeyCmd{ |
|
PrivKey: "abc", |
|
Label: nil, |
|
Rescan: btcjson.Bool(true), |
|
}, |
|
}, |
|
{ |
|
name: "importprivkey optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("importprivkey", "abc", "label") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewImportPrivKeyCmd("abc", btcjson.String("label"), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"importprivkey","params":["abc","label"],"id":1}`, |
|
unmarshalled: &btcjson.ImportPrivKeyCmd{ |
|
PrivKey: "abc", |
|
Label: btcjson.String("label"), |
|
Rescan: btcjson.Bool(true), |
|
}, |
|
}, |
|
{ |
|
name: "importprivkey optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("importprivkey", "abc", "label", false) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewImportPrivKeyCmd("abc", btcjson.String("label"), btcjson.Bool(false)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"importprivkey","params":["abc","label",false],"id":1}`, |
|
unmarshalled: &btcjson.ImportPrivKeyCmd{ |
|
PrivKey: "abc", |
|
Label: btcjson.String("label"), |
|
Rescan: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "keypoolrefill", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("keypoolrefill") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewKeyPoolRefillCmd(nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"keypoolrefill","params":[],"id":1}`, |
|
unmarshalled: &btcjson.KeyPoolRefillCmd{ |
|
NewSize: btcjson.Uint(100), |
|
}, |
|
}, |
|
{ |
|
name: "keypoolrefill optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("keypoolrefill", 200) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewKeyPoolRefillCmd(btcjson.Uint(200)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"keypoolrefill","params":[200],"id":1}`, |
|
unmarshalled: &btcjson.KeyPoolRefillCmd{ |
|
NewSize: btcjson.Uint(200), |
|
}, |
|
}, |
|
{ |
|
name: "listaccounts", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listaccounts") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListAccountsCmd(nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listaccounts","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListAccountsCmd{ |
|
MinConf: btcjson.Int(1), |
|
}, |
|
}, |
|
{ |
|
name: "listaccounts optional", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listaccounts", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListAccountsCmd(btcjson.Int(6)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listaccounts","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.ListAccountsCmd{ |
|
MinConf: btcjson.Int(6), |
|
}, |
|
}, |
|
{ |
|
name: "listaddressgroupings", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listaddressgroupings") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListAddressGroupingsCmd() |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listaddressgroupings","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListAddressGroupingsCmd{}, |
|
}, |
|
{ |
|
name: "listlockunspent", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listlockunspent") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListLockUnspentCmd() |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listlockunspent","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListLockUnspentCmd{}, |
|
}, |
|
{ |
|
name: "listreceivedbyaccount", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaccount") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAccountCmd(nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaccount","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAccountCmd{ |
|
MinConf: btcjson.Int(1), |
|
IncludeEmpty: btcjson.Bool(false), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaccount optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaccount", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAccountCmd(btcjson.Int(6), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaccount","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAccountCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(false), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaccount optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaccount", 6, true) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAccountCmd(btcjson.Int(6), btcjson.Bool(true), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaccount","params":[6,true],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAccountCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(true), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaccount optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaccount", 6, true, false) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAccountCmd(btcjson.Int(6), btcjson.Bool(true), btcjson.Bool(false)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaccount","params":[6,true,false],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAccountCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(true), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaddress") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAddressCmd(nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaddress","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAddressCmd{ |
|
MinConf: btcjson.Int(1), |
|
IncludeEmpty: btcjson.Bool(false), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaddress optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaddress", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAddressCmd(btcjson.Int(6), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaddress","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAddressCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(false), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaddress optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaddress", 6, true) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAddressCmd(btcjson.Int(6), btcjson.Bool(true), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaddress","params":[6,true],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAddressCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(true), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listreceivedbyaddress optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listreceivedbyaddress", 6, true, false) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListReceivedByAddressCmd(btcjson.Int(6), btcjson.Bool(true), btcjson.Bool(false)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listreceivedbyaddress","params":[6,true,false],"id":1}`, |
|
unmarshalled: &btcjson.ListReceivedByAddressCmd{ |
|
MinConf: btcjson.Int(6), |
|
IncludeEmpty: btcjson.Bool(true), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listsinceblock", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listsinceblock") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListSinceBlockCmd(nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listsinceblock","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListSinceBlockCmd{ |
|
BlockHash: nil, |
|
TargetConfirmations: btcjson.Int(1), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listsinceblock optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listsinceblock", "123") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListSinceBlockCmd(btcjson.String("123"), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listsinceblock","params":["123"],"id":1}`, |
|
unmarshalled: &btcjson.ListSinceBlockCmd{ |
|
BlockHash: btcjson.String("123"), |
|
TargetConfirmations: btcjson.Int(1), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listsinceblock optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listsinceblock", "123", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListSinceBlockCmd(btcjson.String("123"), btcjson.Int(6), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listsinceblock","params":["123",6],"id":1}`, |
|
unmarshalled: &btcjson.ListSinceBlockCmd{ |
|
BlockHash: btcjson.String("123"), |
|
TargetConfirmations: btcjson.Int(6), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listsinceblock optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listsinceblock", "123", 6, true) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListSinceBlockCmd(btcjson.String("123"), btcjson.Int(6), btcjson.Bool(true)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listsinceblock","params":["123",6,true],"id":1}`, |
|
unmarshalled: &btcjson.ListSinceBlockCmd{ |
|
BlockHash: btcjson.String("123"), |
|
TargetConfirmations: btcjson.Int(6), |
|
IncludeWatchOnly: btcjson.Bool(true), |
|
}, |
|
}, |
|
{ |
|
name: "listtransactions", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listtransactions") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListTransactionsCmd(nil, nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listtransactions","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListTransactionsCmd{ |
|
Account: nil, |
|
Count: btcjson.Int(10), |
|
From: btcjson.Int(0), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listtransactions optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listtransactions", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListTransactionsCmd(btcjson.String("acct"), nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listtransactions","params":["acct"],"id":1}`, |
|
unmarshalled: &btcjson.ListTransactionsCmd{ |
|
Account: btcjson.String("acct"), |
|
Count: btcjson.Int(10), |
|
From: btcjson.Int(0), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listtransactions optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listtransactions", "acct", 20) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListTransactionsCmd(btcjson.String("acct"), btcjson.Int(20), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listtransactions","params":["acct",20],"id":1}`, |
|
unmarshalled: &btcjson.ListTransactionsCmd{ |
|
Account: btcjson.String("acct"), |
|
Count: btcjson.Int(20), |
|
From: btcjson.Int(0), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listtransactions optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listtransactions", "acct", 20, 1) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListTransactionsCmd(btcjson.String("acct"), btcjson.Int(20), |
|
btcjson.Int(1), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listtransactions","params":["acct",20,1],"id":1}`, |
|
unmarshalled: &btcjson.ListTransactionsCmd{ |
|
Account: btcjson.String("acct"), |
|
Count: btcjson.Int(20), |
|
From: btcjson.Int(1), |
|
IncludeWatchOnly: btcjson.Bool(false), |
|
}, |
|
}, |
|
{ |
|
name: "listtransactions optional4", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listtransactions", "acct", 20, 1, true) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListTransactionsCmd(btcjson.String("acct"), btcjson.Int(20), |
|
btcjson.Int(1), btcjson.Bool(true)) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listtransactions","params":["acct",20,1,true],"id":1}`, |
|
unmarshalled: &btcjson.ListTransactionsCmd{ |
|
Account: btcjson.String("acct"), |
|
Count: btcjson.Int(20), |
|
From: btcjson.Int(1), |
|
IncludeWatchOnly: btcjson.Bool(true), |
|
}, |
|
}, |
|
{ |
|
name: "listunspent", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listunspent") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListUnspentCmd(nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listunspent","params":[],"id":1}`, |
|
unmarshalled: &btcjson.ListUnspentCmd{ |
|
MinConf: btcjson.Int(1), |
|
MaxConf: btcjson.Int(9999999), |
|
Addresses: nil, |
|
}, |
|
}, |
|
{ |
|
name: "listunspent optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listunspent", 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListUnspentCmd(btcjson.Int(6), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listunspent","params":[6],"id":1}`, |
|
unmarshalled: &btcjson.ListUnspentCmd{ |
|
MinConf: btcjson.Int(6), |
|
MaxConf: btcjson.Int(9999999), |
|
Addresses: nil, |
|
}, |
|
}, |
|
{ |
|
name: "listunspent optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listunspent", 6, 100) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListUnspentCmd(btcjson.Int(6), btcjson.Int(100), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listunspent","params":[6,100],"id":1}`, |
|
unmarshalled: &btcjson.ListUnspentCmd{ |
|
MinConf: btcjson.Int(6), |
|
MaxConf: btcjson.Int(100), |
|
Addresses: nil, |
|
}, |
|
}, |
|
{ |
|
name: "listunspent optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("listunspent", 6, 100, []string{"1Address", "1Address2"}) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewListUnspentCmd(btcjson.Int(6), btcjson.Int(100), |
|
&[]string{"1Address", "1Address2"}) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"listunspent","params":[6,100,["1Address","1Address2"]],"id":1}`, |
|
unmarshalled: &btcjson.ListUnspentCmd{ |
|
MinConf: btcjson.Int(6), |
|
MaxConf: btcjson.Int(100), |
|
Addresses: &[]string{"1Address", "1Address2"}, |
|
}, |
|
}, |
|
{ |
|
name: "lockunspent", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("lockunspent", true, `[{"txid":"123","vout":1}]`) |
|
}, |
|
staticCmd: func() interface{} { |
|
txInputs := []btcjson.TransactionInput{ |
|
{Txid: "123", Vout: 1}, |
|
} |
|
return btcjson.NewLockUnspentCmd(true, txInputs) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"lockunspent","params":[true,[{"txid":"123","vout":1}]],"id":1}`, |
|
unmarshalled: &btcjson.LockUnspentCmd{ |
|
Unlock: true, |
|
Transactions: []btcjson.TransactionInput{ |
|
{Txid: "123", Vout: 1}, |
|
}, |
|
}, |
|
}, |
|
{ |
|
name: "move", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("move", "from", "to", 0.5) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewMoveCmd("from", "to", 0.5, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"move","params":["from","to",0.5],"id":1}`, |
|
unmarshalled: &btcjson.MoveCmd{ |
|
FromAccount: "from", |
|
ToAccount: "to", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(1), |
|
Comment: nil, |
|
}, |
|
}, |
|
{ |
|
name: "move optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("move", "from", "to", 0.5, 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewMoveCmd("from", "to", 0.5, btcjson.Int(6), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"move","params":["from","to",0.5,6],"id":1}`, |
|
unmarshalled: &btcjson.MoveCmd{ |
|
FromAccount: "from", |
|
ToAccount: "to", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(6), |
|
Comment: nil, |
|
}, |
|
}, |
|
{ |
|
name: "move optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("move", "from", "to", 0.5, 6, "comment") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewMoveCmd("from", "to", 0.5, btcjson.Int(6), btcjson.String("comment")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"move","params":["from","to",0.5,6,"comment"],"id":1}`, |
|
unmarshalled: &btcjson.MoveCmd{ |
|
FromAccount: "from", |
|
ToAccount: "to", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(6), |
|
Comment: btcjson.String("comment"), |
|
}, |
|
}, |
|
{ |
|
name: "sendfrom", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendfrom", "from", "1Address", 0.5) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendFromCmd("from", "1Address", 0.5, nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendfrom","params":["from","1Address",0.5],"id":1}`, |
|
unmarshalled: &btcjson.SendFromCmd{ |
|
FromAccount: "from", |
|
ToAddress: "1Address", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(1), |
|
Comment: nil, |
|
CommentTo: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendfrom optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendfrom", "from", "1Address", 0.5, 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendFromCmd("from", "1Address", 0.5, btcjson.Int(6), nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendfrom","params":["from","1Address",0.5,6],"id":1}`, |
|
unmarshalled: &btcjson.SendFromCmd{ |
|
FromAccount: "from", |
|
ToAddress: "1Address", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(6), |
|
Comment: nil, |
|
CommentTo: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendfrom optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendfrom", "from", "1Address", 0.5, 6, "comment") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendFromCmd("from", "1Address", 0.5, btcjson.Int(6), |
|
btcjson.String("comment"), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendfrom","params":["from","1Address",0.5,6,"comment"],"id":1}`, |
|
unmarshalled: &btcjson.SendFromCmd{ |
|
FromAccount: "from", |
|
ToAddress: "1Address", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(6), |
|
Comment: btcjson.String("comment"), |
|
CommentTo: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendfrom optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendfrom", "from", "1Address", 0.5, 6, "comment", "commentto") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendFromCmd("from", "1Address", 0.5, btcjson.Int(6), |
|
btcjson.String("comment"), btcjson.String("commentto")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendfrom","params":["from","1Address",0.5,6,"comment","commentto"],"id":1}`, |
|
unmarshalled: &btcjson.SendFromCmd{ |
|
FromAccount: "from", |
|
ToAddress: "1Address", |
|
Amount: 0.5, |
|
MinConf: btcjson.Int(6), |
|
Comment: btcjson.String("comment"), |
|
CommentTo: btcjson.String("commentto"), |
|
}, |
|
}, |
|
{ |
|
name: "sendmany", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendmany", "from", `{"1Address":0.5}`) |
|
}, |
|
staticCmd: func() interface{} { |
|
amounts := map[string]float64{"1Address": 0.5} |
|
return btcjson.NewSendManyCmd("from", amounts, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendmany","params":["from",{"1Address":0.5}],"id":1}`, |
|
unmarshalled: &btcjson.SendManyCmd{ |
|
FromAccount: "from", |
|
Amounts: map[string]float64{"1Address": 0.5}, |
|
MinConf: btcjson.Int(1), |
|
Comment: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendmany optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendmany", "from", `{"1Address":0.5}`, 6) |
|
}, |
|
staticCmd: func() interface{} { |
|
amounts := map[string]float64{"1Address": 0.5} |
|
return btcjson.NewSendManyCmd("from", amounts, btcjson.Int(6), nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendmany","params":["from",{"1Address":0.5},6],"id":1}`, |
|
unmarshalled: &btcjson.SendManyCmd{ |
|
FromAccount: "from", |
|
Amounts: map[string]float64{"1Address": 0.5}, |
|
MinConf: btcjson.Int(6), |
|
Comment: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendmany optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendmany", "from", `{"1Address":0.5}`, 6, "comment") |
|
}, |
|
staticCmd: func() interface{} { |
|
amounts := map[string]float64{"1Address": 0.5} |
|
return btcjson.NewSendManyCmd("from", amounts, btcjson.Int(6), btcjson.String("comment")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendmany","params":["from",{"1Address":0.5},6,"comment"],"id":1}`, |
|
unmarshalled: &btcjson.SendManyCmd{ |
|
FromAccount: "from", |
|
Amounts: map[string]float64{"1Address": 0.5}, |
|
MinConf: btcjson.Int(6), |
|
Comment: btcjson.String("comment"), |
|
}, |
|
}, |
|
{ |
|
name: "sendtoaddress", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendtoaddress", "1Address", 0.5) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendToAddressCmd("1Address", 0.5, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendtoaddress","params":["1Address",0.5],"id":1}`, |
|
unmarshalled: &btcjson.SendToAddressCmd{ |
|
Address: "1Address", |
|
Amount: 0.5, |
|
Comment: nil, |
|
CommentTo: nil, |
|
}, |
|
}, |
|
{ |
|
name: "sendtoaddress optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("sendtoaddress", "1Address", 0.5, "comment", "commentto") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSendToAddressCmd("1Address", 0.5, btcjson.String("comment"), |
|
btcjson.String("commentto")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"sendtoaddress","params":["1Address",0.5,"comment","commentto"],"id":1}`, |
|
unmarshalled: &btcjson.SendToAddressCmd{ |
|
Address: "1Address", |
|
Amount: 0.5, |
|
Comment: btcjson.String("comment"), |
|
CommentTo: btcjson.String("commentto"), |
|
}, |
|
}, |
|
{ |
|
name: "setaccount", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("setaccount", "1Address", "acct") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSetAccountCmd("1Address", "acct") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"setaccount","params":["1Address","acct"],"id":1}`, |
|
unmarshalled: &btcjson.SetAccountCmd{ |
|
Address: "1Address", |
|
Account: "acct", |
|
}, |
|
}, |
|
{ |
|
name: "settxfee", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("settxfee", 0.0001) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSetTxFeeCmd(0.0001) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"settxfee","params":[0.0001],"id":1}`, |
|
unmarshalled: &btcjson.SetTxFeeCmd{ |
|
Amount: 0.0001, |
|
}, |
|
}, |
|
{ |
|
name: "signmessage", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("signmessage", "1Address", "message") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSignMessageCmd("1Address", "message") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"signmessage","params":["1Address","message"],"id":1}`, |
|
unmarshalled: &btcjson.SignMessageCmd{ |
|
Address: "1Address", |
|
Message: "message", |
|
}, |
|
}, |
|
{ |
|
name: "signrawtransaction", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("signrawtransaction", "001122") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewSignRawTransactionCmd("001122", nil, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"signrawtransaction","params":["001122"],"id":1}`, |
|
unmarshalled: &btcjson.SignRawTransactionCmd{ |
|
RawTx: "001122", |
|
Inputs: nil, |
|
PrivKeys: nil, |
|
Flags: btcjson.String("ALL"), |
|
}, |
|
}, |
|
{ |
|
name: "signrawtransaction optional1", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("signrawtransaction", "001122", `[{"txid":"123","vout":1,"scriptPubKey":"00","redeemScript":"01"}]`) |
|
}, |
|
staticCmd: func() interface{} { |
|
txInputs := []btcjson.RawTxInput{ |
|
{ |
|
Txid: "123", |
|
Vout: 1, |
|
ScriptPubKey: "00", |
|
RedeemScript: "01", |
|
}, |
|
} |
|
|
|
return btcjson.NewSignRawTransactionCmd("001122", &txInputs, nil, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"signrawtransaction","params":["001122",[{"txid":"123","vout":1,"scriptPubKey":"00","redeemScript":"01"}]],"id":1}`, |
|
unmarshalled: &btcjson.SignRawTransactionCmd{ |
|
RawTx: "001122", |
|
Inputs: &[]btcjson.RawTxInput{ |
|
{ |
|
Txid: "123", |
|
Vout: 1, |
|
ScriptPubKey: "00", |
|
RedeemScript: "01", |
|
}, |
|
}, |
|
PrivKeys: nil, |
|
Flags: btcjson.String("ALL"), |
|
}, |
|
}, |
|
{ |
|
name: "signrawtransaction optional2", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("signrawtransaction", "001122", `[]`, `["abc"]`) |
|
}, |
|
staticCmd: func() interface{} { |
|
txInputs := []btcjson.RawTxInput{} |
|
privKeys := []string{"abc"} |
|
return btcjson.NewSignRawTransactionCmd("001122", &txInputs, &privKeys, nil) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"signrawtransaction","params":["001122",[],["abc"]],"id":1}`, |
|
unmarshalled: &btcjson.SignRawTransactionCmd{ |
|
RawTx: "001122", |
|
Inputs: &[]btcjson.RawTxInput{}, |
|
PrivKeys: &[]string{"abc"}, |
|
Flags: btcjson.String("ALL"), |
|
}, |
|
}, |
|
{ |
|
name: "signrawtransaction optional3", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("signrawtransaction", "001122", `[]`, `[]`, "ALL") |
|
}, |
|
staticCmd: func() interface{} { |
|
txInputs := []btcjson.RawTxInput{} |
|
privKeys := []string{} |
|
return btcjson.NewSignRawTransactionCmd("001122", &txInputs, &privKeys, |
|
btcjson.String("ALL")) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"signrawtransaction","params":["001122",[],[],"ALL"],"id":1}`, |
|
unmarshalled: &btcjson.SignRawTransactionCmd{ |
|
RawTx: "001122", |
|
Inputs: &[]btcjson.RawTxInput{}, |
|
PrivKeys: &[]string{}, |
|
Flags: btcjson.String("ALL"), |
|
}, |
|
}, |
|
{ |
|
name: "walletlock", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("walletlock") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewWalletLockCmd() |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"walletlock","params":[],"id":1}`, |
|
unmarshalled: &btcjson.WalletLockCmd{}, |
|
}, |
|
{ |
|
name: "walletpassphrase", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("walletpassphrase", "pass", 60) |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewWalletPassphraseCmd("pass", 60) |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"walletpassphrase","params":["pass",60],"id":1}`, |
|
unmarshalled: &btcjson.WalletPassphraseCmd{ |
|
Passphrase: "pass", |
|
Timeout: 60, |
|
}, |
|
}, |
|
{ |
|
name: "walletpassphrasechange", |
|
newCmd: func() (interface{}, error) { |
|
return btcjson.NewCmd("walletpassphrasechange", "old", "new") |
|
}, |
|
staticCmd: func() interface{} { |
|
return btcjson.NewWalletPassphraseChangeCmd("old", "new") |
|
}, |
|
marshalled: `{"jsonrpc":"1.0","method":"walletpassphrasechange","params":["old","new"],"id":1}`, |
|
unmarshalled: &btcjson.WalletPassphraseChangeCmd{ |
|
OldPassphrase: "old", |
|
NewPassphrase: "new", |
|
}, |
|
}, |
|
} |
|
|
|
t.Logf("Running %d tests", len(tests)) |
|
for i, test := range tests { |
|
// Marshal the command as created by the new static command |
|
// creation function. |
|
marshalled, err := btcjson.MarshalCmd(testID, test.staticCmd()) |
|
if err != nil { |
|
t.Errorf("MarshalCmd #%d (%s) unexpected error: %v", i, |
|
test.name, err) |
|
continue |
|
} |
|
|
|
if !bytes.Equal(marshalled, []byte(test.marshalled)) { |
|
t.Errorf("Test #%d (%s) unexpected marshalled data - "+ |
|
"got %s, want %s", i, test.name, marshalled, |
|
test.marshalled) |
|
continue |
|
} |
|
|
|
// Ensure the command is created without error via the generic |
|
// new command creation function. |
|
cmd, err := test.newCmd() |
|
if err != nil { |
|
t.Errorf("Test #%d (%s) unexpected NewCmd error: %v ", |
|
i, test.name, err) |
|
} |
|
|
|
// Marshal the command as created by the generic new command |
|
// creation function. |
|
marshalled, err = btcjson.MarshalCmd(testID, cmd) |
|
if err != nil { |
|
t.Errorf("MarshalCmd #%d (%s) unexpected error: %v", i, |
|
test.name, err) |
|
continue |
|
} |
|
|
|
if !bytes.Equal(marshalled, []byte(test.marshalled)) { |
|
t.Errorf("Test #%d (%s) unexpected marshalled data - "+ |
|
"got %s, want %s", i, test.name, marshalled, |
|
test.marshalled) |
|
continue |
|
} |
|
|
|
var request btcjson.Request |
|
if err := json.Unmarshal(marshalled, &request); err != nil { |
|
t.Errorf("Test #%d (%s) unexpected error while "+ |
|
"unmarshalling JSON-RPC request: %v", i, |
|
test.name, err) |
|
continue |
|
} |
|
|
|
cmd, err = btcjson.UnmarshalCmd(&request) |
|
if err != nil { |
|
t.Errorf("UnmarshalCmd #%d (%s) unexpected error: %v", i, |
|
test.name, err) |
|
continue |
|
} |
|
|
|
if !reflect.DeepEqual(cmd, test.unmarshalled) { |
|
t.Errorf("Test #%d (%s) unexpected unmarshalled command "+ |
|
"- got %s, want %s", i, test.name, |
|
fmt.Sprintf("(%T) %+[1]v", cmd), |
|
fmt.Sprintf("(%T) %+[1]v\n", test.unmarshalled)) |
|
continue |
|
} |
|
} |
|
}
|
|
|