github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/api/cloudcontroller/ccv3/ccv3_suite_test.go (about)

     1  package ccv3_test
     2  
     3  import (
     4  	"bytes"
     5  	"log"
     6  	"net/http"
     7  	"strings"
     8  
     9  	. "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  	. "github.com/onsi/gomega/ghttp"
    13  
    14  	"testing"
    15  )
    16  
    17  func TestCcv3(t *testing.T) {
    18  	RegisterFailHandler(Fail)
    19  	RunSpecs(t, "Cloud Controller V3 Suite")
    20  }
    21  
    22  var server *Server
    23  
    24  var _ = SynchronizedBeforeSuite(func() []byte {
    25  	return []byte{}
    26  }, func(data []byte) {
    27  	server = NewTLSServer()
    28  
    29  	// Suppresses ginkgo server logs
    30  	server.HTTPTestServer.Config.ErrorLog = log.New(&bytes.Buffer{}, "", 0)
    31  })
    32  
    33  var _ = SynchronizedAfterSuite(func() {
    34  	server.Close()
    35  }, func() {})
    36  
    37  var _ = BeforeEach(func() {
    38  	server.Reset()
    39  })
    40  
    41  func NewTestClient() *Client {
    42  	SetupV3Response()
    43  	client := NewClient(Config{AppName: "CF CLI API V3 Test", AppVersion: "Unknown"})
    44  	warnings, err := client.TargetCF(TargetSettings{
    45  		SkipSSLValidation: true,
    46  		URL:               server.URL(),
    47  	})
    48  	Expect(err).ToNot(HaveOccurred())
    49  	Expect(warnings).To(BeEmpty())
    50  
    51  	return client
    52  }
    53  
    54  func SetupV3Response() {
    55  	serverURL := server.URL()
    56  	rootResponse := strings.Replace(`{
    57  		"links": {
    58  			"self": {
    59  				"href": "SERVER_URL"
    60  			},
    61  			"cloud_controller_v2": {
    62  				"href": "SERVER_URL/v2",
    63  				"meta": {
    64  					"version": "2.64.0"
    65  				}
    66  			},
    67  			"cloud_controller_v3": {
    68  				"href": "SERVER_URL/v3",
    69  				"meta": {
    70  					"version": "3.0.0-alpha.5"
    71  				}
    72  			},
    73  			"uaa": {
    74  				"href": "https://uaa.bosh-lite.com"
    75  			}
    76  		}
    77  	}`, "SERVER_URL", serverURL, -1)
    78  
    79  	server.AppendHandlers(
    80  		CombineHandlers(
    81  			VerifyRequest(http.MethodGet, "/"),
    82  			RespondWith(http.StatusOK, rootResponse),
    83  		),
    84  	)
    85  
    86  	v3Response := strings.Replace(`{
    87  		"links": {
    88  			"self": {
    89  				"href": "SERVER_URL/v3"
    90  			},
    91  			"apps": {
    92  				"href": "SERVER_URL/v3/apps"
    93  			},
    94  			"tasks": {
    95  				"href": "SERVER_URL/v3/tasks"
    96  			},
    97  			"isolation_segments": {
    98  				"href": "SERVER_URL/v3/isolation_segments"
    99  			},
   100  			"builds": {
   101  				"href": "SERVER_URL/v3/builds"
   102  			},
   103  			"organizations": {
   104  				"href": "SERVER_URL/v3/organizations"
   105  			},
   106  			"spaces": {
   107  				"href": "SERVER_URL/v3/spaces"
   108  			},
   109  			"packages": {
   110  				"href": "SERVER_URL/v3/packages"
   111  			},
   112  			"processes": {
   113  				"href": "SERVER_URL/v3/processes"
   114  			}
   115  		}
   116  	}`, "SERVER_URL", serverURL, -1)
   117  
   118  	server.AppendHandlers(
   119  		CombineHandlers(
   120  			VerifyRequest(http.MethodGet, "/v3"),
   121  			RespondWith(http.StatusOK, v3Response),
   122  		),
   123  	)
   124  }