status-go/notifications/push/fcm/notification_test.go

81 lines
1.9 KiB
Go
Raw Normal View History

2017-10-11 13:51:43 +00:00
package fcm
import (
"encoding/json"
2017-10-10 15:33:12 +00:00
"errors"
"testing"
2017-10-10 15:33:12 +00:00
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/suite"
)
func TestFCMClientTestSuite(t *testing.T) {
2017-10-11 13:52:11 +00:00
suite.Run(t, new(NotifierTestSuite))
}
2017-10-11 13:52:11 +00:00
type NotifierTestSuite struct {
2017-10-12 14:31:14 +00:00
suite.Suite
2017-10-10 15:33:12 +00:00
fcmClientMock *MockFirebaseClient
2017-10-10 15:33:12 +00:00
fcmClientMockCtrl *gomock.Controller
}
2017-10-11 13:52:11 +00:00
func (s *NotifierTestSuite) SetupTest() {
2017-10-10 15:33:12 +00:00
s.fcmClientMockCtrl = gomock.NewController(s.T())
s.fcmClientMock = NewMockFirebaseClient(s.fcmClientMockCtrl)
}
2017-10-11 13:52:11 +00:00
func (s *NotifierTestSuite) TearDownTest() {
2017-10-10 15:33:12 +00:00
s.fcmClientMockCtrl.Finish()
}
func (s *NotifierTestSuite) TestSendSuccess() {
2017-10-10 15:33:12 +00:00
ids := []string{"1"}
dataPayload := make(map[string]string)
dataPayload["from"] = "a"
dataPayload["to"] = "b"
dataPayloadByteArray, err := json.Marshal(dataPayload)
s.Require().NoError(err)
dataPayloadJSON := string(dataPayloadByteArray)
s.fcmClientMock.EXPECT().NewFcmRegIdsMsg(ids, dataPayload).Times(1)
2017-10-10 15:33:12 +00:00
s.fcmClientMock.EXPECT().Send().Return(nil, nil).Times(1)
fcmClient := Notification{s.fcmClientMock}
2017-10-10 15:33:12 +00:00
err = fcmClient.Send(dataPayloadJSON, ids...)
2017-10-10 15:33:12 +00:00
2017-10-11 13:52:11 +00:00
s.NoError(err)
2017-10-10 15:33:12 +00:00
}
func (s *NotifierTestSuite) TestSendError() {
2017-10-10 15:33:12 +00:00
expectedError := errors.New("error")
ids := []string{"2"}
dataPayload := make(map[string]string)
dataPayload["from"] = "c"
dataPayload["to"] = "d"
dataPayloadByteArray, err := json.Marshal(dataPayload)
s.Require().NoError(err)
dataPayloadJSON := string(dataPayloadByteArray)
s.fcmClientMock.EXPECT().NewFcmRegIdsMsg(ids, dataPayload).Times(1)
2017-10-10 15:33:12 +00:00
s.fcmClientMock.EXPECT().Send().Return(nil, expectedError).Times(1)
fcmClient := Notification{s.fcmClientMock}
2017-10-10 15:33:12 +00:00
err = fcmClient.Send(dataPayloadJSON, ids...)
2017-10-10 15:33:12 +00:00
2017-10-11 13:52:11 +00:00
s.Equal(expectedError, err)
2017-10-10 15:33:12 +00:00
}
2017-10-11 13:51:43 +00:00
func (s *NotifierTestSuite) TestSendWithInvalidJSON() {
ids := []string{"3"}
dataPayloadJSON := "{a=b}"
fcmClient := Notification{s.fcmClientMock}
err := fcmClient.Send(dataPayloadJSON, ids...)
s.Require().Error(err)
_, ok := err.(*json.SyntaxError)
s.True(ok)
2017-10-11 13:51:43 +00:00
}