#![allow(clippy::unwrap_used)]
use polyc_crypto::hex;
use polyc_query_model::statements::{
COMPOSITE_TRACE_ADDRESSES_SQL, COMPOSITE_TRACE_MEMORY_SQL, COMPOSITE_TRACE_ROUTINES_SQL,
COMPOSITE_TRACE_SQL, DASHBOARD_ATTRIBUTION_SQL, DASHBOARD_CONTEXT_SQL,
DASHBOARD_CONVERSATIONS_SQL, DASHBOARD_SPEND_SQL, FLEET_USAGE_SQL,
PERSONA_DIRECTORY_DETAIL_SQL, PERSONA_DIRECTORY_INDEX_SQL, ROUTINE_FIRE_COUNT_SQL,
ROUTINE_FIRE_LAST_SQL, ROUTINE_FIRE_OUTCOME_SQL, ROUTINE_FIRE_SQL,
ROUTINE_FIRES_INDEX_ADMIN_SQL, ROUTINE_FIRES_INDEX_OWNER_SQL, ROUTINE_FIRES_SQL,
ROUTINE_LIFECYCLE_SQL, ROUTINE_OVERVIEW_SQL, ROUTINE_OWNER_ACTIVE_GRANTS_SQL,
ROUTINE_OWNER_APPROVAL_AGGREGATES_SQL, ROUTINE_OWNER_FIRE_DISPATCH_SQL,
ROUTINE_OWNER_REFUSALS_SQL, ROUTINE_OWNER_STOPPED_TOOL_SQL,
};
use sha2::Digest as _;
const STATEMENTS: &[(&str, &str, &str, &str)] = &[
(
"COMPOSITE_TRACE_SQL",
"composite_trace.sql",
COMPOSITE_TRACE_SQL,
"29b36afd4eb9e320342c59ffff29314ad290a76b46f31172c65eb7be46e807b1",
),
(
"COMPOSITE_TRACE_ADDRESSES_SQL",
"composite_trace_addresses.sql",
COMPOSITE_TRACE_ADDRESSES_SQL,
"9c265b91f63663520a1c3869b4aab85ec6286cc4aef7e59835c7e0c3761bb5b6",
),
(
"COMPOSITE_TRACE_MEMORY_SQL",
"composite_trace_memory.sql",
COMPOSITE_TRACE_MEMORY_SQL,
"397c64e0b1d13bd7ff90524a45eea45fc2987aa27c513e72b268ddccac88634f",
),
(
"COMPOSITE_TRACE_ROUTINES_SQL",
"composite_trace_routines.sql",
COMPOSITE_TRACE_ROUTINES_SQL,
"7fa5946634f6ac9e9b885dbfbd20ef617f377f2978b0342e3f425ba05428af86",
),
(
"DASHBOARD_ATTRIBUTION_SQL",
"dashboard_attribution.sql",
DASHBOARD_ATTRIBUTION_SQL,
"cd28dd408049d7018904eb1a4b9f07e025c1492c6dfd4bd9d7572e3a3ec764c5",
),
(
"DASHBOARD_CONTEXT_SQL",
"dashboard_context.sql",
DASHBOARD_CONTEXT_SQL,
"7ec5a1a387d903d5f3e0b2d8a638c9129424f2f6b49ca9fc00c4814f1f3c62c7",
),
(
"DASHBOARD_CONVERSATIONS_SQL",
"dashboard_conversations.sql",
DASHBOARD_CONVERSATIONS_SQL,
"857be27b63d3abe72a21a03d58b8ba726715d2c8ce73f69c1361a458b95f9657",
),
(
"DASHBOARD_SPEND_SQL",
"dashboard_spend.sql",
DASHBOARD_SPEND_SQL,
"3e444c45d3c3f41756ce6ca1a8faca46491ae957413cc777d8df95cfe5381da1",
),
(
"FLEET_USAGE_SQL",
"fleet_usage.sql",
FLEET_USAGE_SQL,
"31f753937bd8a8a5e8fdcfcd938615fe9bcf05ace8820385b53241b0ccef6906",
),
(
"PERSONA_DIRECTORY_DETAIL_SQL",
"persona_directory_detail.sql",
PERSONA_DIRECTORY_DETAIL_SQL,
"a1f72be407573e9a02d03a27deb50e96d09fe3446fb7292fd956f4a33ff78ca0",
),
(
"PERSONA_DIRECTORY_INDEX_SQL",
"persona_directory_index.sql",
PERSONA_DIRECTORY_INDEX_SQL,
"3159eaced137ab55d7f8e18bd2b84d1f93d873bdec423b2913f1223e5c12bb77",
),
(
"ROUTINE_FIRE_SQL",
"routine_fire.sql",
ROUTINE_FIRE_SQL,
"431016ca7a4e339cd1cd85f8c62a080484d6d5296cd341805a490060856a9508",
),
(
"ROUTINE_FIRE_COUNT_SQL",
"routine_fire_count.sql",
ROUTINE_FIRE_COUNT_SQL,
"f34f89b8520983cc6dfb57b94be1cb6902aa1838f8a21d2dbe28e914872e6f53",
),
(
"ROUTINE_FIRE_LAST_SQL",
"routine_fire_last.sql",
ROUTINE_FIRE_LAST_SQL,
"0b120c1b61fe116941c52d912b95dd6726bf2e43203fdfff2c9b1a110c0958ec",
),
(
"ROUTINE_FIRE_OUTCOME_SQL",
"routine_fire_outcome.sql",
ROUTINE_FIRE_OUTCOME_SQL,
"a8ebacdbcefea9ed374aaf169124584428c0f682d87d2466d4c5fe22c88af106",
),
(
"ROUTINE_FIRES_SQL",
"routine_fires.sql",
ROUTINE_FIRES_SQL,
"dea6359eb1b6f996c8d536fc1c1c2b6650fa0b7575dc4e74776b9998683503c7",
),
(
"ROUTINE_FIRES_INDEX_ADMIN_SQL",
"routine_fires_index_admin.sql",
ROUTINE_FIRES_INDEX_ADMIN_SQL,
"0072a1957e9ae0caa4a1f8d8b4c788619786e127970e40ed5f3592436b641dc0",
),
(
"ROUTINE_FIRES_INDEX_OWNER_SQL",
"routine_fires_index_owner.sql",
ROUTINE_FIRES_INDEX_OWNER_SQL,
"9cd50901840219c874213995864126c0a72950734ef09627872b265c54956640",
),
(
"ROUTINE_LIFECYCLE_SQL",
"routine_lifecycle.sql",
ROUTINE_LIFECYCLE_SQL,
"e2b6bf0cd540a59d56271801394df3e04516db5844401de8db4994daa86d0da9",
),
(
"ROUTINE_OVERVIEW_SQL",
"routine_overview.sql",
ROUTINE_OVERVIEW_SQL,
"d0d6b3377af10ca19917b1c6ba8ecb5c28466ab777d987d10688efd9b74a7c82",
),
(
"ROUTINE_OWNER_ACTIVE_GRANTS_SQL",
"routine_owner_active_grants.sql",
ROUTINE_OWNER_ACTIVE_GRANTS_SQL,
"f5ff0fcc267d46aba60902df40b6d659edfee1055415938c041ae3ac76c6d827",
),
(
"ROUTINE_OWNER_APPROVAL_AGGREGATES_SQL",
"routine_owner_approval_aggregates.sql",
ROUTINE_OWNER_APPROVAL_AGGREGATES_SQL,
"e6ba0c03ff01681923978c917ad7ece8168c51676f49b90e4b4b8df925453b73",
),
(
"ROUTINE_OWNER_FIRE_DISPATCH_SQL",
"routine_owner_fire_dispatch.sql",
ROUTINE_OWNER_FIRE_DISPATCH_SQL,
"1bb3f5ff1a1f92e6a1fb66c234f3f14137fbd7bd5d92ce776753be466157d48b",
),
(
"ROUTINE_OWNER_REFUSALS_SQL",
"routine_owner_refusals.sql",
ROUTINE_OWNER_REFUSALS_SQL,
"b5514b73813941a00e82b7e92b9a2b27147d7c678c7bfdcf1f9c0336ebaa5e69",
),
(
"ROUTINE_OWNER_STOPPED_TOOL_SQL",
"routine_owner_stopped_tool.sql",
ROUTINE_OWNER_STOPPED_TOOL_SQL,
"962cff137ac1538d0a1d1f46d98076f71ac485140275ed786d0ab1cfc2bfb039",
),
];
#[test]
fn every_fixed_statement_matches_its_pinned_digest() {
assert_eq!(
STATEMENTS.len(),
25,
"the registry holds every fixed statement"
);
for &(name, file, text, expected) in STATEMENTS {
let actual = hex::lower(&sha2::Sha256::digest(text.as_bytes()));
assert_eq!(
actual, expected,
"{name} ({file}) changed; a statement digest is a wire change"
);
}
}
#[test]
fn constant_names_follow_the_file_name() {
for &(name, file, _, _) in STATEMENTS {
let stem = name.strip_suffix("_SQL").unwrap();
assert_eq!(
format!("{}.sql", stem.to_lowercase()),
file,
"{name} must embed {file}"
);
}
}