Skip to content

Commit bf1c429

Browse files
authored
Merge branch 'master' into dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/kms-1.50.1
2 parents 1404fd5 + 2783263 commit bf1c429

6 files changed

Lines changed: 207 additions & 0 deletions

File tree

access/client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ type Client interface {
8989
// GetTransactionResultsByBlockID returns all the transaction results for a specified block.
9090
GetTransactionResultsByBlockID(ctx context.Context, blockID flow.Identifier) ([]*flow.TransactionResult, error)
9191

92+
// GetScheduledTransaction returns a scheduled transaction by scheduled tx ID.
93+
GetScheduledTransaction(ctx context.Context, scheduledTxID uint64) (*flow.Transaction, error)
94+
95+
// GetScheduledTransactionResult returns the result of a scheduled transaction by scheduled tx ID.
96+
GetScheduledTransactionResult(ctx context.Context, scheduledTxID uint64) (*flow.TransactionResult, error)
97+
9298
// GetSystemTransaction returns the system transaction for the given block ID.
9399
GetSystemTransaction(ctx context.Context, blockID flow.Identifier) (*flow.Transaction, error)
94100

access/grpc/client.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,14 @@ func (c *Client) GetTransactionResultsByBlockID(ctx context.Context, blockID flo
216216
return c.grpc.GetTransactionResultsByBlockID(ctx, blockID)
217217
}
218218

219+
func (c *Client) GetScheduledTransaction(ctx context.Context, scheduledTxID uint64) (*flow.Transaction, error) {
220+
return c.grpc.GetScheduledTransaction(ctx, scheduledTxID)
221+
}
222+
223+
func (c *Client) GetScheduledTransactionResult(ctx context.Context, scheduledTxID uint64) (*flow.TransactionResult, error) {
224+
return c.grpc.GetScheduledTransactionResult(ctx, scheduledTxID)
225+
}
226+
219227
func (c *Client) SendAndSubscribeTransactionStatuses(
220228
ctx context.Context,
221229
tx flow.Transaction,

access/grpc/grpc.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,52 @@ func (c *BaseClient) GetTransactionResultsByBlockID(
600600
return results, nil
601601
}
602602

603+
func (c *BaseClient) GetScheduledTransaction(
604+
ctx context.Context,
605+
scheduledTxID uint64,
606+
opts ...grpc.CallOption,
607+
) (*flow.Transaction, error) {
608+
609+
req := &access.GetScheduledTransactionRequest{
610+
Id: scheduledTxID,
611+
}
612+
613+
res, err := c.rpcClient.GetScheduledTransaction(ctx, req, opts...)
614+
if err != nil {
615+
return nil, newRPCError(err)
616+
}
617+
618+
unparsedResults := res.GetTransaction()
619+
parsed, err := convert.MessageToTransaction(unparsedResults)
620+
if err != nil {
621+
return nil, newMessageToEntityError(entityTransaction, err)
622+
}
623+
624+
return &parsed, nil
625+
}
626+
627+
func (c *BaseClient) GetScheduledTransactionResult(
628+
ctx context.Context,
629+
scheduledTxID uint64,
630+
opts ...grpc.CallOption,
631+
) (*flow.TransactionResult, error) {
632+
req := &access.GetScheduledTransactionResultRequest{
633+
Id: scheduledTxID,
634+
}
635+
636+
res, err := c.rpcClient.GetScheduledTransactionResult(ctx, req, opts...)
637+
if err != nil {
638+
return nil, newRPCError(err)
639+
}
640+
641+
parsed, err := convert.MessageToTransactionResult(res, c.jsonOptions)
642+
if err != nil {
643+
return nil, newMessageToEntityError(entityTransactionResult, err)
644+
}
645+
646+
return &parsed, nil
647+
}
648+
603649
func (c *BaseClient) GetAccount(ctx context.Context, address flow.Address, opts ...grpc.CallOption) (*flow.Account, error) {
604650
return c.GetAccountAtLatestBlock(ctx, address, opts...)
605651
}

access/grpc/grpc_test.go

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,85 @@ func TestClient_GetTransactionResultsByBlockID(t *testing.T) {
904904
}))
905905
}
906906

