URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [net/] [http/] [cookie_test.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2010 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 httpimport ("encoding/json""fmt""reflect""testing""time")var writeSetCookiesTests = []struct {Cookie *CookieRaw string}{{&Cookie{Name: "cookie-1", Value: "v$1"},"cookie-1=v$1",},{&Cookie{Name: "cookie-2", Value: "two", MaxAge: 3600},"cookie-2=two; Max-Age=3600",},{&Cookie{Name: "cookie-3", Value: "three", Domain: ".example.com"},"cookie-3=three; Domain=.example.com",},{&Cookie{Name: "cookie-4", Value: "four", Path: "/restricted/"},"cookie-4=four; Path=/restricted/",},}func TestWriteSetCookies(t *testing.T) {for i, tt := range writeSetCookiesTests {if g, e := tt.Cookie.String(), tt.Raw; g != e {t.Errorf("Test %d, expecting:\n%s\nGot:\n%s\n", i, e, g)continue}}}type headerOnlyResponseWriter Headerfunc (ho headerOnlyResponseWriter) Header() Header {return Header(ho)}func (ho headerOnlyResponseWriter) Write([]byte) (int, error) {panic("NOIMPL")}func (ho headerOnlyResponseWriter) WriteHeader(int) {panic("NOIMPL")}func TestSetCookie(t *testing.T) {m := make(Header)SetCookie(headerOnlyResponseWriter(m), &Cookie{Name: "cookie-1", Value: "one", Path: "/restricted/"})SetCookie(headerOnlyResponseWriter(m), &Cookie{Name: "cookie-2", Value: "two", MaxAge: 3600})if l := len(m["Set-Cookie"]); l != 2 {t.Fatalf("expected %d cookies, got %d", 2, l)}if g, e := m["Set-Cookie"][0], "cookie-1=one; Path=/restricted/"; g != e {t.Errorf("cookie #1: want %q, got %q", e, g)}if g, e := m["Set-Cookie"][1], "cookie-2=two; Max-Age=3600"; g != e {t.Errorf("cookie #2: want %q, got %q", e, g)}}var addCookieTests = []struct {Cookies []*CookieRaw string}{{[]*Cookie{},"",},{[]*Cookie{{Name: "cookie-1", Value: "v$1"}},"cookie-1=v$1",},{[]*Cookie{{Name: "cookie-1", Value: "v$1"},{Name: "cookie-2", Value: "v$2"},{Name: "cookie-3", Value: "v$3"},},"cookie-1=v$1; cookie-2=v$2; cookie-3=v$3",},}func TestAddCookie(t *testing.T) {for i, tt := range addCookieTests {req, _ := NewRequest("GET", "http://example.com/", nil)for _, c := range tt.Cookies {req.AddCookie(c)}if g := req.Header.Get("Cookie"); g != tt.Raw {t.Errorf("Test %d:\nwant: %s\n got: %s\n", i, tt.Raw, g)continue}}}var readSetCookiesTests = []struct {Header HeaderCookies []*Cookie}{{Header{"Set-Cookie": {"Cookie-1=v$1"}},[]*Cookie{{Name: "Cookie-1", Value: "v$1", Raw: "Cookie-1=v$1"}},},{Header{"Set-Cookie": {"NID=99=YsDT5i3E-CXax-; expires=Wed, 23-Nov-2011 01:05:03 GMT; path=/; domain=.google.ch; HttpOnly"}},[]*Cookie{{Name: "NID",Value: "99=YsDT5i3E-CXax-",Path: "/",Domain: ".google.ch",HttpOnly: true,Expires: time.Date(2011, 11, 23, 1, 5, 3, 0, time.UTC),RawExpires: "Wed, 23-Nov-2011 01:05:03 GMT",Raw: "NID=99=YsDT5i3E-CXax-; expires=Wed, 23-Nov-2011 01:05:03 GMT; path=/; domain=.google.ch; HttpOnly",}},},}func toJSON(v interface{}) string {b, err := json.Marshal(v)if err != nil {return fmt.Sprintf("%#v", v)}return string(b)}func TestReadSetCookies(t *testing.T) {for i, tt := range readSetCookiesTests {for n := 0; n < 2; n++ { // to verify readSetCookies doesn't mutate its inputc := readSetCookies(tt.Header)if !reflect.DeepEqual(c, tt.Cookies) {t.Errorf("#%d readSetCookies: have\n%s\nwant\n%s\n", i, toJSON(c), toJSON(tt.Cookies))continue}}}}var readCookiesTests = []struct {Header HeaderFilter stringCookies []*Cookie}{{Header{"Cookie": {"Cookie-1=v$1", "c2=v2"}},"",[]*Cookie{{Name: "Cookie-1", Value: "v$1"},{Name: "c2", Value: "v2"},},},{Header{"Cookie": {"Cookie-1=v$1", "c2=v2"}},"c2",[]*Cookie{{Name: "c2", Value: "v2"},},},{Header{"Cookie": {"Cookie-1=v$1; c2=v2"}},"",[]*Cookie{{Name: "Cookie-1", Value: "v$1"},{Name: "c2", Value: "v2"},},},{Header{"Cookie": {"Cookie-1=v$1; c2=v2"}},"c2",[]*Cookie{{Name: "c2", Value: "v2"},},},}func TestReadCookies(t *testing.T) {for i, tt := range readCookiesTests {for n := 0; n < 2; n++ { // to verify readCookies doesn't mutate its inputc := readCookies(tt.Header, tt.Filter)if !reflect.DeepEqual(c, tt.Cookies) {t.Errorf("#%d readCookies:\nhave: %s\nwant: %s\n", i, toJSON(c), toJSON(tt.Cookies))continue}}}}
