github.com/IBM-Cloud/bluemix-go@v0.0.0-20240314082800-4e02a69b84b2/api/cis/cisv1/settings_test.go (about)

     1  package cisv1
     2  
     3  import (
     4  	"log"
     5  	"net/http"
     6  
     7  	bluemix "github.com/IBM-Cloud/bluemix-go"
     8  	"github.com/IBM-Cloud/bluemix-go/client"
     9  	bluemixHttp "github.com/IBM-Cloud/bluemix-go/http"
    10  	"github.com/IBM-Cloud/bluemix-go/session"
    11  
    12  	"github.com/onsi/gomega/ghttp"
    13  
    14  	. "github.com/onsi/ginkgo"
    15  	. "github.com/onsi/gomega"
    16  )
    17  
    18  var _ = Describe("Settings", func() {
    19  	var server *ghttp.Server
    20  	AfterEach(func() {
    21  		server.Close()
    22  	})
    23  
    24  	//Find
    25  	Describe("Get", func() {
    26  		Context("When read of min_tls_version Setting is successful", func() {
    27  			BeforeEach(func() {
    28  				server = ghttp.NewServer()
    29  				server.AppendHandlers(
    30  					ghttp.CombineHandlers(
    31  						ghttp.VerifyRequest(http.MethodGet, "/v1/crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a/zones/3fefc35e7decadb111dcf85d723a4f20/settings/min_tls_version"),
    32  						ghttp.RespondWith(http.StatusOK, `
    33                              {
    34                                "result": {
    35                                  "id": "min_tls_version",
    36                                  "value": "1.2",
    37                                  "modified_on": null,
    38                                  "editable": true
    39                                },
    40                                "success": true,
    41                                "errors": [],
    42                                "messages": []
    43                              }
    44                          `),
    45  					),
    46  				)
    47  			})
    48  
    49  			It("should return Setting", func() {
    50  				target1 := "crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a"
    51  				target2 := "3fefc35e7decadb111dcf85d723a4f20"
    52  				target3 := "min_tls_version"
    53  				mySettingPtr, err := newSetting(server.URL()).GetSetting(target1, target2, target3)
    54  				mySetting := *mySettingPtr
    55  				Expect(err).NotTo(HaveOccurred())
    56  				Expect(mySetting).ShouldNot(BeNil())
    57  				Expect(mySetting.Value).Should(Equal("1.2"))
    58  			})
    59  		})
    60  		Context("When Setting get has failed", func() {
    61  			BeforeEach(func() {
    62  				server = ghttp.NewServer()
    63  				server.SetAllowUnhandledRequests(true)
    64  				server.AppendHandlers(
    65  					ghttp.CombineHandlers(
    66  						ghttp.VerifyRequest(http.MethodGet, "/v1/crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a/zones/3fefc35e7decadb111dcf85d723a4f20/settings/min_tls_version"),
    67  						ghttp.RespondWith(http.StatusInternalServerError, `Failed to retrieve Setting`),
    68  					),
    69  				)
    70  			})
    71  
    72  			It("should return error when Setting is retrieved", func() {
    73  				target1 := "crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a"
    74  				target2 := "3fefc35e7decadb111dcf85d723a4f20"
    75  				target3 := "min_tls_version"
    76  				mySettingPtr, err := newSetting(server.URL()).GetSetting(target1, target2, target3)
    77  				mySetting := mySettingPtr
    78  				Expect(err).To(HaveOccurred())
    79  				Expect(mySetting).Should(BeNil())
    80  			})
    81  		})
    82  	})
    83  
    84  	Describe("Update", func() {
    85  		Context("When updating is successful", func() {
    86  			BeforeEach(func() {
    87  				server = ghttp.NewServer()
    88  				server.AppendHandlers(
    89  					ghttp.CombineHandlers(
    90  						ghttp.VerifyRequest(http.MethodPatch, "/v1/crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a/zones/3fefc35e7decadb111dcf85d723a4f20/settings/min_tls_version"),
    91  						ghttp.RespondWith(http.StatusCreated, `
    92                             {
    93                                "result": {
    94                                  "id": "min_tls_version",
    95                                  "value": "1.2",
    96                                  "modified_on": "2018-10-08T09:37:29.953507Z",
    97                                  "editable": true
    98                                },
    99                                "success": true,
   100                                "errors": [],
   101                                "messages": []
   102                              }
   103                          `),
   104  					),
   105  				)
   106  			})
   107  
   108  			It("should return setting created", func() {
   109  				params := SettingsBody{
   110  					Value: "1.2",
   111  				}
   112  				target1 := "crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a"
   113  				target2 := "3fefc35e7decadb111dcf85d723a4f20"
   114  				target3 := "min_tls_version"
   115  				mySettingPt, err := newSetting(server.URL()).UpdateSetting(target1, target2, target3, params)
   116  				mySetting := *mySettingPt
   117  				Expect(err).NotTo(HaveOccurred())
   118  				Expect(mySetting).ShouldNot(BeNil())
   119  				Expect(mySetting.Value).Should(Equal("1.2"))
   120  			})
   121  		})
   122  		Context("When creation is unsuccessful", func() {
   123  			BeforeEach(func() {
   124  				server = ghttp.NewServer()
   125  				server.SetAllowUnhandledRequests(true)
   126  				server.AppendHandlers(
   127  					ghttp.CombineHandlers(
   128  						ghttp.VerifyRequest(http.MethodPatch, "/v1/crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a/zones/3fefc35e7decadb111dcf85d723a4f20/settings/min_tls_version"),
   129  						ghttp.RespondWith(http.StatusInternalServerError, `Failed to create Setting`),
   130  					),
   131  				)
   132  			})
   133  			It("should return error during Setting creation", func() {
   134  				params := SettingsBody{
   135  					Value: "1.2",
   136  				}
   137  				target1 := "crn:v1:staging:public:iam::::apikey:ApiKey-62fefdd1-4557-4c7d-8a1c-f6da7ee2ff3a"
   138  				target2 := "3fefc35e7decadb111dcf85d723a4f20"
   139  				target3 := "min_tls_version"
   140  				mySettingPtr, err := newSetting(server.URL()).UpdateSetting(target1, target2, target3, params)
   141  				mySetting := mySettingPtr
   142  				Expect(err).To(HaveOccurred())
   143  				Expect(mySetting).Should(BeNil())
   144  			})
   145  		})
   146  	})
   147  })
   148  
   149  func newSetting(url string) Settings {
   150  
   151  	sess, err := session.New()
   152  	if err != nil {
   153  		log.Fatal(err)
   154  	}
   155  	conf := sess.Config.Copy()
   156  	conf.HTTPClient = bluemixHttp.NewHTTPClient(conf)
   157  	conf.Endpoint = &url
   158  
   159  	client := client.Client{
   160  		Config:      conf,
   161  		ServiceName: bluemix.CisService,
   162  	}
   163  	return newSettingsAPI(&client)
   164  }