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 }