From d12b8587834dbd5c45db413d7f0e87da746405f4 Mon Sep 17 00:00:00 2001 From: Artem Bogomaz Date: Mon, 8 Jan 2024 14:50:07 +0700 Subject: [PATCH 1/3] changing SubmitTX to read permissions --- api/rpc_test.go | 16 +++++++++++++--- nodebuilder/state/state.go | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/api/rpc_test.go b/api/rpc_test.go index 9ff35bf1e4..a17dddd245 100644 --- a/api/rpc_test.go +++ b/api/rpc_test.go @@ -177,21 +177,31 @@ func TestAuthedRPC(t *testing.T) { stats, err := rpcClient.DAS.SamplingStats(ctx) require.NoError(t, err) require.Equal(t, expected, stats) + + expectedResp := &state.TxResponse{} + server.State.EXPECT().SubmitTx(gomock.Any(), gomock.Any()).Return(expectedResp, nil) + txResp, err := rpcClient.State.SubmitTx(ctx, []byte{}) + require.NoError(t, err) + require.Equal(t, expectedResp, txResp) } else { _, err := rpcClient.DAS.SamplingStats(ctx) require.Error(t, err) require.ErrorContains(t, err, "missing permission") + + _, err = rpcClient.State.SubmitTx(ctx, []byte{}) + require.Error(t, err) + require.ErrorContains(t, err, "missing permission") } // 2. Test method with write-level permissions expectedResp := &state.TxResponse{} if tt.perm > 2 { - server.State.EXPECT().SubmitTx(gomock.Any(), gomock.Any()).Return(expectedResp, nil) - txResp, err := rpcClient.State.SubmitTx(ctx, []byte{}) + server.State.EXPECT().Delegate(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(expectedResp, nil) + txResp, err := rpcClient.State.Delegate(ctx, state.ValAddress{}, state.Int{}, state.Int{}, 0) require.NoError(t, err) require.Equal(t, expectedResp, txResp) } else { - _, err := rpcClient.State.SubmitTx(ctx, []byte{}) + _, err := rpcClient.State.Delegate(ctx, state.ValAddress{}, state.Int{}, state.Int{}, 0) require.Error(t, err) require.ErrorContains(t, err, "missing permission") } diff --git a/nodebuilder/state/state.go b/nodebuilder/state/state.go index 83408680da..667f0050d1 100644 --- a/nodebuilder/state/state.go +++ b/nodebuilder/state/state.go @@ -110,7 +110,7 @@ type API struct { fee state.Int, gasLimit uint64, ) (*state.TxResponse, error) `perm:"write"` - SubmitTx func(ctx context.Context, tx state.Tx) (*state.TxResponse, error) `perm:"write"` + SubmitTx func(ctx context.Context, tx state.Tx) (*state.TxResponse, error) `perm:"read"` SubmitPayForBlob func( ctx context.Context, fee state.Int, From d8466398c4a0d25ac5f5231356d20238e27274bc Mon Sep 17 00:00:00 2001 From: Artem Bogomaz Date: Mon, 8 Jan 2024 20:05:40 +0700 Subject: [PATCH 2/3] lint fix --- api/rpc_test.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/rpc_test.go b/api/rpc_test.go index a17dddd245..222367aa03 100644 --- a/api/rpc_test.go +++ b/api/rpc_test.go @@ -179,7 +179,8 @@ func TestAuthedRPC(t *testing.T) { require.Equal(t, expected, stats) expectedResp := &state.TxResponse{} - server.State.EXPECT().SubmitTx(gomock.Any(), gomock.Any()).Return(expectedResp, nil) + server.State.EXPECT().SubmitTx(gomock.Any(), + gomock.Any()).Return(expectedResp, nil) txResp, err := rpcClient.State.SubmitTx(ctx, []byte{}) require.NoError(t, err) require.Equal(t, expectedResp, txResp) @@ -196,12 +197,15 @@ func TestAuthedRPC(t *testing.T) { // 2. Test method with write-level permissions expectedResp := &state.TxResponse{} if tt.perm > 2 { - server.State.EXPECT().Delegate(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(expectedResp, nil) - txResp, err := rpcClient.State.Delegate(ctx, state.ValAddress{}, state.Int{}, state.Int{}, 0) + server.State.EXPECT().Delegate(gomock.Any(), gomock.Any(), + gomock.Any(), gomock.Any(), gomock.Any()).Return(expectedResp, nil) + txResp, err := rpcClient.State.Delegate(ctx, + state.ValAddress{}, state.Int{}, state.Int{}, 0) require.NoError(t, err) require.Equal(t, expectedResp, txResp) } else { - _, err := rpcClient.State.Delegate(ctx, state.ValAddress{}, state.Int{}, state.Int{}, 0) + _, err := rpcClient.State.Delegate(ctx, + state.ValAddress{}, state.Int{}, state.Int{}, 0) require.Error(t, err) require.ErrorContains(t, err, "missing permission") } From eeaece6a1e39752d2b8a5e2806a45d911782b1fe Mon Sep 17 00:00:00 2001 From: Artem Bogomaz Date: Wed, 10 Jan 2024 11:26:42 +0700 Subject: [PATCH 3/3] removing based on PR comments --- api/rpc_test.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/api/rpc_test.go b/api/rpc_test.go index 222367aa03..ec308a2320 100644 --- a/api/rpc_test.go +++ b/api/rpc_test.go @@ -177,21 +177,10 @@ func TestAuthedRPC(t *testing.T) { stats, err := rpcClient.DAS.SamplingStats(ctx) require.NoError(t, err) require.Equal(t, expected, stats) - - expectedResp := &state.TxResponse{} - server.State.EXPECT().SubmitTx(gomock.Any(), - gomock.Any()).Return(expectedResp, nil) - txResp, err := rpcClient.State.SubmitTx(ctx, []byte{}) - require.NoError(t, err) - require.Equal(t, expectedResp, txResp) } else { _, err := rpcClient.DAS.SamplingStats(ctx) require.Error(t, err) require.ErrorContains(t, err, "missing permission") - - _, err = rpcClient.State.SubmitTx(ctx, []byte{}) - require.Error(t, err) - require.ErrorContains(t, err, "missing permission") } // 2. Test method with write-level permissions