Skip to content

Commit

Permalink
Merge pull request #424 from insolar/MN-691-fix-transaction-api
Browse files Browse the repository at this point in the history
MN-691: fix transaction api
  • Loading branch information
pavlushev committed Aug 24, 2020
2 parents edd8ace + 7991d8b commit ac88e6b
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 52 deletions.
2 changes: 2 additions & 0 deletions component/storer.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ func StoreTxRegister(tx Execer, transactions []observer.TxRegister) error {
"member_from_ref",
"member_to_ref",
"deposit_to_ref",
"deposit_from_ref",
"amount",
}
var values []interface{}
Expand All @@ -302,6 +303,7 @@ func StoreTxRegister(tx Execer, transactions []observer.TxRegister) error {
t.MemberFromReference,
t.MemberToReference,
t.DepositToReference,
t.DepositFromReference,
t.Amount,
)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/app/api/mappers.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TxToAPITx(tx models.Transaction, indexType models.TxIndexType) interface{}
}

switch tx.Type {
case models.TTypeMigration:
case models.TTypeMigration, models.TTypeAllocation:
res := SchemaMigration{
SchemasTransactionAbstract: internalTx,
Type: string(tx.Type),
Expand Down
38 changes: 38 additions & 0 deletions internal/app/api/mappers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
package api

import (
"github.com/insolar/insolar/insolar"
"github.com/insolar/insolar/insolar/gen"
"github.com/stretchr/testify/require"
"math/big"
"testing"

Expand Down Expand Up @@ -306,3 +309,38 @@ func TestNextRelease(t *testing.T) {
})
}
}

func TestAllocationTransactions(t *testing.T) {
memberFrom := gen.Reference()
memberTo := gen.Reference()
depositTo := gen.Reference()
tx := models.Transaction{
Amount: "100",
Fee: *NullableString("0"),
StatusRegistered: true,
TransactionID: gen.Reference().Bytes(),
Type: models.TTypeAllocation,
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
}
indexType := models.TxIndexTypeFinishPulseRecord
txMigration := SchemaMigration{
SchemasTransactionAbstract: SchemasTransactionAbstract{
Amount: tx.Amount,
Fee: NullableString(tx.Fee),
Index: tx.Index(indexType),
PulseNumber: tx.PulseNumber(),
Status: string(tx.Status()),
Timestamp: tx.Timestamp(),
TxID: insolar.NewReferenceFromBytes(tx.TransactionID).String(),
Type: string(tx.Type),
},
Type: string(tx.Type),
FromMemberReference: memberFrom.String(),
ToMemberReference: memberTo.String(),
ToDepositReference: depositTo.String(),
}
res := TxToAPITx(tx, indexType)
require.Equal(t, txMigration, res.(SchemaMigration))
}
21 changes: 13 additions & 8 deletions internal/app/observer/collecting/transactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,15 +273,20 @@ func (c *TxRegisterCollector) fromDepositToDeposit(log insolar.Logger, rec expor

log = log.WithField("tx_id", txID.GetLocal().DebugString())
log.Debug("created TxRegister")
var fromDeposit []byte
if !request.Caller.IsEmpty() {
fromDeposit = request.Caller.Bytes()
}
return &observer.TxRegister{
Type: models.TransactionType(txType),
TransactionID: txID,
PulseNumber: int64(rec.Record.ID.Pulse()),
RecordNumber: int64(rec.RecordNumber),
MemberFromReference: fromMember.Bytes(),
MemberToReference: toMember.Bytes(),
DepositToReference: toDeposit.Bytes(),
Amount: amount,
Type: models.TransactionType(txType),
TransactionID: txID,
PulseNumber: int64(rec.Record.ID.Pulse()),
RecordNumber: int64(rec.RecordNumber),
MemberFromReference: fromMember.Bytes(),
MemberToReference: toMember.Bytes(),
DepositToReference: toDeposit.Bytes(),
DepositFromReference: fromDeposit,
Amount: amount,
}
}

