|
- package weapp
-
- import (
- "net/http"
- "net/http/httptest"
- "testing"
- )
-
- func TestLogin(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-
- if r.Method != "GET" {
- t.Fatalf("Expect 'GET' get '%s'", r.Method)
- }
-
- path := r.URL.EscapedPath()
- if path != apiLogin {
- t.Fatalf("Except to path '%s',get '%s'", apiLogin, path)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- queries := []string{"appid", "secret", "js_code", "grant_type"}
- for _, v := range queries {
- content := r.Form.Get(v)
- if content == "" {
- t.Fatalf("%v can not be empty", v)
- }
- }
-
- w.WriteHeader(http.StatusOK)
-
- raw := `{
- "openid": "mock-openid",
- "session_key": "mock-session_key",
- "unionid": "mock-unionid",
- "errcode": 0,
- "errmsg": "mock-errmsg"
- }`
- if _, err := w.Write([]byte(raw)); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- _, err := login("mock-appid", "mock-secret", "mock-code", ts.URL+apiLogin)
- if err != nil {
- t.Fatal(err)
- }
- }
-
- func TestGetAccessToken(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-
- if r.Method != "GET" {
- t.Fatalf("Expect 'GET' get '%s'", r.Method)
- }
-
- path := r.URL.EscapedPath()
- if path != apiGetAccessToken {
- t.Fatalf("Except to path '%s',get '%s'", apiGetAccessToken, path)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- if r.Form.Get("grant_type") != "client_credential" {
- t.Fatal("invalid client_credential")
- }
-
- queries := []string{"appid", "secret"}
- for _, v := range queries {
- content := r.Form.Get(v)
- if content == "" {
- t.Fatalf("%v can not be empty", v)
- }
- }
-
- w.WriteHeader(http.StatusOK)
-
- raw := `{"access_token":"ACCESS_TOKEN","expires_in":7200}`
- if _, err := w.Write([]byte(raw)); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- _, err := getAccessToken("mock-appid", "mock-secret", ts.URL+apiGetAccessToken)
- if err != nil {
- t.Fatal(err)
- }
- }
-
- func TestGetPaidUnionID(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-
- if r.Method != "GET" {
- t.Fatalf("Expect 'GET' get '%s'", r.Method)
- }
-
- path := r.URL.EscapedPath()
- if path != apiGetPaidUnionID {
- t.Fatalf("Except to path '%s',get '%s'", apiGetPaidUnionID, path)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- queries := []string{"openid", "access_token", "transaction_id"}
- for _, v := range queries {
- content := r.Form.Get(v)
- if content == "" {
- t.Fatalf("%v can not be empty", v)
- }
- }
-
- w.WriteHeader(http.StatusOK)
-
- raw := `{
- "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
- "errcode": 0,
- "errmsg": "ok"
- }`
- if _, err := w.Write([]byte(raw)); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- _, err := getPaidUnionID("mock-access-token", "mock-open-id", "mock-transaction-id", ts.URL+apiGetPaidUnionID)
- if err != nil {
- t.Fatal(err)
- }
- }
-
- func TestGetPaidUnionIDWithMCH(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-
- if r.Method != "GET" {
- t.Fatalf("Expect 'GET' get '%s'", r.Method)
- }
-
- path := r.URL.EscapedPath()
- if path != apiGetPaidUnionID {
- t.Fatalf("Except to path '%s',get '%s'", apiGetPaidUnionID, path)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- queries := []string{"openid", "access_token", "mch_id", "out_trade_no"}
- for _, v := range queries {
- content := r.Form.Get(v)
- if content == "" {
- t.Fatalf("%v can not be empty", v)
- }
- }
-
- w.WriteHeader(http.StatusOK)
-
- raw := `{
- "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
- "errcode": 0,
- "errmsg": "ok"
- }`
- if _, err := w.Write([]byte(raw)); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- _, err := getPaidUnionIDWithMCH("mock-access-token", "mock-open-id", "mock-out-trade-number", "mock-mch-id", ts.URL+apiGetPaidUnionID)
- if err != nil {
- t.Fatal(err)
- }
- }
|