907+
func TestClient_GetScheduledTransaction(t *testing.T) {
908+
txs := test.TransactionGenerator()
909+
910+
t.Run("Success", clientTest(func(t *testing.T, ctx context.Context, rpc *mocks.MockRPCClient, c *BaseClient) {
911+
var scheduledTxID uint64 = 42
912+
expectedTx := txs.New()
913+
914+
txMsg, err := convert.TransactionToMessage(*expectedTx)
915+
require.NoError(t, err)
916+
917+
response := &access.TransactionResponse{
918+
Transaction: txMsg,
919+
}
920+
921+
rpc.On("GetScheduledTransaction", ctx, mock.Anything).Return(response, nil)
922+
923+
tx, err := c.GetScheduledTransaction(ctx, scheduledTxID)
924+
require.NoError(t, err)
925+
926+
assert.Equal(t, expectedTx, tx)
927+
}))
928+
929+
t.Run("Not found error", clientTest(func(t *testing.T, ctx context.Context, rpc *mocks.MockRPCClient, c *BaseClient) {
930+
var scheduledTxID uint64 = 99
931+
932+
rpc.On("GetScheduledTransaction", ctx, mock.Anything).
933+
Return(nil, errNotFound)
934+
935+
tx, err := c.GetScheduledTransaction(ctx, scheduledTxID)
936+
assert.Error(t, err)
937+
assert.Equal(t, codes.NotFound, status.Code(err))
938+
assert.Nil(t, tx)
939+
}))
940+
}
941+
942+
func TestClient_GetScheduledTransactionResult(t *testing.T) {
943+
t.Run("Success", clientTest(func(t *testing.T, ctx context.Context, rpc *mocks.MockRPCClient, c *BaseClient) {
944+
results := test.TransactionResultGenerator(flow.EventEncodingVersionCCF)
945+
var scheduledTxID uint64 = 42
946+
expectedResult := results.New()
947+
response, err := convert.TransactionResultToMessage(expectedResult, flow.EventEncodingVersionCCF)
948+
require.NoError(t, err)
949+
950+
rpc.On("GetScheduledTransactionResult", ctx, mock.Anything).Return(response, nil)
951+
952+
result, err := c.GetScheduledTransactionResult(ctx, scheduledTxID)
953+
require.NoError(t, err)
954+
955+
assert.Equal(t, expectedResult, *result)
956+
}))
957+
958+
t.Run("Success with jsoncdc", clientTest(func(t *testing.T, ctx context.Context, rpc *mocks.MockRPCClient, c *BaseClient) {
959+
results := test.TransactionResultGenerator(flow.EventEncodingVersionJSONCDC)
960+
var scheduledTxID uint64 = 42
961+
expectedResult := results.New()
962+
response, err := convert.TransactionResultToMessage(expectedResult, flow.EventEncodingVersionJSONCDC)
963+
require.NoError(t, err)
964+
965+
rpc.On("GetScheduledTransactionResult", ctx, mock.Anything).Return(response, nil)
966+
967+
result, err := c.GetScheduledTransactionResult(ctx, scheduledTxID)
968+
require.NoError(t, err)
969+
970+
assert.Equal(t, expectedResult, *result)
971+
}))
972+
973+
t.Run("Not found error", clientTest(func(t *testing.T, ctx context.Context, rpc *mocks.MockRPCClient, c *BaseClient) {
974+
var scheduledTxID uint64 = 99
975+
976+
rpc.On("GetScheduledTransactionResult", ctx, mock.Anything).
977+
Return(nil, errNotFound)
978+
979+
result, err := c.GetScheduledTransactionResult(ctx, scheduledTxID)
980+
assert.Error(t, err)
981+
assert.Equal(t, codes.NotFound, status.Code(err))
982+
assert.Nil(t, result)
983+
}))
984+
}
985+
907986
func TestClient_GetAccountAtLatestBlock(t *testing.T) {
908987
accounts := test.AccountGenerator()
909988
addresses := test.AddressGenerator()

access/http/client.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,14 @@ func (c *Client) GetTransactionResultsByBlockID(ctx context.Context, blockID flo
188188
return nil, fmt.Errorf("not implemented")
189189
}
190190

191+
func (c *Client) GetScheduledTransaction(ctx context.Context, scheduledTxID uint64) (*flow.Transaction, error) {
192+
return nil, fmt.Errorf("not implemented")
193+
}
194+
195+
func (c *Client) GetScheduledTransactionResult(ctx context.Context, scheduledTxID uint64) (*flow.TransactionResult, error) {
196+
return nil, fmt.Errorf("not implemented")
197+
}
198+
191199
func (c *Client) GetSystemTransaction(ctx context.Context, blockID flow.Identifier) (*flow.Transaction, error) {
192200
return nil, fmt.Errorf("not implemented")
193201
}

access/mocks/Client.go

Lines changed: 60 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)