~juju-qa/ubuntu/yakkety/juju/2.0-rc3-again

« back to all changes in this revision

Viewing changes to src/launchpad.net/goose/testservices/identityservice/legacy_test.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-04-24 22:34:47 UTC
  • Revision ID: package-import@ubuntu.com-20130424223447-f0qdji7ubnyo0s71
Tags: upstream-1.10.0.1
ImportĀ upstreamĀ versionĀ 1.10.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package identityservice
 
2
 
 
3
import (
 
4
        "io/ioutil"
 
5
        . "launchpad.net/gocheck"
 
6
        "launchpad.net/goose/testing/httpsuite"
 
7
        "net/http"
 
8
)
 
9
 
 
10
type LegacySuite struct {
 
11
        httpsuite.HTTPSuite
 
12
}
 
13
 
 
14
var _ = Suite(&LegacySuite{})
 
15
 
 
16
func (s *LegacySuite) setupLegacy(user, secret string) (token, managementURL string) {
 
17
        managementURL = s.Server.URL
 
18
        identity := NewLegacy()
 
19
        // Ensure that it conforms to the interface
 
20
        var _ IdentityService = identity
 
21
        identity.SetManagementURL(managementURL)
 
22
        identity.SetupHTTP(s.Mux)
 
23
        if user != "" {
 
24
                userInfo := identity.AddUser(user, secret, "tenant")
 
25
                token = userInfo.Token
 
26
        }
 
27
        return
 
28
}
 
29
 
 
30
func LegacyAuthRequest(URL, user, key string) (*http.Response, error) {
 
31
        client := &http.DefaultClient
 
32
        request, err := http.NewRequest("GET", URL, nil)
 
33
        if err != nil {
 
34
                return nil, err
 
35
        }
 
36
        if user != "" {
 
37
                request.Header.Set("X-Auth-User", user)
 
38
        }
 
39
        if key != "" {
 
40
                request.Header.Set("X-Auth-Key", key)
 
41
        }
 
42
        return client.Do(request)
 
43
}
 
44
 
 
45
func AssertUnauthorized(c *C, response *http.Response) {
 
46
        content, err := ioutil.ReadAll(response.Body)
 
47
        c.Assert(err, IsNil)
 
48
        response.Body.Close()
 
49
        c.Check(response.Header.Get("X-Auth-Token"), Equals, "")
 
50
        c.Check(response.Header.Get("X-Server-Management-Url"), Equals, "")
 
51
        c.Check(string(content), Equals, "")
 
52
        c.Check(response.StatusCode, Equals, http.StatusUnauthorized)
 
53
}
 
54
 
 
55
func (s *LegacySuite) TestLegacyFailedAuth(c *C) {
 
56
        s.setupLegacy("", "")
 
57
        // No headers set for Authentication
 
58
        response, err := LegacyAuthRequest(s.Server.URL, "", "")
 
59
        c.Assert(err, IsNil)
 
60
        AssertUnauthorized(c, response)
 
61
}
 
62
 
 
63
func (s *LegacySuite) TestLegacyFailedOnlyUser(c *C) {
 
64
        s.setupLegacy("", "")
 
65
        // Missing secret key
 
66
        response, err := LegacyAuthRequest(s.Server.URL, "user", "")
 
67
        c.Assert(err, IsNil)
 
68
        AssertUnauthorized(c, response)
 
69
}
 
70
 
 
71
func (s *LegacySuite) TestLegacyNoSuchUser(c *C) {
 
72
        s.setupLegacy("user", "key")
 
73
        // No user matching the username
 
74
        response, err := LegacyAuthRequest(s.Server.URL, "notuser", "key")
 
75
        c.Assert(err, IsNil)
 
76
        AssertUnauthorized(c, response)
 
77
}
 
78
 
 
79
func (s *LegacySuite) TestLegacyInvalidAuth(c *C) {
 
80
        s.setupLegacy("user", "secret-key")
 
81
        // Wrong key
 
82
        response, err := LegacyAuthRequest(s.Server.URL, "user", "bad-key")
 
83
        c.Assert(err, IsNil)
 
84
        AssertUnauthorized(c, response)
 
85
}
 
86
 
 
87
func (s *LegacySuite) TestLegacyAuth(c *C) {
 
88
        token, serverURL := s.setupLegacy("user", "secret-key")
 
89
        response, err := LegacyAuthRequest(s.Server.URL, "user", "secret-key")
 
90
        c.Assert(err, IsNil)
 
91
        content, err := ioutil.ReadAll(response.Body)
 
92
        response.Body.Close()
 
93
        c.Check(response.Header.Get("X-Auth-Token"), Equals, token)
 
94
        c.Check(response.Header.Get("X-Server-Management-Url"), Equals, serverURL+"/compute")
 
95
        c.Check(response.Header.Get("X-Storage-Url"), Equals, serverURL+"/object-store")
 
96
        c.Check(string(content), Equals, "")
 
97
        c.Check(response.StatusCode, Equals, http.StatusNoContent)
 
98
}