✅ add tests
This commit is contained in:
		
							parent
							
								
									96c25f6fba
								
							
						
					
					
						commit
						f63d8ba613
					
				@ -41,11 +41,14 @@ func (n *Notification) reqURL(message string) string {
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (n *Notification) reqMethod() string {
 | 
			
		||||
	if n.RequestMethod == NotificationRequestMethodPOST {
 | 
			
		||||
		return http.MethodPost
 | 
			
		||||
func (n *Notification) reqMethod() (string, error) {
 | 
			
		||||
	switch n.RequestMethod {
 | 
			
		||||
	case NotificationRequestMethodPOST:
 | 
			
		||||
		return http.MethodPost, nil
 | 
			
		||||
	case NotificationRequestMethodGET:
 | 
			
		||||
		return http.MethodGet, nil
 | 
			
		||||
	}
 | 
			
		||||
	return http.MethodGet
 | 
			
		||||
	return "", errors.New("不支持的请求方式")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (n *Notification) reqBody(message string) (string, error) {
 | 
			
		||||
@ -115,7 +118,12 @@ func (n *Notification) Send(message string) error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	req, err := http.NewRequest(n.reqMethod(), n.reqURL(message), strings.NewReader(reqBody))
 | 
			
		||||
	reqMethod, err := n.reqMethod()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	req, err := http.NewRequest(reqMethod, n.reqURL(message), strings.NewReader(reqBody))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package model
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
@ -8,15 +10,21 @@ import (
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	msg         = "msg"
 | 
			
		||||
	reqTypeForm = "application/x-www-form-urlencoded"
 | 
			
		||||
	reqTypeJSON = "application/json"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type testSt struct {
 | 
			
		||||
	url               string
 | 
			
		||||
	body              string
 | 
			
		||||
	header            string
 | 
			
		||||
	reqType           int
 | 
			
		||||
	reqMethod         int
 | 
			
		||||
	expectURL         string
 | 
			
		||||
	expectBody        string
 | 
			
		||||
	expectMethod      string
 | 
			
		||||
	expectContentType string
 | 
			
		||||
	expectHeader      map[string]string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func execCase(t *testing.T, item testSt) {
 | 
			
		||||
@ -25,11 +33,24 @@ func execCase(t *testing.T, item testSt) {
 | 
			
		||||
		RequestMethod: item.reqMethod,
 | 
			
		||||
		RequestType:   item.reqType,
 | 
			
		||||
		RequestBody:   item.body,
 | 
			
		||||
		RequestHeader: item.header,
 | 
			
		||||
	}
 | 
			
		||||
	assert.Equal(t, item.expectURL, n.reqURL(msg))
 | 
			
		||||
	reqBody, err := n.reqBody(msg)
 | 
			
		||||
	assert.Nil(t, err)
 | 
			
		||||
	assert.Equal(t, item.expectBody, reqBody)
 | 
			
		||||
	reqMethod, err := n.reqMethod()
 | 
			
		||||
	assert.Nil(t, err)
 | 
			
		||||
	assert.Equal(t, item.expectMethod, reqMethod)
 | 
			
		||||
 | 
			
		||||
	req, err := http.NewRequest("", "", strings.NewReader(""))
 | 
			
		||||
	assert.Nil(t, err)
 | 
			
		||||
	n.setContentType(req)
 | 
			
		||||
	assert.Equal(t, item.expectContentType, req.Header.Get("Content-Type"))
 | 
			
		||||
	n.setRequestHeader(req)
 | 
			
		||||
	for k, v := range item.expectHeader {
 | 
			
		||||
		assert.Equal(t, v, req.Header.Get(k))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestNotification(t *testing.T) {
 | 
			
		||||
@ -37,8 +58,12 @@ func TestNotification(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			url:               "https://example.com",
 | 
			
		||||
			body:              `{"asd":"dsa"}`,
 | 
			
		||||
			header:            `{"asd":"dsa"}`,
 | 
			
		||||
			reqMethod:         NotificationRequestMethodGET,
 | 
			
		||||
			expectURL:         "https://example.com",
 | 
			
		||||
			expectMethod:      http.MethodGet,
 | 
			
		||||
			expectContentType: "",
 | 
			
		||||
			expectHeader:      map[string]string{"asd": "dsa"},
 | 
			
		||||
			expectBody:        "",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
@ -46,6 +71,8 @@ func TestNotification(t *testing.T) {
 | 
			
		||||
			body:              `{"asd":"dsa"}`,
 | 
			
		||||
			reqMethod:         NotificationRequestMethodGET,
 | 
			
		||||
			expectURL:         "https://example.com/?m=" + msg,
 | 
			
		||||
			expectMethod:      http.MethodGet,
 | 
			
		||||
			expectContentType: "",
 | 
			
		||||
			expectBody:        "",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
@ -54,6 +81,8 @@ func TestNotification(t *testing.T) {
 | 
			
		||||
			reqMethod:         NotificationRequestMethodPOST,
 | 
			
		||||
			reqType:           NotificationRequestTypeForm,
 | 
			
		||||
			expectURL:         "https://example.com/?m=" + msg,
 | 
			
		||||
			expectMethod:      http.MethodPost,
 | 
			
		||||
			expectContentType: reqTypeForm,
 | 
			
		||||
			expectBody:        "asd=" + msg,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
@ -62,6 +91,8 @@ func TestNotification(t *testing.T) {
 | 
			
		||||
			reqMethod:         NotificationRequestMethodPOST,
 | 
			
		||||
			reqType:           NotificationRequestTypeForm,
 | 
			
		||||
			expectURL:         "https://example.com/?m=" + msg,
 | 
			
		||||
			expectMethod:      http.MethodPost,
 | 
			
		||||
			expectContentType: reqTypeForm,
 | 
			
		||||
			expectBody:        "%23NEZHA%23=" + msg,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
@ -70,15 +101,21 @@ func TestNotification(t *testing.T) {
 | 
			
		||||
			reqMethod:         NotificationRequestMethodPOST,
 | 
			
		||||
			reqType:           NotificationRequestTypeJSON,
 | 
			
		||||
			expectURL:         "https://example.com/?m=" + msg,
 | 
			
		||||
			expectMethod:      http.MethodPost,
 | 
			
		||||
			expectContentType: reqTypeJSON,
 | 
			
		||||
			expectBody:        `{"asd":"msg"}`,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			url:               "https://example.com/?m=#NEZHA#",
 | 
			
		||||
			body:              `{"#NEZHA#":"#NEZHA#"}`,
 | 
			
		||||
			reqMethod:         NotificationRequestMethodPOST,
 | 
			
		||||
			header:            `{"asd":"dsa11"}`,
 | 
			
		||||
			reqType:           NotificationRequestTypeJSON,
 | 
			
		||||
			expectURL:         "https://example.com/?m=" + msg,
 | 
			
		||||
			expectMethod:      http.MethodPost,
 | 
			
		||||
			expectContentType: reqTypeJSON,
 | 
			
		||||
			expectBody:        `{"msg":"msg"}`,
 | 
			
		||||
			expectHeader:      map[string]string{"asd": "dsa11"},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user