| Index: server/prpc/server_test.go
 | 
| diff --git a/server/prpc/server_test.go b/server/prpc/server_test.go
 | 
| index 5ab9407314d2dca454f5d691bce48957adedfc63..c7f2e814a846a6afe9697491e189eb11576b5b83 100644
 | 
| --- a/server/prpc/server_test.go
 | 
| +++ b/server/prpc/server_test.go
 | 
| @@ -8,6 +8,7 @@ import (
 | 
|  	"bytes"
 | 
|  	"net/http"
 | 
|  	"net/http/httptest"
 | 
| +	"strconv"
 | 
|  	"testing"
 | 
|  
 | 
|  	"github.com/julienschmidt/httprouter"
 | 
| @@ -15,6 +16,7 @@ import (
 | 
|  	"google.golang.org/grpc"
 | 
|  	"google.golang.org/grpc/codes"
 | 
|  
 | 
| +	"github.com/luci/luci-go/common/prpc"
 | 
|  	"github.com/luci/luci-go/server/middleware"
 | 
|  
 | 
|  	. "github.com/luci/luci-go/common/testing/assertions"
 | 
| @@ -66,14 +68,18 @@ func TestServer(t *testing.T) {
 | 
|  			server.InstallHandlers(r, middleware.TestingBase(c))
 | 
|  			res := httptest.NewRecorder()
 | 
|  			hiMsg := bytes.NewBufferString(`name: "Lucy"`)
 | 
| -			req, err := http.NewRequest("POST", "http://localhost/prpc/prpc.Greeter/SayHello", hiMsg)
 | 
| +			req, err := http.NewRequest("POST", "/prpc/prpc.Greeter/SayHello", hiMsg)
 | 
|  			So(err, ShouldBeNil)
 | 
|  			req.Header.Set("Content-Type", mtPRPCText)
 | 
|  
 | 
| +			invalidArgument := strconv.Itoa(int(codes.InvalidArgument))
 | 
| +			unimplemented := strconv.Itoa(int(codes.Unimplemented))
 | 
| +
 | 
|  			Convey("Works", func() {
 | 
|  				req.Header.Set("Accept", mtPRPCText)
 | 
|  				r.ServeHTTP(res, req)
 | 
|  				So(res.Code, ShouldEqual, http.StatusOK)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, "0")
 | 
|  				So(res.Body.String(), ShouldEqual, "message: \"Hello Lucy\"\n")
 | 
|  			})
 | 
|  
 | 
| @@ -81,26 +87,43 @@ func TestServer(t *testing.T) {
 | 
|  				req.Header.Set("Accept", "blah")
 | 
|  				r.ServeHTTP(res, req)
 | 
|  				So(res.Code, ShouldEqual, http.StatusNotAcceptable)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, invalidArgument)
 | 
|  			})
 | 
|  
 | 
|  			Convey("Invalid header", func() {
 | 
|  				req.Header.Set("X-Bin", "zzz")
 | 
|  				r.ServeHTTP(res, req)
 | 
|  				So(res.Code, ShouldEqual, http.StatusBadRequest)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, invalidArgument)
 | 
|  			})
 | 
|  
 | 
|  			Convey("Malformed request message", func() {
 | 
|  				hiMsg.WriteString("\nblah")
 | 
|  				r.ServeHTTP(res, req)
 | 
|  				So(res.Code, ShouldEqual, http.StatusBadRequest)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, invalidArgument)
 | 
|  			})
 | 
|  
 | 
|  			Convey("Invalid request message", func() {
 | 
|  				hiMsg.Reset()
 | 
|  				r.ServeHTTP(res, req)
 | 
|  				So(res.Code, ShouldEqual, http.StatusBadRequest)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, invalidArgument)
 | 
|  				So(res.Body.String(), ShouldEqual, "Name unspecified\n")
 | 
|  			})
 | 
| +
 | 
| +			Convey("no such service", func() {
 | 
| +				req.URL.Path = "/prpc/xxx/SayHello"
 | 
| +				r.ServeHTTP(res, req)
 | 
| +				So(res.Code, ShouldEqual, http.StatusNotImplemented)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, unimplemented)
 | 
| +			})
 | 
| +			Convey("no such method", func() {
 | 
| +				req.URL.Path = "/prpc/prpc.Greeter/xxx"
 | 
| +				r.ServeHTTP(res, req)
 | 
| +				So(res.Code, ShouldEqual, http.StatusNotImplemented)
 | 
| +				So(res.Header().Get(prpc.HeaderGRPCCode), ShouldEqual, unimplemented)
 | 
| +			})
 | 
|  		})
 | 
|  	})
 | 
|  }
 | 
| 
 |