github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/identity/v3/services/testing/fixtures.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/huaweicloud/golangsdk/openstack/identity/v3/services" 9 th "github.com/huaweicloud/golangsdk/testhelper" 10 "github.com/huaweicloud/golangsdk/testhelper/client" 11 ) 12 13 // ListOutput provides a single page of Service results. 14 const ListOutput = ` 15 { 16 "links": { 17 "next": null, 18 "previous": null 19 }, 20 "services": [ 21 { 22 "id": "1234", 23 "links": { 24 "self": "https://example.com/identity/v3/services/1234" 25 }, 26 "type": "identity", 27 "enabled": false, 28 "extra": { 29 "name": "service-one", 30 "description": "Service One" 31 } 32 }, 33 { 34 "id": "9876", 35 "links": { 36 "self": "https://example.com/identity/v3/services/9876" 37 }, 38 "type": "compute", 39 "enabled": false, 40 "extra": { 41 "name": "service-two", 42 "description": "Service Two", 43 "email": "service@example.com" 44 } 45 } 46 ] 47 } 48 ` 49 50 // GetOutput provides a Get result. 51 const GetOutput = ` 52 { 53 "service": { 54 "id": "9876", 55 "links": { 56 "self": "https://example.com/identity/v3/services/9876" 57 }, 58 "type": "compute", 59 "enabled": false, 60 "extra": { 61 "name": "service-two", 62 "description": "Service Two", 63 "email": "service@example.com" 64 } 65 } 66 } 67 ` 68 69 // CreateRequest provides the input to a Create request. 70 const CreateRequest = ` 71 { 72 "service": { 73 "description": "Service Two", 74 "email": "service@example.com", 75 "name": "service-two", 76 "type": "compute" 77 } 78 } 79 ` 80 81 // UpdateRequest provides the input to as Update request. 82 const UpdateRequest = ` 83 { 84 "service": { 85 "type": "compute2", 86 "description": "Service Two Updated" 87 } 88 } 89 ` 90 91 // UpdateOutput provides an update result. 92 const UpdateOutput = ` 93 { 94 "service": { 95 "id": "9876", 96 "links": { 97 "self": "https://example.com/identity/v3/services/9876" 98 }, 99 "type": "compute2", 100 "enabled": false, 101 "extra": { 102 "name": "service-two", 103 "description": "Service Two Updated", 104 "email": "service@example.com" 105 } 106 } 107 } 108 ` 109 110 // FirstService is the first service in the List request. 111 var FirstService = services.Service{ 112 ID: "1234", 113 Links: map[string]interface{}{ 114 "self": "https://example.com/identity/v3/services/1234", 115 }, 116 Type: "identity", 117 Enabled: false, 118 Extra: map[string]interface{}{ 119 "name": "service-one", 120 "description": "Service One", 121 }, 122 } 123 124 // SecondService is the second service in the List request. 125 var SecondService = services.Service{ 126 ID: "9876", 127 Links: map[string]interface{}{ 128 "self": "https://example.com/identity/v3/services/9876", 129 }, 130 Type: "compute", 131 Enabled: false, 132 Extra: map[string]interface{}{ 133 "name": "service-two", 134 "description": "Service Two", 135 "email": "service@example.com", 136 }, 137 } 138 139 // SecondServiceUpdated is the SecondService should look after an Update. 140 var SecondServiceUpdated = services.Service{ 141 ID: "9876", 142 Links: map[string]interface{}{ 143 "self": "https://example.com/identity/v3/services/9876", 144 }, 145 Type: "compute2", 146 Enabled: false, 147 Extra: map[string]interface{}{ 148 "name": "service-two", 149 "description": "Service Two Updated", 150 "email": "service@example.com", 151 }, 152 } 153 154 // ExpectedServicesSlice is the slice of services to be returned from ListOutput. 155 var ExpectedServicesSlice = []services.Service{FirstService, SecondService} 156 157 // HandleListServicesSuccessfully creates an HTTP handler at `/services` on the 158 // test handler mux that responds with a list of two services. 159 func HandleListServicesSuccessfully(t *testing.T) { 160 th.Mux.HandleFunc("/services", func(w http.ResponseWriter, r *http.Request) { 161 th.TestMethod(t, r, "GET") 162 th.TestHeader(t, r, "Accept", "application/json") 163 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 164 165 w.Header().Set("Content-Type", "application/json") 166 w.WriteHeader(http.StatusOK) 167 fmt.Fprintf(w, ListOutput) 168 }) 169 } 170 171 // HandleGetServiceSuccessfully creates an HTTP handler at `/services` on the 172 // test handler mux that responds with a single service. 173 func HandleGetServiceSuccessfully(t *testing.T) { 174 th.Mux.HandleFunc("/services/9876", func(w http.ResponseWriter, r *http.Request) { 175 th.TestMethod(t, r, "GET") 176 th.TestHeader(t, r, "Accept", "application/json") 177 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 178 179 w.Header().Set("Content-Type", "application/json") 180 w.WriteHeader(http.StatusOK) 181 fmt.Fprintf(w, GetOutput) 182 }) 183 } 184 185 // HandleCreateServiceSuccessfully creates an HTTP handler at `/services` on the 186 // test handler mux that tests service creation. 187 func HandleCreateServiceSuccessfully(t *testing.T) { 188 th.Mux.HandleFunc("/services", func(w http.ResponseWriter, r *http.Request) { 189 th.TestMethod(t, r, "POST") 190 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 191 th.TestJSONRequest(t, r, CreateRequest) 192 193 w.WriteHeader(http.StatusCreated) 194 fmt.Fprintf(w, GetOutput) 195 }) 196 } 197 198 // HandleUpdateServiceSuccessfully creates an HTTP handler at `/services` on the 199 // test handler mux that tests service update. 200 func HandleUpdateServiceSuccessfully(t *testing.T) { 201 th.Mux.HandleFunc("/services/9876", func(w http.ResponseWriter, r *http.Request) { 202 th.TestMethod(t, r, "PATCH") 203 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 204 th.TestJSONRequest(t, r, UpdateRequest) 205 206 w.WriteHeader(http.StatusOK) 207 fmt.Fprintf(w, UpdateOutput) 208 }) 209 }