Expand Down
77 changes: 42 additions & 35 deletions internal/app/observer/collecting/transactions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,15 +140,17 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
memberFrom := gen.Reference()
memberTo := gen.Reference()
depositTo := gen.Reference()
caller := gen.Reference()
expectedTx := observer.TxRegister{
TransactionID: txID,
Type: models.TTypeMigration,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
Amount: "123",
TransactionID: txID,
Type: models.TTypeMigration,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
DepositFromReference: caller.Bytes(),
Amount: "123",
}

arguments, err := insolar.Serialize([]interface{}{
Expand All @@ -166,7 +168,7 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
Method: methodTransferToDeposit,
ReturnMode: record.ReturnResult,
Arguments: arguments,
Caller: gen.Reference(),
Caller: caller,
Prototype: proxyDeposit.PrototypeReference,
}),
ID: *txID.GetLocal(),
Expand All @@ -184,15 +186,17 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
memberFrom := gen.Reference()
memberTo := gen.Reference()
depositTo := gen.Reference()
caller := gen.Reference()
expectedTx := observer.TxRegister{
TransactionID: txID,
Type: models.TTypeMigration,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
Amount: "123",
TransactionID: txID,
Type: models.TTypeMigration,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
DepositFromReference: caller.Bytes(),
Amount: "123",
}

arguments, err := insolar.Serialize([]interface{}{
Expand All @@ -209,7 +213,7 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
Method: methodTransferToDeposit,
ReturnMode: record.ReturnResult,
Arguments: arguments,
Caller: gen.Reference(),
Caller: caller,
Prototype: proxyDeposit.PrototypeReference,
}),
ID: *txID.GetLocal(),
Expand All @@ -227,15 +231,17 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
memberFrom := gen.Reference()
memberTo := gen.Reference()
depositTo := gen.Reference()
caller := gen.Reference()
expectedTx := observer.TxRegister{
TransactionID: txID,
Type: models.TTypeAllocation,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
Amount: "123",
TransactionID: txID,
Type: models.TTypeAllocation,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: memberFrom.Bytes(),
MemberToReference: memberTo.Bytes(),
DepositToReference: depositTo.Bytes(),
DepositFromReference: caller.Bytes(),
Amount: "123",
}

arguments, err := insolar.Serialize([]interface{}{
Expand All @@ -253,7 +259,7 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
Method: methodTransferToDeposit,
ReturnMode: record.ReturnResult,
Arguments: arguments,
Caller: gen.Reference(),
Caller: caller,
Prototype: proxyDeposit.PrototypeReference,
}),
ID: *txID.GetLocal(),
Expand All @@ -270,14 +276,15 @@ func TestTxRegisterCollector_Collect(t *testing.T) {
txID := *insolar.NewRecordReference(gen.ID())
memberTo := gen.Reference()
expectedTx := observer.TxRegister{
TransactionID: txID,
Type: models.TTypeRelease,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: nil,
MemberToReference: memberTo.Bytes(),
DepositToReference: nil,
Amount: "123",
TransactionID: txID,
Type: models.TTypeRelease,
PulseNumber: int64(txID.GetLocal().Pulse()),
RecordNumber: int64(rand.Int31()),
MemberFromReference: nil,
MemberToReference: memberTo.Bytes(),
DepositToReference: nil,
DepositFromReference: nil,
Amount: "123",
}

request := member.Request{
Expand Down
17 changes: 9 additions & 8 deletions internal/app/observer/transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@ import (
)

type TxRegister struct {
TransactionID insolar.Reference
Type models.TransactionType
PulseNumber int64
RecordNumber int64
MemberFromReference []byte
MemberToReference []byte
DepositToReference []byte
Amount string
TransactionID insolar.Reference
Type models.TransactionType
PulseNumber int64
RecordNumber int64
MemberFromReference []byte
MemberToReference []byte
DepositToReference []byte
DepositFromReference []byte
Amount string
}

func (t *TxRegister) Validate() error {
Expand Down

0 comments on commit ac88e6b

Please sign in to comment.