3
3
package tests
4
4
5
5
import (
6
+ "bytes"
6
7
"context"
8
+ "fmt"
9
+ "net/http"
10
+ "os"
7
11
"testing"
8
12
"time"
9
13
@@ -15,6 +19,7 @@ import (
15
19
libshare "github.com/celestiaorg/go-square/v2/share"
16
20
17
21
"github.com/celestiaorg/celestia-node/api/rpc/client"
22
+ "github.com/celestiaorg/celestia-node/api/rpc/perms"
18
23
"github.com/celestiaorg/celestia-node/blob"
19
24
"github.com/celestiaorg/celestia-node/nodebuilder"
20
25
"github.com/celestiaorg/celestia-node/nodebuilder/node"
@@ -122,6 +127,15 @@ func TestBlobRPC(t *testing.T) {
122
127
height , err := rpcClient .Blob .Submit (ctx , []* blob.Blob {newBlob }, state .NewTxConfig ())
123
128
require .NoError (t , err )
124
129
require .True (t , height != 0 )
130
+
131
+ txResp , err := rpcClient .State .SubmitPayForBlob (ctx , libBlobs , state .NewTxConfig ())
132
+ require .NoError (t , err )
133
+ require .NotNil (t , txResp )
134
+ require .Equal (t , uint32 (0 ), txResp .Code )
135
+
136
+ b , err := rpcClient .Blob .Get (ctx , uint64 (txResp .Height ), newBlob .Namespace (), newBlob .Commitment )
137
+ require .NoError (t , err )
138
+ require .NotNil (t , b )
125
139
}
126
140
127
141
// TestHeaderSubscription ensures that the header subscription over RPC works
@@ -168,3 +182,35 @@ func TestHeaderSubscription(t *testing.T) {
168
182
err = light .Stop (ctx )
169
183
require .NoError (t , err )
170
184
}
185
+
186
+ func TestSubmitBlobOverHTTP (t * testing.T ) {
187
+ ctx , cancel := context .WithTimeout (context .Background (), swamp .DefaultTestTimeout )
188
+ t .Cleanup (cancel )
189
+
190
+ sw := swamp .NewSwamp (t , swamp .WithBlockTime (time .Second ))
191
+ // start a bridge node
192
+ bridge := sw .NewBridgeNode ()
193
+ err := bridge .Start (ctx )
194
+ require .NoError (t , err )
195
+
196
+ adminPerms := []auth.Permission {"public" , "read" , "write" , "admin" }
197
+ jwt , err := bridge .AdminServ .AuthNew (ctx , adminPerms )
198
+ require .NoError (t , err )
199
+
200
+ payload , err := os .ReadFile ("testdata/submitPFB.json" )
201
+ require .NoError (t , err )
202
+
203
+ bridgeAddr := "http://" + bridge .RPCServer .ListenAddr ()
204
+ req , err := http .NewRequest ("POST" , bridgeAddr , bytes .NewBuffer (payload ))
205
+ require .NoError (t , err )
206
+
207
+ req .Header = http.Header {
208
+ perms .AuthKey : []string {fmt .Sprintf ("Bearer %s" , jwt )},
209
+ }
210
+
211
+ httpClient := & http.Client {Timeout : time .Second * 5 }
212
+ resp , err := httpClient .Do (req )
213
+ require .NoError (t , err )
214
+ defer resp .Body .Close ()
215
+ require .Equal (t , http .StatusOK , resp .StatusCode )
216
+ }
0 commit comments