Skip to content

Commit

Permalink
test: implement integration tests for txs
Browse files Browse the repository at this point in the history
  • Loading branch information
HannesKimara committed Oct 12, 2021
1 parent 76a13b4 commit 2689030
Show file tree
Hide file tree
Showing 17 changed files with 267 additions and 12 deletions.
184 changes: 184 additions & 0 deletions api_transaction_test.go
@@ -1,7 +1,9 @@
package blockfrost_test

import (
"context"
"path/filepath"
"strings"
"testing"

"github.com/blockfrost/blockfrost-go"
Expand Down Expand Up @@ -97,3 +99,185 @@ func TestTransactionMetadataCborUnmarshal(t *testing.T) {
got := []blockfrost.TransactionMetadataCbor{}
testStructGotWant(t, fp, &got, &want)
}

func TestTransactionIntegration(t *testing.T) {
hash := "6e5f825c82c1c6d6b77f2a14092f3b78c8f1b66db6f4cf8caec1555b6f967b3b"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}

got, err := api.Transaction(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := blockfrost.TransactionContent{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionUTXOs(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}

got, err := api.TransactionUTXOs(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := blockfrost.TransactionUTXOs{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionStakeAddressCertsIntegration(t *testing.T) {
hash := "6e5f825c82c1c6d6b77f2a14092f3b78c8f1b66db6f4cf8caec1555b6f967b3b"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionStakeAddressCerts(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionStakeAddressCert{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionWithdrawlsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionWithdrawals(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionWidthrawal{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionMIRsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionMIRs(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionMIR{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionMetadata(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionMetadata(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionMetadata{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionMetadataInCBORsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionMetadataInCBORs(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionMetadataCbor{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionRedeemersIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionRedeemers(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionRedeemer{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionDelegationCertsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionDelegationCerts(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionDelegation{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionPoolUpdatesIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionPoolUpdates(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionPoolCert{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionPoolUpdateCertsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionPoolUpdateCerts(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionPoolCert{}
testIntUtil(t, fp, &got, &want)
}

func TestTransactionPoolRetirementsIntegration(t *testing.T) {
hash := "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50"
api, err := blockfrost.NewAPIClient(blockfrost.APIClientOptions{})
if err != nil {
t.Fatal(err)
}
got, err := api.TransactionPoolRetirementCerts(context.TODO(), hash)
if err != nil {
t.Fatal(err)
}
fp := filepath.Join(testdata, strings.ToLower(strings.TrimPrefix(t.Name(), "Test"))+".golden")
want := []blockfrost.TransactionPoolCert{}
testIntUtil(t, fp, &got, &want)
}
9 changes: 5 additions & 4 deletions api_transactions.go
Expand Up @@ -10,6 +10,7 @@ import (

const (
resourceTxs = "txs"
resourceTxStakes = "stakes"
resourceTxUTXOs = "utxos"
resourceTxWithdrawals = "withdrawals"
resourceTxMetadata = "metadata"
Expand Down Expand Up @@ -106,8 +107,8 @@ type TransactionUTXOs struct {
} `json:"inputs"`
Outputs []struct {
// Output address
Address string `json:"address"`
Amount TxAmount `json:"amount"`
Address string `json:"address"`
Amount []TxAmount `json:"amount"`
} `json:"outputs"`
}

Expand Down Expand Up @@ -299,7 +300,7 @@ func (c *apiClient) TransactionUTXOs(ctx context.Context, hash string) (tu Trans
}

func (c *apiClient) TransactionStakeAddressCerts(ctx context.Context, hash string) (tc []TransactionStakeAddressCert, err error) {
requestUrl, err := url.Parse(fmt.Sprintf("%s/%s/%s/%s", c.server, resourceTxs, hash, resourceTxUTXOs))
requestUrl, err := url.Parse(fmt.Sprintf("%s/%s/%s/%s", c.server, resourceTxs, hash, resourceTxStakes))
if err != nil {
return
}
Expand Down Expand Up @@ -398,7 +399,7 @@ func (c *apiClient) TransactionMetadataInCBORs(ctx context.Context, hash string)
return tmc, nil
}

func (c *apiClient) TransactionRedeemers(ctx context.Context, hash string) (tm []TransactionMetadata, err error) {
func (c *apiClient) TransactionRedeemers(ctx context.Context, hash string) (tm []TransactionRedeemer, err error) {
requestUrl, err := url.Parse(fmt.Sprintf("%s/%s/%s/%s/%s", c.server, resourceTxs, hash, resourceTxMetadata, resourceCbor))
if err != nil {
return
Expand Down
2 changes: 1 addition & 1 deletion client.go
Expand Up @@ -166,7 +166,7 @@ type APIClient interface {
TransactionMIRs(ctx context.Context, hash string) ([]TransactionMIR, error)
TransactionMetadata(ctx context.Context, hash string) ([]TransactionMetadata, error)
TransactionMetadataInCBORs(ctx context.Context, hash string) ([]TransactionMetadataCbor, error)
TransactionRedeemers(ctx context.Context, hash string) ([]TransactionMetadata, error)
TransactionRedeemers(ctx context.Context, hash string) ([]TransactionRedeemer, error)
TransactionDelegationCerts(ctx context.Context, hash string) ([]TransactionDelegation, error)
TransactionPoolUpdates(ctx context.Context, hash string) ([]TransactionPoolCert, error)
TransactionPoolUpdateCerts(ctx context.Context, hash string) ([]TransactionPoolCert, error)
Expand Down
8 changes: 1 addition & 7 deletions testdata/resourceassettransactionintegration.golden
@@ -1,7 +1 @@
[
{
"tx_hash": "0b28244fade854bb15f0358de44872cfb2216744b95dc0855704dac34619f382",
"tx_index": 9,
"block_height": 5406748
}
]
[{"tx_hash":"0b28244fade854bb15f0358de44872cfb2216744b95dc0855704dac34619f382","tx_index":9,"block_height":5406748}]
1 change: 1 addition & 0 deletions testdata/stakeaddresscertsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactiondelegationcertsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionintegration.golden
@@ -0,0 +1 @@
{"asset_mint_or_burn_count":0,"block":"356b7d7dbb696ccd12775c016941057a9dc70898d87a63fc752271bb46856940","block_height":4953973,"delegation_count":0,"deposit":"0","fees":"182485","hash":"6e5f825c82c1c6d6b77f2a14092f3b78c8f1b66db6f4cf8caec1555b6f967b3b","index":1,"invalid_before":"","invalid_hereafter":"13885913","mir_cert_count":0,"output_amount":[{"quantity":"2472470544","unit":"lovelace"}],"pool_retire_count":0,"pool_update_count":0,"size":433,"slot":13878800,"stake_cert_count":0,"utxo_count":4,"withdrawal_count":0}
1 change: 1 addition & 0 deletions testdata/transactionmetadata.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionmetadataincborsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionmirsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionpoolretirementsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionpoolupdatecertsintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionpoolupdatesintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionredeemersintegration.golden
@@ -0,0 +1 @@
[]
1 change: 1 addition & 0 deletions testdata/transactionstakeaddresscertsintegration.golden
@@ -0,0 +1 @@
[]
64 changes: 64 additions & 0 deletions testdata/transactionutxos.golden
@@ -0,0 +1,64 @@
{
"hash": "6d619f41ba2e11b78c0d5647fb71ee5df05622fda1748a9124446226e54e6b50",
"inputs": [
{
"address": "addr1q82aucg0xgdsvzdqtppz35ymw4x7dje2ug9wsvy3an6v47u6msd43ruwsyp6lvfz90thjgtaunfy2ynlk4etz8rn254qd8fxw5",
"amount": [
{
"quantity": "1379280",
"unit": "lovelace"
},
{
"quantity": "1",
"unit": "15509d4cb60f066ca4c7e982d764d6ceb4324cb33776d1711da1beee42616279416c69656e3035303637"
}
],
"output_index": 0,
"tx_hash": "536a0508eed03408c2d8a7d1820973fc6813a4273c3a1f404aa148421c0084ae"
},
{
"address": "addr1q82aucg0xgdsvzdqtppz35ymw4x7dje2ug9wsvy3an6v47u6msd43ruwsyp6lvfz90thjgtaunfy2ynlk4etz8rn254qd8fxw5",
"amount": [
{
"quantity": "99000000",
"unit": "lovelace"
}
],
"output_index": 0,
"tx_hash": "65e3f1d3950ca82aaaa97bf12184ca199d48c19ea7bcf7dd4a99ce1b6baccdb9"
}
],
"outputs": [
{
"address": "addr1q82kxsz4sxtz7c5wn5keer9y8648knhj8kcpkq99e24qye2q0ka7w7a9lvdxzkvkfzwk0uqmayyaqjllu6d003r5zd9qjrvatz",
"amount": [
{
"quantity": "96330679",
"unit": "lovelace"
}
]
},
{
"address": "addr1q8c6g5u4grn35hdctcu0mr0yvx3gkdyry08dn7kcdnr7hp0j0a6c9hllaknrxj5hrj2dup0udx3x9ael8stcgw6pk96srye9p5",
"amount": [
{
"quantity": "1379280",
"unit": "lovelace"
},
{
"quantity": "1",
"unit": "15509d4cb60f066ca4c7e982d764d6ceb4324cb33776d1711da1beee42616279416c69656e3035303637"
}
]
},
{
"address": "addr1qxq47au29wss4g8acjk0zsmwwq0h34hhzump6stye9wuldm7nm0t6ad3jz9hy5v3smye0nvcumtzu43k7r36ag0w29qqdafvvk",
"amount": [
{
"quantity": "2475000",
"unit": "lovelace"
}
]
}
]
}
1 change: 1 addition & 0 deletions testdata/transactionwithdrawlsintegration.golden
@@ -0,0 +1 @@
[]

0 comments on commit 2689030

Please sign in to comment.