mirror of https://github.com/status-im/go-waku.git
parent
0c873e3c2d
commit
b81bd6ff30
|
@ -1,7 +1,5 @@
|
||||||
package rpc
|
package rpc
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetV1Info(t *testing.T) {
|
||||||
|
var reply InfoReply
|
||||||
|
|
||||||
|
request, err := http.NewRequest(http.MethodPost, "url", bytes.NewReader([]byte("")))
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
d := &DebugService{nil}
|
||||||
|
|
||||||
|
err = d.GetV1Info(request, &InfoArgs{}, &reply)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, "2.0", reply.Version)
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/status-im/go-waku/waku/v2/node"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func makeRelayService(t *testing.T) *RelayService {
|
||||||
|
options := node.WithWakuRelay()
|
||||||
|
n, err := node.New(context.Background(), options)
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = n.Start()
|
||||||
|
require.NoError(t, err)
|
||||||
|
return &RelayService{n}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPostV1Message(t *testing.T) {
|
||||||
|
var reply SuccessReply
|
||||||
|
|
||||||
|
d := makeRelayService(t)
|
||||||
|
|
||||||
|
err := d.PostV1Message(
|
||||||
|
makeRequest(t),
|
||||||
|
&RelayMessageArgs{},
|
||||||
|
&reply,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, reply.Success)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSubscription(t *testing.T) {
|
||||||
|
var reply SuccessReply
|
||||||
|
|
||||||
|
d := makeRelayService(t)
|
||||||
|
args := &TopicsArgs{Topics: []string{"test"}}
|
||||||
|
|
||||||
|
err := d.PostV1Subscription(
|
||||||
|
makeRequest(t),
|
||||||
|
args,
|
||||||
|
&reply,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, reply.Success)
|
||||||
|
|
||||||
|
err = d.DeleteV1Subscription(
|
||||||
|
makeRequest(t),
|
||||||
|
args,
|
||||||
|
&reply,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, reply.Success)
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/status-im/go-waku/waku/v2/node"
|
||||||
|
"github.com/status-im/go-waku/waku/v2/protocol/pb"
|
||||||
|
"github.com/status-im/go-waku/waku/v2/protocol/store"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreService struct {
|
||||||
|
node *node.WakuNode
|
||||||
|
}
|
||||||
|
|
||||||
|
// cursor *pb.Index
|
||||||
|
// pageSize uint64
|
||||||
|
// asc bool
|
||||||
|
|
||||||
|
type StorePagingOptions struct {
|
||||||
|
PageSize uint64 `json:"pageSize,omitempty"`
|
||||||
|
Cursor *pb.Index `json:"cursor,omitempty"`
|
||||||
|
Forward bool `json:"forward,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StoreMessagesArgs struct {
|
||||||
|
Topic string `json:"pubsubTopic,omitempty"`
|
||||||
|
ContentFilters []string `json:"contentFilters,omitempty"`
|
||||||
|
StartTime float64 `json:"startTime,omitempty"`
|
||||||
|
EndTime float64 `json:"endTime,omitempty"`
|
||||||
|
PagingOptions StorePagingOptions `json:"pagingOptions,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StoreMessagesReply struct {
|
||||||
|
Messages []*pb.WakuMessage `json:"messages,omitempty"`
|
||||||
|
PagingInfo StorePagingOptions `json:"pagingInfo,omitempty"`
|
||||||
|
Error string `json:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreService) GetV1Messages(req *http.Request, args *StoreMessagesArgs, reply *StoreMessagesReply) error {
|
||||||
|
options := []store.HistoryRequestOption{
|
||||||
|
store.WithAutomaticRequestId(),
|
||||||
|
store.WithAutomaticPeerSelection(),
|
||||||
|
store.WithPaging(args.PagingOptions.Forward, args.PagingOptions.PageSize),
|
||||||
|
store.WithCursor(args.PagingOptions.Cursor),
|
||||||
|
}
|
||||||
|
res, err := s.node.Store().Query(
|
||||||
|
req.Context(),
|
||||||
|
store.Query{
|
||||||
|
Topic: args.Topic,
|
||||||
|
ContentTopics: args.ContentFilters,
|
||||||
|
StartTime: args.StartTime,
|
||||||
|
EndTime: args.EndTime,
|
||||||
|
},
|
||||||
|
options...,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Error querying messages:", err)
|
||||||
|
reply.Error = err.Error()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
reply.Messages = res.Messages
|
||||||
|
reply.PagingInfo = StorePagingOptions{
|
||||||
|
PageSize: args.PagingOptions.PageSize,
|
||||||
|
Cursor: res.Cursor(),
|
||||||
|
Forward: args.PagingOptions.Forward,
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/status-im/go-waku/waku/v2/node"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func makeStoreService(t *testing.T) *StoreService {
|
||||||
|
options := node.WithWakuStore(false, false)
|
||||||
|
n, err := node.New(context.Background(), options)
|
||||||
|
require.NoError(t, err)
|
||||||
|
err = n.Start()
|
||||||
|
require.NoError(t, err)
|
||||||
|
return &StoreService{n}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetV1Message(t *testing.T) {
|
||||||
|
var reply StoreMessagesReply
|
||||||
|
|
||||||
|
s := makeStoreService(t)
|
||||||
|
|
||||||
|
err := s.GetV1Messages(
|
||||||
|
makeRequest(t),
|
||||||
|
&StoreMessagesArgs{},
|
||||||
|
&reply,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotEmpty(t, reply.Error)
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func makeRequest(t *testing.T) *http.Request {
|
||||||
|
request, err := http.NewRequest(http.MethodPost, "url", bytes.NewReader([]byte("")))
|
||||||
|
require.NoError(t, err)
|
||||||
|
return request
|
||||||
|
}
|
|
@ -33,6 +33,11 @@ func NewWakuRpc(node *node.WakuNode, address string, port int) *WakuRpc {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = s.RegisterService(&StoreService{node}, "Store")
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.HandleFunc("/jsonrpc", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/jsonrpc", func(w http.ResponseWriter, r *http.Request) {
|
||||||
t := time.Now()
|
t := time.Now()
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/status-im/go-waku/waku/v2/node"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestWakuRpc(t *testing.T) {
|
||||||
|
options := node.WithWakuStore(false, false)
|
||||||
|
n, err := node.New(context.Background(), options)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
rpc := NewWakuRpc(n, "127.0.0.1", 8080)
|
||||||
|
require.NotNil(t, rpc.server)
|
||||||
|
require.Equal(t, rpc.server.Addr, "127.0.0.1:8080")
|
||||||
|
}
|
Loading…
Reference in New Issue