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] - Blame information for rev 833

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2011 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package multipart
6
 
7
import (
8
        "bytes"
9
        "io"
10
        "os"
11
        "regexp"
12
        "testing"
13
)
14
 
15
func TestReadForm(t *testing.T) {
16
        testBody := regexp.MustCompile("\n").ReplaceAllString(message, "\r\n")
17
        b := bytes.NewBufferString(testBody)
18
        r := NewReader(b, boundary)
19
        f, err := r.ReadForm(25)
20
        if err != nil {
21
                t.Fatal("ReadForm:", err)
22
        }
23
        defer f.RemoveAll()
24
        if g, e := f.Value["texta"][0], textaValue; g != e {
25
                t.Errorf("texta value = %q, want %q", g, e)
26
        }
27
        if g, e := f.Value["textb"][0], textbValue; g != e {
28
                t.Errorf("texta value = %q, want %q", g, e)
29
        }
30
        fd := testFile(t, f.File["filea"][0], "filea.txt", fileaContents)
31
        if _, ok := fd.(*os.File); ok {
32
                t.Error("file is *os.File, should not be")
33
        }
34
        fd.Close()
35
        fd = testFile(t, f.File["fileb"][0], "fileb.txt", filebContents)
36
        if _, ok := fd.(*os.File); !ok {
37
                t.Errorf("file has unexpected underlying type %T", fd)
38
        }
39
        fd.Close()
40
}
41
 
42
func testFile(t *testing.T, fh *FileHeader, efn, econtent string) File {
43
        if fh.Filename != efn {
44
                t.Errorf("filename = %q, want %q", fh.Filename, efn)
45
        }
46
        f, err := fh.Open()
47
        if err != nil {
48
                t.Fatal("opening file:", err)
49
        }
50
        b := new(bytes.Buffer)
51
        _, err = io.Copy(b, f)
52
        if err != nil {
53
                t.Fatal("copying contents:", err)
54
        }
55
        if g := b.String(); g != econtent {
56
                t.Errorf("contents = %q, want %q", g, econtent)
57
        }
58
        return f
59
}
60
 
61
const (
62
        fileaContents = "This is a test file."
63
        filebContents = "Another test file."
64
        textaValue    = "foo"
65
        textbValue    = "bar"
66
        boundary      = `MyBoundary`
67
)
68
 
69
const message = `
70
--MyBoundary
71
Content-Disposition: form-data; name="filea"; filename="filea.txt"
72
Content-Type: text/plain
73
 
74
` + fileaContents + `
75
--MyBoundary
76
Content-Disposition: form-data; name="fileb"; filename="fileb.txt"
77
Content-Type: text/plain
78
 
79
` + filebContents + `
80
--MyBoundary
81
Content-Disposition: form-data; name="texta"
82
 
83
` + textaValue + `
84
--MyBoundary
85
Content-Disposition: form-data; name="textb"
86
 
87
` + textbValue + `
88
--MyBoundary--
89
`

powered by: WebSVN 2.1.0

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