OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [mime/] [multipart/] [formdata_test.go] - Rev 747

Compare with Previous | Blame | View Log

// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package multipart

import (
        "bytes"
        "io"
        "os"
        "regexp"
        "testing"
)

func TestReadForm(t *testing.T) {
        testBody := regexp.MustCompile("\n").ReplaceAllString(message, "\r\n")
        b := bytes.NewBufferString(testBody)
        r := NewReader(b, boundary)
        f, err := r.ReadForm(25)
        if err != nil {
                t.Fatal("ReadForm:", err)
        }
        defer f.RemoveAll()
        if g, e := f.Value["texta"][0], textaValue; g != e {
                t.Errorf("texta value = %q, want %q", g, e)
        }
        if g, e := f.Value["textb"][0], textbValue; g != e {
                t.Errorf("texta value = %q, want %q", g, e)
        }
        fd := testFile(t, f.File["filea"][0], "filea.txt", fileaContents)
        if _, ok := fd.(*os.File); ok {
                t.Error("file is *os.File, should not be")
        }
        fd.Close()
        fd = testFile(t, f.File["fileb"][0], "fileb.txt", filebContents)
        if _, ok := fd.(*os.File); !ok {
                t.Errorf("file has unexpected underlying type %T", fd)
        }
        fd.Close()
}

func testFile(t *testing.T, fh *FileHeader, efn, econtent string) File {
        if fh.Filename != efn {
                t.Errorf("filename = %q, want %q", fh.Filename, efn)
        }
        f, err := fh.Open()
        if err != nil {
                t.Fatal("opening file:", err)
        }
        b := new(bytes.Buffer)
        _, err = io.Copy(b, f)
        if err != nil {
                t.Fatal("copying contents:", err)
        }
        if g := b.String(); g != econtent {
                t.Errorf("contents = %q, want %q", g, econtent)
        }
        return f
}

const (
        fileaContents = "This is a test file."
        filebContents = "Another test file."
        textaValue    = "foo"
        textbValue    = "bar"
        boundary      = `MyBoundary`
)

const message = `
--MyBoundary
Content-Disposition: form-data; name="filea"; filename="filea.txt"
Content-Type: text/plain

` + fileaContents + `
--MyBoundary
Content-Disposition: form-data; name="fileb"; filename="fileb.txt"
Content-Type: text/plain

` + filebContents + `
--MyBoundary
Content-Disposition: form-data; name="texta"

` + textaValue + `
--MyBoundary
Content-Disposition: form-data; name="textb"

` + textbValue + `
--MyBoundary--
`

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.