github.com/gophercloud/gophercloud@v1.11.0/openstack/blockstorage/v3/attachments/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 "time" 8 9 "github.com/gophercloud/gophercloud" 10 "github.com/gophercloud/gophercloud/openstack/blockstorage/v3/attachments" 11 th "github.com/gophercloud/gophercloud/testhelper" 12 fake "github.com/gophercloud/gophercloud/testhelper/client" 13 ) 14 15 var ( 16 attachedAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2015-09-16T09:28:52.000000") 17 detachedAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2015-09-16T09:28:52.000000") 18 expectedAttachment = &attachments.Attachment{ 19 ID: "05551600-a936-4d4a-ba42-79a037c1-c91a", 20 VolumeID: "289da7f8-6440-407c-9fb4-7db01ec49164", 21 Instance: "83ec2e3b-4321-422b-8706-a84185f52a0a", 22 AttachMode: "rw", 23 Status: "attaching", 24 AttachedAt: attachedAt, 25 DetachedAt: detachedAt, 26 ConnectionInfo: map[string]interface{}{}, 27 } 28 ) 29 30 func MockListResponse(t *testing.T) { 31 th.Mux.HandleFunc("/attachments/detail", func(w http.ResponseWriter, r *http.Request) { 32 th.TestMethod(t, r, "GET") 33 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 34 35 w.Header().Add("Content-Type", "application/json") 36 w.WriteHeader(http.StatusOK) 37 38 r.ParseForm() 39 marker := r.Form.Get("marker") 40 switch marker { 41 case "": 42 fmt.Fprintf(w, ` 43 { 44 "attachments": [ 45 { 46 "status": "attaching", 47 "detached_at": "2015-09-16T09:28:52.000000", 48 "connection_info": {}, 49 "attached_at": "2015-09-16T09:28:52.000000", 50 "attach_mode": "rw", 51 "instance": "83ec2e3b-4321-422b-8706-a84185f52a0a", 52 "volume_id": "289da7f8-6440-407c-9fb4-7db01ec49164", 53 "id": "05551600-a936-4d4a-ba42-79a037c1-c91a" 54 } 55 ], 56 "attachments_links": [ 57 { 58 "href": "%s/attachments/detail?marker=1", 59 "rel": "next" 60 } 61 ] 62 } 63 `, th.Server.URL) 64 case "1": 65 fmt.Fprintf(w, `{"volumes": []}`) 66 default: 67 t.Fatalf("Unexpected marker: [%s]", marker) 68 } 69 }) 70 } 71 72 func MockGetResponse(t *testing.T) { 73 th.Mux.HandleFunc("/attachments/05551600-a936-4d4a-ba42-79a037c1-c91a", 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 w.WriteHeader(http.StatusOK) 79 fmt.Fprintf(w, ` 80 { 81 "attachment": { 82 "status": "attaching", 83 "detached_at": "2015-09-16T09:28:52.000000", 84 "connection_info": {}, 85 "attached_at": "2015-09-16T09:28:52.000000", 86 "attach_mode": "rw", 87 "instance": "83ec2e3b-4321-422b-8706-a84185f52a0a", 88 "volume_id": "289da7f8-6440-407c-9fb4-7db01ec49164", 89 "id": "05551600-a936-4d4a-ba42-79a037c1-c91a" 90 } 91 } 92 `) 93 }) 94 } 95 96 func MockCreateResponse(t *testing.T) { 97 th.Mux.HandleFunc("/attachments", func(w http.ResponseWriter, r *http.Request) { 98 th.TestMethod(t, r, "POST") 99 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 100 th.TestHeader(t, r, "Content-Type", "application/json") 101 th.TestHeader(t, r, "Accept", "application/json") 102 th.TestJSONRequest(t, r, ` 103 { 104 "attachment": { 105 "instance_uuid": "83ec2e3b-4321-422b-8706-a84185f52a0a", 106 "connector": { 107 "initiator": "iqn.1993-08.org.debian: 01: cad181614cec", 108 "ip": "192.168.1.20", 109 "platform": "x86_64", 110 "host": "tempest-1", 111 "os_type": "linux2", 112 "multipath": false, 113 "mountpoint": "/dev/vdb", 114 "mode": "rw" 115 }, 116 "volume_uuid": "289da7f8-6440-407c-9fb4-7db01ec49164" 117 } 118 } 119 `) 120 121 w.Header().Add("Content-Type", "application/json") 122 w.WriteHeader(http.StatusOK) 123 124 fmt.Fprintf(w, ` 125 { 126 "attachment": { 127 "status": "attaching", 128 "detached_at": "2015-09-16T09:28:52.000000", 129 "connection_info": {}, 130 "attached_at": "2015-09-16T09:28:52.000000", 131 "attach_mode": "rw", 132 "instance": "83ec2e3b-4321-422b-8706-a84185f52a0a", 133 "volume_id": "289da7f8-6440-407c-9fb4-7db01ec49164", 134 "id": "05551600-a936-4d4a-ba42-79a037c1-c91a" 135 } 136 } 137 `) 138 }) 139 } 140 141 func MockDeleteResponse(t *testing.T) { 142 th.Mux.HandleFunc("/attachments/05551600-a936-4d4a-ba42-79a037c1-c91a", func(w http.ResponseWriter, r *http.Request) { 143 th.TestMethod(t, r, "DELETE") 144 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 145 w.WriteHeader(http.StatusOK) 146 }) 147 } 148 149 func MockUpdateResponse(t *testing.T) { 150 th.Mux.HandleFunc("/attachments/05551600-a936-4d4a-ba42-79a037c1-c91a", func(w http.ResponseWriter, r *http.Request) { 151 th.TestMethod(t, r, "PUT") 152 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 153 154 th.TestJSONRequest(t, r, ` 155 { 156 "attachment": { 157 "connector": { 158 "initiator": "iqn.1993-08.org.debian: 01: cad181614cec", 159 "ip": "192.168.1.20", 160 "platform": "x86_64", 161 "host": "tempest-1", 162 "os_type": "linux2", 163 "multipath": false, 164 "mountpoint": "/dev/vdb", 165 "mode": "rw" 166 } 167 } 168 } 169 `) 170 171 w.WriteHeader(http.StatusOK) 172 fmt.Fprintf(w, ` 173 { 174 "attachment": { 175 "status": "attaching", 176 "detached_at": "2015-09-16T09:28:52.000000", 177 "connection_info": {}, 178 "attached_at": "2015-09-16T09:28:52.000000", 179 "attach_mode": "rw", 180 "instance": "83ec2e3b-4321-422b-8706-a84185f52a0a", 181 "volume_id": "289da7f8-6440-407c-9fb4-7db01ec49164", 182 "id": "05551600-a936-4d4a-ba42-79a037c1-c91a" 183 } 184 } 185 `) 186 }) 187 } 188 189 func MockUpdateEmptyResponse(t *testing.T) { 190 th.Mux.HandleFunc("/attachments/05551600-a936-4d4a-ba42-79a037c1-c91a", func(w http.ResponseWriter, r *http.Request) { 191 th.TestMethod(t, r, "PUT") 192 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 193 194 th.TestJSONRequest(t, r, ` 195 { 196 "attachment": { 197 "connector": null 198 } 199 } 200 `) 201 202 w.WriteHeader(http.StatusOK) 203 fmt.Fprintf(w, ` 204 { 205 "attachment": { 206 "status": "attaching", 207 "detached_at": "2015-09-16T09:28:52.000000", 208 "connection_info": {}, 209 "attached_at": "2015-09-16T09:28:52.000000", 210 "attach_mode": "rw", 211 "instance": "83ec2e3b-4321-422b-8706-a84185f52a0a", 212 "volume_id": "289da7f8-6440-407c-9fb4-7db01ec49164", 213 "id": "05551600-a936-4d4a-ba42-79a037c1-c91a" 214 } 215 } 216 `) 217 }) 218 } 219 220 var completeRequest = ` 221 { 222 "os-complete": null 223 } 224 ` 225 226 func MockCompleteResponse(t *testing.T) { 227 th.Mux.HandleFunc("/attachments/05551600-a936-4d4a-ba42-79a037c1-c91a/action", func(w http.ResponseWriter, r *http.Request) { 228 th.TestMethod(t, r, "POST") 229 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 230 th.TestJSONRequest(t, r, completeRequest) 231 w.WriteHeader(http.StatusNoContent) 232 }) 233 }