Skip to content

Instantly share code, notes, and snippets.

@teepark
Created March 11, 2015 21:27
Show Gist options
  • Save teepark/cd2fb2566b8ebd119c2e to your computer and use it in GitHub Desktop.
Save teepark/cd2fb2566b8ebd119c2e to your computer and use it in GitHub Desktop.
package tmp
import (
"bufio"
"bytes"
"mime/multipart"
"net/http"
"net/http/httptest"
"testing"
)
func TestReadSlice(t *testing.T) {
b := make([]byte, 8192)
b[4097] = '\n'
r := bytes.NewBuffer(b)
p := bufio.NewReader(r)
_, err := p.ReadSlice('\n')
if err != nil {
t.Error(err)
}
}
func TestUpload(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if err := r.ParseMultipartForm(5 << 20); err != nil { // maxMemory 5MB
t.Error(err)
w.WriteHeader(500)
} else {
w.WriteHeader(204)
}
}))
buf := &bytes.Buffer{}
writer := multipart.NewWriter(buf)
partcontent := make([]byte, 5000)
for i := 0; i < 5000; i++ {
partcontent[i] = 'x'
}
partcontent[4500] = '\n'
if err := writer.WriteField("name", string(partcontent)); err != nil {
t.Fatal(err)
}
if err := writer.Close(); err != nil {
t.Fatal(err)
}
request, err := http.NewRequest("POST", server.URL, buf)
if err != nil {
t.Fatal(err)
}
request.Header.Add("Content-Type", writer.FormDataContentType())
client := &http.Client{}
resp, err := client.Do(request)
if err != nil {
t.Fatal(err)
}
if resp.StatusCode != 204 {
t.Errorf("bad status response: %d", resp.StatusCode)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment