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  }