Covered ApiiSender with tests
This commit is contained in:
parent
d2e8342866
commit
b1cf8e14de
4 changed files with 71 additions and 5 deletions
|
|
@ -18,7 +18,8 @@ type Sender interface {
|
|||
}
|
||||
|
||||
type ApiSender struct {
|
||||
Token string
|
||||
Token string
|
||||
Logger *log.Logger
|
||||
}
|
||||
|
||||
type sendMessageResponse struct {
|
||||
|
|
@ -43,13 +44,13 @@ func (s *ApiSender) Send(userId int64, message string) {
|
|||
reqUrl := SendMessageUrl + "?" + joined
|
||||
resp, err := http.Get(reqUrl)
|
||||
if err != nil || resp.StatusCode != http.StatusOK {
|
||||
log.Printf("[error] Could not Send message. User: %d", userId)
|
||||
s.Logger.Printf("[error] Could not Send message. User: %d", userId)
|
||||
return
|
||||
}
|
||||
respContent, _ := ioutil.ReadAll(resp.Body)
|
||||
var unmarshalled sendMessageResponse
|
||||
_ = json.Unmarshal(respContent, &unmarshalled)
|
||||
if unmarshalled.Error.ErrorCode != 0 {
|
||||
log.Printf("[error] Message was not sent. User: %d error message: %s", userId, unmarshalled.Error.ErrorMsg)
|
||||
s.Logger.Printf("[error] Message was not sent. User: %d error message: %s", userId, unmarshalled.Error.ErrorMsg)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,63 @@
|
|||
package vk
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gopkg.in/h2non/gock.v1"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestApiSender_Send(t *testing.T) {
|
||||
func TestApiSender_Send_OK(t *testing.T) {
|
||||
defer gock.Off()
|
||||
|
||||
gock.New(SendMessageUrl).MatchParams(
|
||||
map[string]string{
|
||||
"access_token": "token",
|
||||
"peer_id": "1",
|
||||
"message": "msg",
|
||||
"v": "5.95",
|
||||
},
|
||||
).ParamPresent("random_id").Reply(http.StatusOK)
|
||||
|
||||
sender := ApiSender{Token: "token"}
|
||||
sender.Send(1, "msg")
|
||||
assert.False(t, gock.HasUnmatchedRequest())
|
||||
}
|
||||
|
||||
func TestApiSender_Send_NotOK(t *testing.T) {
|
||||
defer gock.Off()
|
||||
|
||||
gock.New(SendMessageUrl).Reply(http.StatusInternalServerError)
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
sender := ApiSender{
|
||||
Token: "token",
|
||||
Logger: log.New(b, "", 0),
|
||||
}
|
||||
sender.Send(1, "msg")
|
||||
assert.True(t, strings.Contains(b.String(), "[error]"))
|
||||
}
|
||||
|
||||
func TestApiSender_Send_ErrorCode(t *testing.T) {
|
||||
defer gock.Off()
|
||||
|
||||
gock.New(SendMessageUrl).Reply(http.StatusOK).JSON(
|
||||
map[string]interface{}{
|
||||
"error": map[string]interface{}{
|
||||
"error_code": 100,
|
||||
"error_msg": "bad user",
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
sender := ApiSender{
|
||||
Token: "token",
|
||||
Logger: log.New(b, "", 0),
|
||||
}
|
||||
sender.Send(1, "msg")
|
||||
assert.True(t, strings.Contains(b.String(), "[error]"))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue