MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / test_http_options_param

Function test_http_options_param

src/environmentd/tests/server.rs:2207–2277  ·  view source on GitHub ↗

too slow

()

Source from the content-addressed store, hash-verified

2205#[mz_ore::test]
2206#[cfg_attr(miri, ignore)] // too slow
2207fn test_http_options_param() {
2208 let server = test_util::TestHarness::default().start_blocking();
2209
2210 #[derive(Debug, Serialize)]
2211 struct Params {
2212 options: String,
2213 }
2214
2215 let make_request = |params| {
2216 let http_url = Url::parse(&format!(
2217 "http://{}/api/sql?{}",
2218 server.http_local_addr(),
2219 params
2220 ))
2221 .unwrap();
2222
2223 let json = r#"{ "query": "SHOW application_name;" }"#;
2224 let json: serde_json::Value = serde_json::from_str(json).unwrap();
2225 Client::new().post(http_url).json(&json).send().unwrap()
2226 };
2227
2228 //
2229 // Happy path, valid and correctly formatted options dictionary.
2230 //
2231 let options = BTreeMap::from([("application_name", "yet_another_client")]);
2232 let options = serde_json::to_string(&options).unwrap();
2233 let params = serde_urlencoded::to_string(Params { options }).unwrap();
2234
2235 let resp = make_request(params);
2236 assert!(resp.status().is_success());
2237
2238 let mut result: HttpResponse<HttpRows> = resp.json().unwrap();
2239 assert_eq!(result.results.len(), 1);
2240
2241 let mut rows = result.results.pop().unwrap();
2242 assert!(rows.notices.is_empty());
2243
2244 let row = rows.rows.pop().unwrap().pop().unwrap();
2245 let col = rows.desc.columns.pop().unwrap().name;
2246
2247 assert_eq!(col, "application_name");
2248 assert_eq!(row, "yet_another_client");
2249
2250 //
2251 // Malformed options dictionary.
2252 //
2253 let params = "options=not_a_urlencoded_json_object".to_string();
2254 let resp = make_request(params);
2255 assert_eq!(resp.status(), StatusCode::BAD_REQUEST);
2256
2257 //
2258 // Correctly formed options dictionary, but invalid param.
2259 //
2260 let options = BTreeMap::from([("not_a_session_var", "hmmmm")]);
2261 let options = serde_json::to_string(&options).unwrap();
2262 let params = serde_urlencoded::to_string(Params { options }).unwrap();
2263
2264 let resp = make_request(params);

Callers

nothing calls this directly

Calls 8

to_stringFunction · 0.85
start_blockingMethod · 0.80
unwrapMethod · 0.80
parseFunction · 0.50
sendMethod · 0.45
jsonMethod · 0.45
popMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected