|
- package weapp
-
- import (
- "encoding/json"
- "fmt"
- "io"
- "net/http"
- "net/http/httptest"
- "os"
- "path"
- "testing"
- )
-
- func TestCreateQRCode(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- if r.Method != "POST" {
- t.Fatalf("Expect 'POST' get '%s'", r.Method)
- }
-
- ePath := r.URL.EscapedPath()
- if ePath != apiCreateQRCode {
- t.Fatalf("Except to path '%s',get '%s'", apiCreateQRCode, ePath)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- if r.Form.Get("access_token") == "" {
- t.Fatalf("access_token can not be empty")
- }
-
- params := struct {
- Path string `json:"path"`
- Width int `json:"width,omitempty"`
- }{}
- if err := json.NewDecoder(r.Body).Decode(¶ms); err != nil {
- t.Fatal(err)
- }
-
- if params.Path == "" {
- t.Error("Response column path can not be empty")
- }
-
- filename := testIMGName
- file, err := os.Open(filename)
- if err != nil {
- t.Fatal((err))
- }
- defer file.Close()
-
- ext := path.Ext(filename)
- ext = ext[1:len(ext)]
- w.Header().Set("Content-Type", "image/"+ext)
- w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", path.Base(filename)))
- w.WriteHeader(http.StatusOK)
-
- if _, err := io.Copy(w, file); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- creator := QRCodeCreator{
- Path: "mock/path",
- Width: 430,
- }
- resp, _, err := creator.create(ts.URL+apiCreateQRCode, "mock-access-token")
- if err != nil {
- t.Fatal(err)
- }
-
- resp.Body.Close()
- }
-
- func TestGetQRCode(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- if r.Method != "POST" {
- t.Fatalf("Expect 'POST' get '%s'", r.Method)
- }
-
- ePath := r.URL.EscapedPath()
- if ePath != apiGetQrCode {
- t.Fatalf("Except to path '%s',get '%s'", apiGetQrCode, ePath)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- if r.Form.Get("access_token") == "" {
- t.Fatalf("access_token can not be empty")
- }
-
- params := struct {
- Path string `json:"path"`
- Width int `json:"width,omitempty"`
- AutoColor bool `json:"auto_color,omitempty"`
- LineColor Color `json:"line_color,omitempty"`
- IsHyaline bool `json:"is_hyaline,omitempty"`
- }{}
- if err := json.NewDecoder(r.Body).Decode(¶ms); err != nil {
- t.Fatal(err)
- }
-
- if params.Path == "" {
- t.Error("Response column path can not be empty")
- }
-
- filename := testIMGName
- file, err := os.Open(filename)
- if err != nil {
- t.Fatal((err))
- }
- defer file.Close()
-
- ext := path.Ext(filename)
- ext = ext[1:len(ext)]
- w.Header().Set("Content-Type", "image/"+ext)
- w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", path.Base(filename)))
- w.WriteHeader(http.StatusOK)
-
- if _, err := io.Copy(w, file); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- qr := QRCode{
- Path: "mock/path",
- Width: 430,
- AutoColor: true,
- LineColor: Color{"r", "g", "b"},
- IsHyaline: true,
- }
- resp, _, err := qr.get(ts.URL+apiGetQrCode, "mock-access-token")
- if err != nil {
- t.Fatal(err)
- }
-
- resp.Body.Close()
- }
-
- func TestGetUnlimitedQRCode(t *testing.T) {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- if r.Method != "POST" {
- t.Fatalf("Expect 'POST' get '%s'", r.Method)
- }
-
- ePath := r.URL.EscapedPath()
- if ePath != apiGetUnlimitedQRCode {
- t.Fatalf("Except to path '%s',get '%s'", apiGetUnlimitedQRCode, ePath)
- }
-
- if err := r.ParseForm(); err != nil {
- t.Fatal(err)
- }
-
- if r.Form.Get("access_token") == "" {
- t.Fatalf("access_token can not be empty")
- }
-
- params := struct {
- Scene string `json:"scene"`
- Page string `json:"page,omitempty"`
- Width int `json:"width,omitempty"`
- AutoColor bool `json:"auto_color,omitempty"`
- LineColor Color `json:"line_color,omitempty"`
- IsHyaline bool `json:"is_hyaline,omitempty"`
- }{}
- if err := json.NewDecoder(r.Body).Decode(¶ms); err != nil {
- t.Fatal(err)
- }
-
- if params.Scene == "" {
- t.Error("Response column scene can not be empty")
- }
-
- filename := testIMGName
- file, err := os.Open(filename)
- if err != nil {
- t.Fatal((err))
- }
- defer file.Close()
-
- ext := path.Ext(filename)
- ext = ext[1:len(ext)]
- w.Header().Set("Content-Type", "image/"+ext)
- w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", path.Base(filename)))
- w.WriteHeader(http.StatusOK)
-
- if _, err := io.Copy(w, file); err != nil {
- t.Fatal(err)
- }
- }))
- defer ts.Close()
-
- qr := UnlimitedQRCode{
- Scene: "mock-scene-data",
- Page: "mock/page",
- Width: 430,
- AutoColor: true,
- LineColor: Color{"r", "g", "b"},
- IsHyaline: true,
- }
- resp, _, err := qr.get(ts.URL+apiGetUnlimitedQRCode, "mock-access-token")
- if err != nil {
- t.Fatal(err)
- }
-
- resp.Body.Close()
- }
|