Index: go/src/infra/libs/auth/service_test.go |
diff --git a/go/src/infra/libs/auth/service_test.go b/go/src/infra/libs/auth/service_test.go |
deleted file mode 100644 |
index af770b0bc3873a21895164f2de18dbd13c23a487..0000000000000000000000000000000000000000 |
--- a/go/src/infra/libs/auth/service_test.go |
+++ /dev/null |
@@ -1,157 +0,0 @@ |
-// 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 auth |
- |
-import ( |
- "io/ioutil" |
- "net/http" |
- "strings" |
- "testing" |
- "time" |
- |
- . "github.com/smartystreets/goconvey/convey" |
-) |
- |
-func TestGroupsService(t *testing.T) { |
- Convey("Mocking time and HTTP", t, func() { |
- mockSleep() |
- |
- requests := mockDoRequest() |
- service := NewGroupsService("https://example.com", &http.Client{}, nil) |
- |
- Convey("doGet works", func() { |
- requests.expect("https://example.com/some/path", 200, `{"key":"val"}`) |
- var response struct { |
- Key string `json:"key"` |
- } |
- err := service.doGet("/some/path", &response) |
- So(err, ShouldBeNil) |
- So(response.Key, ShouldEqual, "val") |
- }) |
- |
- Convey("doGet retry works", func() { |
- requests.expect("https://example.com/some/path", 500, "") |
- requests.expect("https://example.com/some/path", 503, "") |
- requests.expect("https://example.com/some/path", 200, `{"key":"val"}`) |
- var response struct { |
- Key string `json:"key"` |
- } |
- err := service.doGet("/some/path", &response) |
- So(err, ShouldBeNil) |
- So(response.Key, ShouldEqual, "val") |
- }) |
- |
- Convey("doGet fatal error", func() { |
- requests.expect("https://example.com/some/path", 403, "error") |
- var response struct{} |
- err := service.doGet("/some/path", &response) |
- So(err, ShouldNotBeNil) |
- }) |
- |
- Convey("doGet max retry", func() { |
- for i := 0; i < 5; i++ { |
- requests.expect("https://example.com/some/path", 500, "") |
- } |
- var response struct{} |
- err := service.doGet("/some/path", &response) |
- So(err, ShouldNotBeNil) |
- }) |
- |
- Convey("FetchCallerIdentity works", func() { |
- requests.expect("https://example.com/auth/api/v1/accounts/self", 200, `{ |
- "identity": "user:abc@example.com" |
- }`) |
- ident, err := service.FetchCallerIdentity() |
- So(err, ShouldBeNil) |
- So(ident, ShouldResemble, Identity{ |
- Kind: IdentityKindUser, |
- Name: "abc@example.com", |
- }) |
- }) |
- |
- Convey("FetchGroup works", func() { |
- requests.expect("https://example.com/auth/api/v1/groups/abc/name", 200, `{ |
- "group": { |
- "name": "abc/name", |
- "description": "Some description", |
- "members": [ |
- "anonymous:anonymous", |
- "bot:127.0.0.1", |
- "service:some-gae-app", |
- "user:abc@example.com", |
- "broken id", |
- "unknown_type:abc" |
- ], |
- "globs": ["user:*@example.com"], |
- "nested": ["another-group"] |
- } |
- }`) |
- group, err := service.FetchGroup("abc/name") |
- So(err, ShouldBeNil) |
- So(group, ShouldResemble, Group{ |
- Name: "abc/name", |
- Description: "Some description", |
- Members: []Identity{ |
- Identity{Kind: IdentityKindAnonymous, Name: "anonymous"}, |
- Identity{Kind: IdentityKindBot, Name: "127.0.0.1"}, |
- Identity{Kind: IdentityKindService, Name: "some-gae-app"}, |
- Identity{Kind: IdentityKindUser, Name: "abc@example.com"}, |
- }, |
- Globs: []string{"user:*@example.com"}, |
- Nested: []string{"another-group"}, |
- }) |
- }) |
- }) |
-} |
- |
-func mockSleep() { |
- prev := sleep |
- sleep = func(d time.Duration) {} |
- Reset(func() { |
- sleep = prev |
- }) |
-} |
- |
-type mockedRequest struct { |
- URL string |
- StatusCode int |
- Response string |
-} |
- |
-type mockedRequests struct { |
- Expected []mockedRequest |
-} |
- |
-func mockDoRequest() *mockedRequests { |
- requests := &mockedRequests{} |
- prev := doRequest |
- doRequest = func(c *http.Client, req *http.Request) (*http.Response, error) { |
- So(len(requests.Expected), ShouldNotEqual, 0) |
- next := requests.Expected[0] |
- requests.Expected = requests.Expected[1:] |
- So(next.URL, ShouldEqual, req.URL.String()) |
- return &http.Response{ |
- StatusCode: next.StatusCode, |
- Body: ioutil.NopCloser(strings.NewReader(next.Response)), |
- }, nil |
- } |
- Reset(func() { |
- requests.assertExecuted() |
- doRequest = prev |
- }) |
- return requests |
-} |
- |
-func (r *mockedRequests) expect(url string, status int, response string) { |
- r.Expected = append(r.Expected, mockedRequest{ |
- URL: url, |
- StatusCode: status, |
- Response: response, |
- }) |
-} |
- |
-func (r *mockedRequests) assertExecuted() { |
- So(r.Expected, ShouldBeEmpty) |
-} |