|
- package main
-
- import (
- "fmt"
- "log"
- "net/http"
- "net/http/httptest"
- "testing"
- )
-
- //when we setup wechate parameters,we chat will verify us
- func TestInitialSetup(t *testing.T) {
-
- SetupConfig()
-
- req := buildReqWechatAPISetup()
-
- rr, _ := getHTTPResponse(req, answerInitialAuth)
-
- // Check the response body is what we expect.
- expected := `913461463450840893`
- if rr.Body.String() != expected {
- t.Errorf("handler returned unexpected body: got %v want %v",
- rr.Body.String(), expected)
- }
- }
-
- func TestWebRootHandler(t *testing.T) {
- SetupConfig()
- req := buildReqWechatWebRoot()
- rr, _ := getHTTPResponse(req, webrootHandler)
-
- // Check the response body is what we expect.
- expected := `Hi there, I love dummydir!
- echostr => [913461463450840893]
- signature => [e39de9f2e28079c01ebb4b803dfc3442b819545c]`
-
- if rr.Body.String() != expected {
- t.Errorf("handler returned unexpected body: got %v want %v",
- rr.Body.String(), expected)
- }
-
- }
-
- func getHTTPResponse(req *http.Request, handler http.HandlerFunc) (rr *httptest.ResponseRecorder, err error) {
-
- // Our handlers satisfy http.Handler, so we can call their ServeHTTP method
- // directly and pass in our Request and ResponseRecorder.
- rr = httptest.NewRecorder()
-
- handler.ServeHTTP(rr, req)
-
- // Check the status code is what we expect.
- if status := rr.Code; status != http.StatusOK {
- err = fmt.Errorf("wrong HTTP status code: got %v want %v",
- status, http.StatusOK)
- }
- return
- }
-
- func buildReqWechatWebRoot() *http.Request {
- req, _ := http.NewRequest("GET", "/dummydir", nil)
- buildReqCommonHeader(req)
- q := req.URL.Query()
- q.Add("signature", "e39de9f2e28079c01ebb4b803dfc3442b819545c")
- q.Add("echostr", "913461463450840893")
- req.URL.RawQuery = q.Encode()
- return req
- }
-
- func buildReqWechatAPISetup() *http.Request {
- // Create a request to pass to our handler.
- //We don't have any query body for now, so we'll
- // pass 'nil' as the third parameter.
- req, err := http.NewRequest("GET", "/apii", nil)
- if err != nil {
- log.Fatal(err)
- }
-
- q := req.URL.Query()
- q.Add("signature", "e39de9f2e28079c01ebb4b803dfc3442b819545c")
- q.Add("echostr", "913461463450840893")
- q.Add("timestamp", "1492970761")
- q.Add("nonce", "1850971833")
- req.URL.RawQuery = q.Encode()
-
- buildReqCommonHeader(req)
- return req
- }
-
- func buildReqCommonHeader(r *http.Request) {
- //
- // example request
- //
- // GET /api?signature=e39de9f2e28079c01ebb4b803dfc3442b819545c&echostr=913461463450840893×tamp=1492970761&nonce=1850971833 HTTP/1.1
- // Host: wechat.hitxy.org.au
- // Accept: */*
- // Cache-Control: no-cache
- // Connection: Keep-Alive
- // Pragma: no-cache
- // User-Agent: Mozilla/4.0
- // X-Forwarded-For: 103.7.30.107
- // X-Forwarded-Host: wechat.hitxy.org.au
- // X-Forwarded-Server: wechat.hitxy.org.au
-
- h := r.Header
- h.Set("Host", "wechat.hitxy.org.au")
- h.Set("Accept", "*/*")
- h.Set("Cache-Control", "no-cache")
- h.Set("Connection", "Keep-Alive")
- h.Set("Pragma", "no-cache")
- h.Set("User-Agent", "Patrick testcase")
- h.Set("X-Forwarded-For", "103.7.30.107")
- h.Set("X-Forwarded-Host", "wechat.hitxy.org.au")
- h.Set("X-Forwarded-Server", "wechat.hitxy.org.au")
-
- }
|