postjevsql.git / tests / settings.rs

Settings are checked when they are set, not only when used.

3use support::mock_jev::{MockJev, Reply};
4use support::{jev_instance, noul};
6#[tokio::test(flavor = "multi_thread")]
7async fn jev_model_refuses_aliases_when_set() {
8    let mock = MockJev::start(|_| Reply::json(200, noul(0.5))).await;
9    let (_pg, client) = jev_instance(&mock).await;
10
11    for alias in ["jev-latest", "jev-preview", "jev-stable"] {
12        let err = client
13            .batch_execute(&format!("SET jev.model = '{alias}'"))
14            .await
15            .expect_err("an alias is refused");
16        let db = err.as_db_error().expect("an ERROR");
17        assert_eq!(db.code(), &tokio_postgres::error::SqlState::INVALID_PARAMETER_VALUE, "{alias}");
18        assert!(db.message().contains("jev.model"), "{}", db.message());
19        assert!(db.detail().unwrap_or_default().contains(alias), "{:?}", db.detail());
20    }
21    client.batch_execute("SET jev.model = 'jev-1.14.0'").await.expect("a versioned id is accepted");
22    let shown: String = client.query_one("SHOW jev.model", &[]).await.unwrap().get(0);
23    assert_eq!(shown, "jev-1.14.0");
24}