~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/goose.v1/identity/local_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package identity_test
 
2
 
 
3
import (
 
4
        "net/http"
 
5
        "net/http/httptest"
 
6
        "net/url"
 
7
        "strings"
 
8
 
 
9
        gc "gopkg.in/check.v1"
 
10
 
 
11
        "gopkg.in/goose.v1/identity"
 
12
        "gopkg.in/goose.v1/testservices/openstackservice"
 
13
)
 
14
 
 
15
func registerLocalTests(authMode identity.AuthMode) {
 
16
        lt := LiveTests{authMode: authMode}
 
17
        gc.Suite(&localLiveSuite{LiveTests: lt})
 
18
}
 
19
 
 
20
// localLiveSuite runs tests from LiveTests using a fake
 
21
// nova server that runs within the test process itself.
 
22
type localLiveSuite struct {
 
23
        LiveTests
 
24
        // The following attributes are for using testing doubles.
 
25
        Server     *httptest.Server
 
26
        Mux        *http.ServeMux
 
27
        oldHandler http.Handler
 
28
}
 
29
 
 
30
func (s *localLiveSuite) SetUpSuite(c *gc.C) {
 
31
        c.Logf("Using identity and nova service test doubles")
 
32
 
 
33
        // Set up the HTTP server.
 
34
        s.Server = httptest.NewServer(nil)
 
35
        s.oldHandler = s.Server.Config.Handler
 
36
        s.Mux = http.NewServeMux()
 
37
        s.Server.Config.Handler = s.Mux
 
38
 
 
39
        serverURL := s.Server.URL
 
40
        if s.authMode == identity.AuthUserPassV3 {
 
41
                serverURL = serverURL + "/v3"
 
42
        }
 
43
        // Set up an Openstack service.
 
44
        s.cred = &identity.Credentials{
 
45
                URL:        serverURL,
 
46
                User:       "fred",
 
47
                Secrets:    "secret",
 
48
                Region:     "zone1.some region",
 
49
                TenantName: "tenant",
 
50
                DomainName: "default",
 
51
        }
 
52
        openstack := openstackservice.New(s.cred, s.authMode)
 
53
        openstack.SetupHTTP(s.Mux)
 
54
 
 
55
        openstack.Identity.AddUser("fred", "secret", "tenant")
 
56
        s.LiveTests.SetUpSuite(c)
 
57
}
 
58
 
 
59
func (s *localLiveSuite) TearDownSuite(c *gc.C) {
 
60
        s.LiveTests.TearDownSuite(c)
 
61
        s.Mux = nil
 
62
        s.Server.Config.Handler = s.oldHandler
 
63
        s.Server.Close()
 
64
}
 
65
 
 
66
func (s *localLiveSuite) SetUpTest(c *gc.C) {
 
67
        s.LiveTests.SetUpTest(c)
 
68
}
 
69
 
 
70
func (s *localLiveSuite) TearDownTest(c *gc.C) {
 
71
        s.LiveTests.TearDownTest(c)
 
72
}
 
73
 
 
74
// Additional tests to be run against the service double only go here.
 
75
 
 
76
func (s *localLiveSuite) TestProductStreamsEndpoint(c *gc.C) {
 
77
        err := s.client.Authenticate()
 
78
        c.Assert(err, gc.IsNil)
 
79
        serviceURL, err := s.client.MakeServiceURL("product-streams", nil)
 
80
        c.Assert(err, gc.IsNil)
 
81
        _, err = url.Parse(serviceURL)
 
82
        c.Assert(err, gc.IsNil)
 
83
        c.Assert(strings.HasSuffix(serviceURL, "/imagemetadata"), gc.Equals, true)
 
84
}
 
85
 
 
86
func (s *localLiveSuite) TestJujuToolsEndpoint(c *gc.C) {
 
87
        err := s.client.Authenticate()
 
88
        c.Assert(err, gc.IsNil)
 
89
        serviceURL, err := s.client.MakeServiceURL("juju-tools", nil)
 
90
        c.Assert(err, gc.IsNil)
 
91
        _, err = url.Parse(serviceURL)
 
92
        c.Assert(err, gc.IsNil)
 
93
}