1
package identityservice
5
. "launchpad.net/gocheck"
6
"launchpad.net/goose/testing/httpsuite"
10
type LegacySuite struct {
14
var _ = Suite(&LegacySuite{})
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)
24
userInfo := identity.AddUser(user, secret, "tenant")
25
token = userInfo.Token
30
func LegacyAuthRequest(URL, user, key string) (*http.Response, error) {
31
client := &http.DefaultClient
32
request, err := http.NewRequest("GET", URL, nil)
37
request.Header.Set("X-Auth-User", user)
40
request.Header.Set("X-Auth-Key", key)
42
return client.Do(request)
45
func AssertUnauthorized(c *C, response *http.Response) {
46
content, err := ioutil.ReadAll(response.Body)
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)
55
func (s *LegacySuite) TestLegacyFailedAuth(c *C) {
57
// No headers set for Authentication
58
response, err := LegacyAuthRequest(s.Server.URL, "", "")
60
AssertUnauthorized(c, response)
63
func (s *LegacySuite) TestLegacyFailedOnlyUser(c *C) {
66
response, err := LegacyAuthRequest(s.Server.URL, "user", "")
68
AssertUnauthorized(c, response)
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")
76
AssertUnauthorized(c, response)
79
func (s *LegacySuite) TestLegacyInvalidAuth(c *C) {
80
s.setupLegacy("user", "secret-key")
82
response, err := LegacyAuthRequest(s.Server.URL, "user", "bad-key")
84
AssertUnauthorized(c, response)
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")
91
content, err := ioutil.ReadAll(response.Body)
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)