auth_cloudflare/
schema.rs1use serde::Serialize;
10
11pub const CATALOG_SCHEMA_VERSION: u32 = 1;
16
17pub const PROTOCOL_VERSION: u32 = 1;
19
20#[derive(Debug, Clone, Serialize)]
22pub struct VersionInfo {
23 pub name: &'static str,
25 pub package_version: &'static str,
27 pub protocol_version: u32,
29 pub catalog_schema_versions: &'static [u32],
31 pub minimum_hermes_plugin_version: &'static str,
33}
34
35impl VersionInfo {
36 pub fn current() -> Self {
39 Self {
40 name: "auth-cloudflare",
41 package_version: crate::VERSION,
42 protocol_version: PROTOCOL_VERSION,
43 catalog_schema_versions: &[CATALOG_SCHEMA_VERSION],
44 minimum_hermes_plugin_version: "0.0.1",
45 }
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn version_info_current_matches_contract() {
55 let info = VersionInfo::current();
56 assert_eq!(info.name, "auth-cloudflare");
57 assert_eq!(info.package_version, crate::VERSION);
58 assert_eq!(info.protocol_version, 1);
59 assert_eq!(info.catalog_schema_versions, &[1]);
60 assert_eq!(info.minimum_hermes_plugin_version, "0.0.1");
61 }
62
63 #[test]
64 fn version_info_serializes_to_feedback_06_shape() {
65 let value = serde_json::to_value(VersionInfo::current()).expect("serialize");
66 let object = value.as_object().expect("object");
67 assert_eq!(
70 object.keys().cloned().collect::<std::collections::BTreeSet<_>>(),
71 [
72 "name",
73 "package_version",
74 "protocol_version",
75 "catalog_schema_versions",
76 "minimum_hermes_plugin_version",
77 ]
78 .into_iter()
79 .map(String::from)
80 .collect()
81 );
82 assert_eq!(value["name"], "auth-cloudflare");
83 assert_eq!(value["package_version"], crate::VERSION);
84 assert_eq!(value["protocol_version"], 1);
85 assert_eq!(value["catalog_schema_versions"], serde_json::json!([1]));
86 assert_eq!(value["minimum_hermes_plugin_version"], "0.0.1");
87 }
88}