github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/api/uaa/uaa_suite_test.go (about) 1 package uaa_test 2 3 import ( 4 "bytes" 5 "log" 6 "net/http" 7 "net/url" 8 "strings" 9 "testing" 10 11 . "code.cloudfoundry.org/cli/api/uaa" 12 "code.cloudfoundry.org/cli/api/uaa/uaafakes" 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 . "github.com/onsi/gomega/ghttp" 16 ) 17 18 func TestUaa(t *testing.T) { 19 RegisterFailHandler(Fail) 20 RunSpecs(t, "UAA Suite") 21 } 22 23 var ( 24 // we create two servers in order to test that requests using different 25 // resources are going to the correct server 26 server *Server 27 uaaServer *Server 28 29 TestAuthorizationResource string 30 TestUAAResource string 31 ) 32 33 var _ = SynchronizedBeforeSuite(func() []byte { 34 return []byte{} 35 }, func(data []byte) { 36 server = NewTLSServer() 37 uaaServer = NewTLSServer() 38 39 testAuthURL, err := url.Parse(server.URL()) 40 Expect(err).ToNot(HaveOccurred()) 41 TestAuthorizationResource = testAuthURL.Host 42 43 testUAAURL, err := url.Parse(uaaServer.URL()) 44 Expect(err).ToNot(HaveOccurred()) 45 TestUAAResource = testUAAURL.Host 46 47 // Suppresses ginkgo server logs 48 server.HTTPTestServer.Config.ErrorLog = log.New(&bytes.Buffer{}, "", 0) 49 }) 50 51 var _ = SynchronizedAfterSuite(func() { 52 server.Close() 53 }, func() {}) 54 55 var _ = BeforeEach(func() { 56 server.Reset() 57 }) 58 59 func NewTestConfig() *uaafakes.FakeConfig { 60 config := new(uaafakes.FakeConfig) 61 config.BinaryNameReturns("CF CLI UAA API Test") 62 config.BinaryVersionReturns("Unknown") 63 config.UAAOAuthClientReturns("client-id") 64 config.UAAOAuthClientSecretReturns("client-secret") 65 config.SkipSSLValidationReturns(true) 66 return config 67 } 68 69 func NewTestUAAClientAndStore(config Config) *Client { 70 SetupBootstrapResponse() 71 72 client := NewClient(config) 73 74 // the 'uaaServer' is discovered via the bootstrapping when we hit the /login 75 // endpoint on 'server' 76 err := client.SetupResources(server.URL()) 77 Expect(err).ToNot(HaveOccurred()) 78 79 return client 80 } 81 82 func SetupBootstrapResponse() { 83 response := strings.Replace(`{ 84 "links": { 85 "uaa": "SERVER_URL" 86 } 87 }`, "SERVER_URL", uaaServer.URL(), -1) 88 89 server.AppendHandlers( 90 CombineHandlers( 91 VerifyRequest(http.MethodGet, "/login"), 92 RespondWith(http.StatusOK, response), 93 ), 94 ) 95 } 96 97 func verifyRequestHost(host string) http.HandlerFunc { 98 return func(_ http.ResponseWriter, req *http.Request) { 99 Expect(req.Host).To(Equal(host)) 100 } 101 }