Skip to content

Commit

Permalink
multipart tests
Browse files Browse the repository at this point in the history
  • Loading branch information
technoweenie committed Mar 30, 2013
1 parent c0c0fe0 commit 95167c0
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions multipartstreamer_test.go
@@ -0,0 +1,76 @@
package multipartstreamer

import (
"bytes"
"io"
"io/ioutil"
"mime/multipart"
"os"
"path/filepath"
"testing"
)

func TestMultipart(t *testing.T) {
path, _ := os.Getwd()
file := filepath.Join(path, "multipartstreamer.go")
stat, _ := os.Stat(file)

ms := New()
err := ms.Write("file", file, map[string]string{"a": "b"})
if err != nil {
t.Fatalf("Error writing fields: %s", err)
}

diff := ms.Len() - stat.Size()
if diff != 398 {
t.Error("Unexpected multipart size")
}

data, err := ioutil.ReadAll(ms.GetReader())
if err != nil {
t.Fatalf("Error reading multipart data: %s", err)
}

buf := bytes.NewBuffer(data)
reader := multipart.NewReader(buf, ms.Boundary())

part, err := reader.NextPart()
if err != nil {
t.Fatalf("Expected form field: %s", err)
}

if str := part.FileName(); str != "" {
t.Errorf("Unexpected filename: %s", str)
}

if str := part.FormName(); str != "a" {
t.Errorf("Unexpected form name: %s", str)
}

if by, _ := ioutil.ReadAll(part); string(by) != "b" {
t.Errorf("Unexpected form value: %s", string(by))
}

part, err = reader.NextPart()
if err != nil {
t.Fatalf("Expected file field: %s", err)
}

if str := part.FileName(); str != file {
t.Errorf("Unexpected filename: %s", str)
}

if str := part.FormName(); str != "file" {
t.Errorf("Unexpected form name: %s", str)
}

src, _ := ioutil.ReadFile(file)
if by, _ := ioutil.ReadAll(part); string(by) != string(src) {
t.Errorf("Unexpected file value")
}

part, err = reader.NextPart()
if err != io.EOF {
t.Errorf("Unexpected 3rd part: %s", part)
}
}

0 comments on commit 95167c0

Please sign in to comment.