status-go/t/e2e/whisper/mailservice_test.go

70 lines
1.8 KiB
Go

package whisper
import (
"bytes"
"io/ioutil"
"net/http"
"testing"
"github.com/status-im/status-go/node"
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/t/e2e"
"github.com/status-im/status-go/t/utils"
"github.com/stretchr/testify/suite"
)
func TestMailServiceSuite(t *testing.T) {
utils.Init()
suite.Run(t, new(MailServiceSuite))
}
type MailServiceSuite struct {
e2e.StatusNodeTestSuite
}
func (s *MailServiceSuite) SetupTest() {
s.StatusNode = node.New()
}
// TestShhextRequestMessagesRPCMethodAvailability tests if `shhext_requestMessages` is available
// through inproc and HTTP interfaces.
func (s *MailServiceSuite) TestShhextRequestMessagesRPCMethodAvailability() {
r := s.Require()
s.StartTestNode(func(config *params.NodeConfig) {
config.HTTPEnabled = true
config.AddAPIModule("shhext")
})
defer s.StopTestNode()
client := s.StatusNode.RPCPrivateClient()
r.NotNil(client)
// This error means that the method is available through inproc communication
// as the validation of params occurred.
err := client.Call(nil, "shhext_requestMessages", map[string]interface{}{
"mailServerPeer": "xxx",
})
r.EqualError(err, `invalid mailServerPeer value: invalid URL scheme, want "enode"`)
// Do the same but using HTTP interface.
req, err := http.NewRequest("POST", "http://localhost:8645", bytes.NewBuffer([]byte(`{
"jsonrpc": "2.0",
"id": 1,
"method": "shhext_requestMessages",
"params": [{}]
}`)))
req.Header.Set("Content-Type", "application/json")
r.NoError(err)
resp, err := http.DefaultClient.Do(req)
r.NoError(err)
defer func() {
err := resp.Body.Close()
r.NoError(err)
}()
r.Equal(200, resp.StatusCode)
data, err := ioutil.ReadAll(resp.Body)
r.NoError(err)
r.Contains(string(data), `invalid mailServerPeer value`)
}