github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/css/v1/clusters/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/stretchr/testify/suite" 9 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/clusters" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 fake "github.com/opentelekomcloud/gophertelekomcloud/testhelper/client" 13 ) 14 15 type Clusters struct { 16 suite.Suite 17 } 18 19 func (s *Clusters) SetupTest() { 20 th.SetupHTTP() 21 } 22 23 func (s *Clusters) TearDownTest() { 24 th.TeardownHTTP() 25 } 26 27 func (s *Clusters) TestCreateRequest() { 28 t := s.T() 29 30 th.Mux.HandleFunc("/clusters", func(w http.ResponseWriter, r *http.Request) { 31 th.TestMethod(t, r, "POST") 32 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 33 th.TestJSONRequest(t, r, createRequestBody) 34 35 w.Header().Add("Content-Type", "application/json") 36 _, _ = fmt.Fprint(w, createResponseBody) 37 }) 38 39 opts := clusters.CreateOpts{ 40 Instance: &clusters.InstanceSpec{ 41 Flavor: "css.large.8", 42 Volume: &clusters.Volume{ 43 Type: "COMMON", 44 Size: 100, 45 }, 46 Nics: &clusters.Nics{ 47 VpcID: vpcID, 48 SubnetID: subnetID, 49 SecurityGroupID: sgID, 50 }, 51 }, 52 Name: clusterName, 53 InstanceNum: 4, 54 DiskEncryption: &clusters.DiskEncryption{ 55 Encrypted: "1", 56 CmkID: cmkID, 57 }, 58 HttpsEnabled: "false", 59 AuthorityEnabled: false, 60 } 61 62 created, err := clusters.Create(fake.ServiceClient(), opts) 63 th.AssertNoErr(t, err) 64 65 th.AssertEquals(t, clusterName, created.Name) 66 th.AssertEquals(t, clusterID, created.ID) 67 } 68 69 func (s *Clusters) TestGetRequest() { 70 t := s.T() 71 72 clusterURL := fmt.Sprintf("/clusters/%s", clusterID) 73 th.Mux.HandleFunc(clusterURL, func(w http.ResponseWriter, r *http.Request) { 74 th.TestMethod(t, r, "GET") 75 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 76 77 w.Header().Add("Content-Type", "application/json") 78 _, _ = fmt.Fprint(w, getResponseBody) 79 }) 80 81 cluster, err := clusters.Get(fake.ServiceClient(), clusterID) 82 th.AssertNoErr(t, err) 83 if cluster == nil { 84 t.Fatal("cluster is nil") 85 } 86 87 th.AssertEquals(t, clusterID, cluster.ID) 88 th.AssertEquals(t, clusterName, cluster.Name) 89 th.AssertEquals(t, "200", cluster.Status) 90 th.AssertEquals(t, "7.6.2", cluster.Datastore.Version) 91 th.AssertEquals(t, "elasticsearch", cluster.Datastore.Type) 92 } 93 94 func (s *Clusters) TestListRequest() { 95 t := s.T() 96 97 th.Mux.HandleFunc("/clusters", func(w http.ResponseWriter, r *http.Request) { 98 th.TestMethod(t, r, "GET") 99 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 100 101 w.Header().Add("Content-Type", "application/json") 102 _, _ = fmt.Fprint(w, listResponseBody) 103 }) 104 105 clusterSlice, err := clusters.List(fake.ServiceClient()) 106 th.AssertNoErr(t, err) 107 108 th.AssertEquals(t, len(clusterSlice), 3) 109 for _, cluster := range clusterSlice { 110 t.Logf("%+v", cluster) 111 } 112 } 113 114 func (s *Clusters) TestDeleteRequest() { 115 t := s.T() 116 117 clusterURL := fmt.Sprintf("/clusters/%s", clusterID) 118 th.Mux.HandleFunc(clusterURL, func(w http.ResponseWriter, r *http.Request) { 119 th.TestMethod(t, r, "DELETE") 120 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 121 122 w.WriteHeader(200) 123 }) 124 125 err := clusters.Delete(fake.ServiceClient(), clusterID) 126 th.AssertNoErr(t, err) 127 } 128 129 func TestClustersMethods(t *testing.T) { 130 suite.Run(t, new(Clusters)) 131 }