1
0
mirror of https://github.com/golang/go synced 2024-11-17 14:14:56 -07:00

net/http: refactor test TestParseFormUnknownContentType

Use names to better communicate when a test case fails.

Change-Id: Id882783cb5e444b705443fbcdf612713f8a3b032
Reviewed-on: https://go-review.googlesource.com/c/go/+/187823
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
David Ndungu 2019-07-27 15:19:32 -07:00 committed by Brad Fitzpatrick
parent cfb13126f3
commit 1fd3f8bd67

View File

@ -85,35 +85,37 @@ func TestParseFormQueryMethods(t *testing.T) {
}
}
type stringMap map[string][]string
type parseContentTypeTest struct {
shouldError bool
contentType stringMap
}
var parseContentTypeTests = []parseContentTypeTest{
{false, stringMap{"Content-Type": {"text/plain"}}},
// Empty content type is legal - may be treated as
// application/octet-stream (RFC 7231, section 3.1.1.5)
{false, stringMap{}},
{true, stringMap{"Content-Type": {"text/plain; boundary="}}},
{false, stringMap{"Content-Type": {"application/unknown"}}},
}
func TestParseFormUnknownContentType(t *testing.T) {
for i, test := range parseContentTypeTests {
req := &Request{
Method: "POST",
Header: Header(test.contentType),
Body: ioutil.NopCloser(strings.NewReader("body")),
}
err := req.ParseForm()
switch {
case err == nil && test.shouldError:
t.Errorf("test %d should have returned error", i)
case err != nil && !test.shouldError:
t.Errorf("test %d should not have returned error, got %v", i, err)
}
for _, test := range []struct {
name string
wantErr string
contentType Header
}{
{"text", "", Header{"Content-Type": {"text/plain"}}},
// Empty content type is legal - may be treated as
// application/octet-stream (RFC 7231, section 3.1.1.5)
{"empty", "", Header{}},
{"boundary", "mime: invalid media parameter", Header{"Content-Type": {"text/plain; boundary="}}},
{"unknown", "", Header{"Content-Type": {"application/unknown"}}},
} {
t.Run(test.name,
func(t *testing.T) {
req := &Request{
Method: "POST",
Header: test.contentType,
Body: ioutil.NopCloser(strings.NewReader("body")),
}
err := req.ParseForm()
switch {
case err == nil && test.wantErr != "":
t.Errorf("unexpected success; want error %q", test.wantErr)
case err != nil && test.wantErr == "":
t.Errorf("want success, got error: %v", err)
case test.wantErr != "" && test.wantErr != fmt.Sprint(err):
t.Errorf("got error %q; want %q", err, test.wantErr)
}
},
)
}
}