github.com/gophercloud/gophercloud@v1.11.0/openstack/identity/v3/policies/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/gophercloud/gophercloud/openstack/identity/v3/policies" 9 th "github.com/gophercloud/gophercloud/testhelper" 10 fake "github.com/gophercloud/gophercloud/testhelper/client" 11 ) 12 13 // ListOutput provides a single page of Policy results. 14 const ListOutput = ` 15 { 16 "links": { 17 "next": null, 18 "previous": null, 19 "self": "http://example.com/identity/v3/policies" 20 }, 21 "policies": [ 22 { 23 "type": "text/plain", 24 "id": "2844b2a08be147a08ef58317d6471f1f", 25 "links": { 26 "self": "http://example.com/identity/v3/policies/2844b2a08be147a08ef58317d6471f1f" 27 }, 28 "blob": "'foo_user': 'role:compute-user'" 29 }, 30 { 31 "type": "application/json", 32 "id": "b49884da9d31494ea02aff38d4b4e701", 33 "links": { 34 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701" 35 }, 36 "blob": "{'bar_user': 'role:network-user'}", 37 "description": "policy for bar_user" 38 } 39 ] 40 } 41 ` 42 43 // ListWithFilterOutput provides a single page of filtered Policy results. 44 const ListWithFilterOutput = ` 45 { 46 "links": { 47 "next": null, 48 "previous": null, 49 "self": "http://example.com/identity/v3/policies" 50 }, 51 "policies": [ 52 { 53 "type": "application/json", 54 "id": "b49884da9d31494ea02aff38d4b4e701", 55 "links": { 56 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701" 57 }, 58 "blob": "{'bar_user': 'role:network-user'}", 59 "description": "policy for bar_user" 60 } 61 ] 62 } 63 ` 64 65 // GetOutput provides a Get result. 66 const GetOutput = ` 67 { 68 "policy": { 69 "type": "application/json", 70 "id": "b49884da9d31494ea02aff38d4b4e701", 71 "links": { 72 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701" 73 }, 74 "blob": "{'bar_user': 'role:network-user'}", 75 "description": "policy for bar_user" 76 } 77 } 78 ` 79 80 // CreateRequest provides the input to a Create request. 81 const CreateRequest = ` 82 { 83 "policy": { 84 "blob": "{'bar_user': 'role:network-user'}", 85 "description": "policy for bar_user", 86 "type": "application/json" 87 } 88 } 89 ` 90 91 // UpdateRequest provides the input to as Update request. 92 const UpdateRequest = ` 93 { 94 "policy": { 95 "description": "updated policy for bar_user" 96 } 97 } 98 ` 99 100 // UpdateOutput provides an update result. 101 const UpdateOutput = ` 102 { 103 "policy": { 104 "type": "application/json", 105 "id": "b49884da9d31494ea02aff38d4b4e701", 106 "links": { 107 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701" 108 }, 109 "blob": "{'bar_user': 'role:network-user'}", 110 "description": "updated policy for bar_user" 111 } 112 } 113 ` 114 115 // FirstPolicy is the first policy in the List request. 116 var FirstPolicy = policies.Policy{ 117 ID: "2844b2a08be147a08ef58317d6471f1f", 118 Blob: "'foo_user': 'role:compute-user'", 119 Type: "text/plain", 120 Links: map[string]interface{}{ 121 "self": "http://example.com/identity/v3/policies/2844b2a08be147a08ef58317d6471f1f", 122 }, 123 Extra: map[string]interface{}{}, 124 } 125 126 // SecondPolicy is the second policy in the List request. 127 var SecondPolicy = policies.Policy{ 128 ID: "b49884da9d31494ea02aff38d4b4e701", 129 Blob: "{'bar_user': 'role:network-user'}", 130 Type: "application/json", 131 Links: map[string]interface{}{ 132 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701", 133 }, 134 Extra: map[string]interface{}{ 135 "description": "policy for bar_user", 136 }, 137 } 138 139 // SecondPolicyUpdated is the policy in the Update request. 140 var SecondPolicyUpdated = policies.Policy{ 141 ID: "b49884da9d31494ea02aff38d4b4e701", 142 Blob: "{'bar_user': 'role:network-user'}", 143 Type: "application/json", 144 Links: map[string]interface{}{ 145 "self": "http://example.com/identity/v3/policies/b49884da9d31494ea02aff38d4b4e701", 146 }, 147 Extra: map[string]interface{}{ 148 "description": "updated policy for bar_user", 149 }, 150 } 151 152 // ExpectedPoliciesSlice is the slice of policies expected to be returned from ListOutput. 153 var ExpectedPoliciesSlice = []policies.Policy{FirstPolicy, SecondPolicy} 154 155 // HandleListPoliciesSuccessfully creates an HTTP handler at `/policies` on the 156 // test handler mux that responds with a list of two policies. 157 func HandleListPoliciesSuccessfully(t *testing.T) { 158 th.Mux.HandleFunc("/policies", func(w http.ResponseWriter, r *http.Request) { 159 th.TestMethod(t, r, "GET") 160 th.TestHeader(t, r, "Accept", "application/json") 161 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 162 163 w.Header().Set("Content-Type", "application/json") 164 w.WriteHeader(http.StatusOK) 165 switch r.URL.Query().Get("type") { 166 case "": 167 fmt.Fprintf(w, ListOutput) 168 case "application/json": 169 fmt.Fprintf(w, ListWithFilterOutput) 170 default: 171 w.WriteHeader(http.StatusBadRequest) 172 } 173 }) 174 } 175 176 // HandleCreatePolicySuccessfully creates an HTTP handler at `/policies` on the 177 // test handler mux that tests policy creation. 178 func HandleCreatePolicySuccessfully(t *testing.T) { 179 th.Mux.HandleFunc("/policies", func(w http.ResponseWriter, r *http.Request) { 180 th.TestMethod(t, r, "POST") 181 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 182 th.TestJSONRequest(t, r, CreateRequest) 183 184 w.WriteHeader(http.StatusCreated) 185 fmt.Fprintf(w, GetOutput) 186 }) 187 } 188 189 // HandleGetPolicySuccessfully creates an HTTP handler at `/policies` on the 190 // test handler mux that responds with a single policy. 191 func HandleGetPolicySuccessfully(t *testing.T) { 192 th.Mux.HandleFunc("/policies/b49884da9d31494ea02aff38d4b4e701", 193 func(w http.ResponseWriter, r *http.Request) { 194 th.TestMethod(t, r, "GET") 195 th.TestHeader(t, r, "Accept", "application/json") 196 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 197 198 w.Header().Set("Content-Type", "application/json") 199 w.WriteHeader(http.StatusOK) 200 fmt.Fprintf(w, GetOutput) 201 }, 202 ) 203 } 204 205 // HandleUpdatePolicySuccessfully creates an HTTP handler at `/policies` on the 206 // test handler mux that tests role update. 207 func HandleUpdatePolicySuccessfully(t *testing.T) { 208 th.Mux.HandleFunc("/policies/b49884da9d31494ea02aff38d4b4e701", 209 func(w http.ResponseWriter, r *http.Request) { 210 th.TestMethod(t, r, "PATCH") 211 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 212 th.TestJSONRequest(t, r, UpdateRequest) 213 214 w.WriteHeader(http.StatusOK) 215 fmt.Fprintf(w, UpdateOutput) 216 }, 217 ) 218 } 219 220 // HandleDeletePolicySuccessfully creates an HTTP handler at `/policies` on the 221 // test handler mux that tests policy deletion. 222 func HandleDeletePolicySuccessfully(t *testing.T) { 223 th.Mux.HandleFunc("/policies/9fe1d3", func(w http.ResponseWriter, r *http.Request) { 224 th.TestMethod(t, r, "DELETE") 225 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 226 227 w.WriteHeader(http.StatusNoContent) 228 }) 229 }