Browse Source

TEST http upload with net/http.Client

boyska 6 years ago
parent
commit
24074467cf
1 changed files with 52 additions and 0 deletions
  1. 52 0
      http_test.go

+ 52 - 0
http_test.go

@@ -1,9 +1,11 @@
 package megauploader
 
 import (
+	"bytes"
 	"encoding/json"
 	"flag"
 	"io/ioutil"
+	"mime/multipart"
 	"net/http"
 	"net/http/httptest"
 	"os"
@@ -174,6 +176,56 @@ shares:
 	}
 }
 
+func TestUpload(t *testing.T) {
+	if !*doHTTP {
+		return
+	}
+	ts := getServer(`
+global:
+    excluded:
+        - john@doe.us
+        - foo bar
+shares:
+    - name: foo
+      authorized: ["*"]
+      description: foo
+`)
+	cl := ts.Client()
+	bodyBuf := bytes.Buffer{}
+	bodyWriter := multipart.NewWriter(&bodyBuf)
+	fileWriter, err := bodyWriter.CreateFormFile("file", "foo.txt")
+	if err != nil {
+		t.Fatal("error creating form file", err)
+		return
+	}
+	_, err = fileWriter.Write([]byte(`example content`))
+	if err != nil {
+		t.Fatal("error writing on form file", err)
+		return
+	}
+	contentType := bodyWriter.FormDataContentType()
+	bodyWriter.Close()
+	req := userRequest(ts.URL+"/api/upload/foo", "someone", t)
+	req.Method = "POST"
+	req.Header.Set("Content-Type", contentType)
+	req.ContentLength = int64(bodyBuf.Len())
+	req.Body = ioutil.NopCloser(&bodyBuf)
+	resp, err := cl.Do(req)
+	if err != nil {
+		t.Fatal("Error POSTing file", err)
+		return
+	}
+	defer resp.Body.Close()
+	respBody, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		t.Fatal("Error reading server response", err)
+		return
+	}
+	if resp.StatusCode < 200 || resp.StatusCode > 299 {
+		t.Error("Server status is not success:", resp.Status, respBody)
+	}
+}
+
 func TestSurfUpload(t *testing.T) {
 	if !*doHTTP {
 		return