Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: server/prpc/decoding_test.go

Issue 1637193002: common/prpc, tools/cmd/cproto: prpc client (Closed) Base URL: https://github.com/luci/luci-go@prpc-server
Patch Set: Add some content length tests. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « server/prpc/decoding.go ('k') | server/prpc/timeout.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package prpc 5 package prpc
6 6
7 import ( 7 import (
8 "bytes" 8 "bytes"
9 "encoding/base64" 9 "encoding/base64"
10 "io/ioutil" 10 "io/ioutil"
11 "net/http" 11 "net/http"
12 "testing" 12 "testing"
13 "time" 13 "time"
14 14
15 "github.com/golang/protobuf/proto" 15 "github.com/golang/protobuf/proto"
16 "golang.org/x/net/context" 16 "golang.org/x/net/context"
17 "google.golang.org/grpc/metadata" 17 "google.golang.org/grpc/metadata"
18 18
19 "github.com/luci/luci-go/common/clock/testclock" 19 "github.com/luci/luci-go/common/clock/testclock"
20 prpccommon "github.com/luci/luci-go/common/prpc"
20 21
21 . "github.com/luci/luci-go/common/testing/assertions" 22 . "github.com/luci/luci-go/common/testing/assertions"
22 . "github.com/smartystreets/goconvey/convey" 23 . "github.com/smartystreets/goconvey/convey"
23 ) 24 )
24 25
25 func TestDecoding(t *testing.T) { 26 func TestDecoding(t *testing.T) {
26 t.Parallel() 27 t.Parallel()
27 28
28 Convey("requestFormat", t, func() { 29 Convey("requestFormat", t, func() {
29 test := func(contentType string, expectedFormat format, expected Err interface{}) { 30 test := func(contentType string, expectedFormat format, expected Err interface{}) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 139
139 Convey("parseHeader", t, func() { 140 Convey("parseHeader", t, func() {
140 c := context.Background() 141 c := context.Background()
141 142
142 header := func(name, value string) http.Header { 143 header := func(name, value string) http.Header {
143 return http.Header{ 144 return http.Header{
144 name: []string{value}, 145 name: []string{value},
145 } 146 }
146 } 147 }
147 148
148 » » Convey(headerTimeout, func() { 149 » » Convey(prpccommon.HeaderTimeout, func() {
149 Convey("Works", func() { 150 Convey("Works", func() {
150 now := time.Date(2016, 1, 1, 0, 0, 0, 0, time.UT C) 151 now := time.Date(2016, 1, 1, 0, 0, 0, 0, time.UT C)
151 c, _ = testclock.UseTime(c, now) 152 c, _ = testclock.UseTime(c, now)
152 153
153 » » » » c, err := parseHeader(c, header(headerTimeout, " 1M")) 154 » » » » c, err := parseHeader(c, header(prpccommon.Heade rTimeout, "1M"))
154 So(err, ShouldBeNil) 155 So(err, ShouldBeNil)
155 156
156 deadline, ok := c.Deadline() 157 deadline, ok := c.Deadline()
157 So(ok, ShouldBeTrue) 158 So(ok, ShouldBeTrue)
158 So(deadline, ShouldHappenWithin, time.Second, no w.Add(time.Minute)) 159 So(deadline, ShouldHappenWithin, time.Second, no w.Add(time.Minute))
159 }) 160 })
160 161
161 Convey("Fails", func() { 162 Convey("Fails", func() {
162 » » » » c2, err := parseHeader(c, header(headerTimeout, "blah")) 163 » » » » c2, err := parseHeader(c, header(prpccommon.Head erTimeout, "blah"))
163 So(c2, ShouldEqual, c) 164 So(c2, ShouldEqual, c)
164 » » » » So(err, ShouldErrLike, headerTimeout+` header: u nit is not recognized: "blah"`) 165 » » » » So(err, ShouldErrLike, prpccommon.HeaderTimeout+ ` header: unit is not recognized: "blah"`)
165 }) 166 })
166 }) 167 })
167 168
168 Convey("Content-Type", func() { 169 Convey("Content-Type", func() {
169 c, err := parseHeader(c, header("Content-Type", "blah")) 170 c, err := parseHeader(c, header("Content-Type", "blah"))
170 So(err, ShouldBeNil) 171 So(err, ShouldBeNil)
171 _, ok := metadata.FromContext(c) 172 _, ok := metadata.FromContext(c)
172 So(ok, ShouldBeFalse) 173 So(ok, ShouldBeFalse)
173 }) 174 })
174 175
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 }) 220 })
220 Convey("Fails", func() { 221 Convey("Fails", func() {
221 c2, err := parseHeader(c, header("Name-B in", "zzz")) 222 c2, err := parseHeader(c, header("Name-B in", "zzz"))
222 So(c2, ShouldEqual, c) 223 So(c2, ShouldEqual, c)
223 So(err, ShouldErrLike, "Name-Bin header: illegal base64 data at input byte 0") 224 So(err, ShouldErrLike, "Name-Bin header: illegal base64 data at input byte 0")
224 }) 225 })
225 }) 226 })
226 }) 227 })
227 }) 228 })
228 } 229 }
OLDNEW
« no previous file with comments | « server/prpc/decoding.go ('k') | server/prpc/timeout.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698