63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package notifier
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type NotifierTestSuite struct {
|
|
suite.Suite
|
|
url string
|
|
n *Notifier
|
|
}
|
|
|
|
func (s *NotifierTestSuite) SetupTest() {
|
|
s.url = "http://localhost:3000"
|
|
s.n = New(s.url)
|
|
}
|
|
|
|
var flagtests = []struct {
|
|
response string
|
|
err error
|
|
}{
|
|
{
|
|
response: `{"counts":1,"logs":[{"type":"failed-push","platform":"android","token":"1111111","message":"Hello world","error":"invalid registration token"}],"success":"ok"}`,
|
|
err: errors.New("invalid registration token"),
|
|
},
|
|
{
|
|
response: `{"counts":1,"success":"ok"}`,
|
|
err: nil,
|
|
},
|
|
}
|
|
|
|
func (s *NotifierTestSuite) TestSendNotifications() {
|
|
for _, tt := range flagtests {
|
|
var apiStub = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
if _, err := w.Write([]byte(tt.response)); err != nil {
|
|
log.Println(err.Error())
|
|
}
|
|
}))
|
|
defer apiStub.Close()
|
|
|
|
s.n.url = apiStub.URL
|
|
notification := Notification{
|
|
Tokens: []string{"t1", "t2"},
|
|
Platform: 2,
|
|
Message: "hello world",
|
|
}
|
|
|
|
err := s.n.Send([]*Notification{¬ification})
|
|
s.Equal(tt.err, err)
|
|
}
|
|
}
|
|
|
|
func TestNotifierTestSuite(t *testing.T) {
|
|
suite.Run(t, new(NotifierTestSuite))
|
|
}
|