Index: server/auth/info/info_test.go |
diff --git a/server/auth/info/info_test.go b/server/auth/info/info_test.go |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c568c86e2e71d9635eb962cb599df3ac827adaf9 |
--- /dev/null |
+++ b/server/auth/info/info_test.go |
@@ -0,0 +1,89 @@ |
+// Copyright 2015 The Chromium 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 info |
+ |
+import ( |
+ "errors" |
+ "net/http" |
+ "net/http/httptest" |
+ "testing" |
+ |
+ "golang.org/x/net/context" |
+ |
+ "github.com/julienschmidt/httprouter" |
+ "github.com/luci/luci-go/server/middleware" |
+ |
+ . "github.com/smartystreets/goconvey/convey" |
+) |
+ |
+func TestFetchServiceInfo(t *testing.T) { |
+ Convey("Works", t, func() { |
+ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
+ w.Write([]byte(`{ |
+ "app_id": "some-app-id", |
+ "app_runtime": "go", |
+ "app_runtime_version": "go1.5.1", |
+ "app_version": "1234-abcdef", |
+ "service_account_name": "some-app-id@appspot.gserviceaccount.com" |
+ }`)) |
+ })) |
+ info, err := FetchServiceInfo(context.Background(), ts.URL) |
+ So(err, ShouldBeNil) |
+ So(info, ShouldResemble, &ServiceInfo{ |
+ AppID: "some-app-id", |
+ AppRuntime: "go", |
+ AppRuntimeVersion: "go1.5.1", |
+ AppVersion: "1234-abcdef", |
+ ServiceAccountName: "some-app-id@appspot.gserviceaccount.com", |
+ }) |
+ }) |
+ |
+ Convey("Error", t, func() { |
+ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
+ http.Error(w, "fail", http.StatusInternalServerError) |
+ })) |
+ info, err := FetchServiceInfo(context.Background(), ts.URL) |
+ So(info, ShouldBeNil) |
+ So(err, ShouldNotBeNil) |
+ }) |
+} |
+ |
+func TestInstallHandlers(t *testing.T) { |
+ Convey("Works", t, func() { |
+ c := context.Background() |
+ router := httprouter.New() |
+ returnErr := false |
+ |
+ InstallHandlers(router, middleware.TestingBase(c), func(context.Context) (ServiceInfo, error) { |
+ if returnErr { |
+ return ServiceInfo{}, errors.New("fail") |
+ } |
+ return ServiceInfo{ |
+ AppID: "some-app-id", |
+ AppRuntime: "go", |
+ AppRuntimeVersion: "go1.5.1", |
+ AppVersion: "1234-abcdef", |
+ ServiceAccountName: "some-app-id@appspot.gserviceaccount.com", |
+ }, nil |
+ }) |
+ |
+ w := httptest.NewRecorder() |
+ req, _ := http.NewRequest("GET", "/auth/api/v1/server/info", nil) |
+ router.ServeHTTP(w, req) |
+ So(w.Code, ShouldEqual, 200) |
+ So(w.Body.String(), ShouldResemble, |
+ `{"app_id":"some-app-id","app_runtime":"go",`+ |
+ `"app_runtime_version":"go1.5.1",`+ |
+ `"app_version":"1234-abcdef","service_account_name":`+ |
+ `"some-app-id@appspot.gserviceaccount.com"}`+"\n") |
+ |
+ returnErr = true |
+ w = httptest.NewRecorder() |
+ req, _ = http.NewRequest("GET", "/auth/api/v1/server/info", nil) |
+ router.ServeHTTP(w, req) |
+ So(w.Code, ShouldEqual, 500) |
+ So(w.Body.String(), ShouldResemble, "{\"error\":\"fail\"}\n") |
+ }) |
+} |