Fix certificate list links to detail route
This commit is contained in:
@@ -234,6 +234,10 @@ pub fn CertificatesPage(vault_id: String) -> View {
|
||||
}
|
||||
}
|
||||
|
||||
fn certificate_href(vault_id: &str, cert_id: &str) -> String {
|
||||
format!("/vaults/{}/certificates/{}", escape(vault_id), escape(cert_id))
|
||||
}
|
||||
|
||||
fn flat_html(rows: &[CertificateSummary], vault_id: &str, selected: &[String]) -> String {
|
||||
if rows.is_empty() {
|
||||
return "<p class=\"empty-state\">No certificates match.</p>".to_string();
|
||||
@@ -242,10 +246,9 @@ fn flat_html(rows: &[CertificateSummary], vault_id: &str, selected: &[String]) -
|
||||
for cert in rows {
|
||||
let (badge_class, badge_label) = status_badge(cert);
|
||||
body.push_str(&format!(
|
||||
"<tr><td>{}</td><td><a href=\"/vaults/{}/{}\">{}</a><div class=\"item-sub\">{}</div></td><td>{}</td><td>{}</td><td class=\"fingerprint\">{}</td><td>{}</td><td><span class=\"badge {}\">{}</span>{}</td><td class=\"fingerprint\">{}</td></tr>",
|
||||
"<tr><td>{}</td><td><a href=\"{}\">{}</a><div class=\"item-sub\">{}</div></td><td>{}</td><td>{}</td><td class=\"fingerprint\">{}</td><td>{}</td><td><span class=\"badge {}\">{}</span>{}</td><td class=\"fingerprint\">{}</td></tr>",
|
||||
checkbox(cert, selected),
|
||||
escape(vault_id),
|
||||
escape(&cert.id),
|
||||
certificate_href(vault_id, &cert.id),
|
||||
escape(&cert.name),
|
||||
escape(&cert.subject),
|
||||
escape(&cert.issuer_name),
|
||||
@@ -303,10 +306,9 @@ fn node_html(
|
||||
format!("issuer: {}", cert.issuer_name)
|
||||
};
|
||||
let mut row = format!(
|
||||
"<div class=\"cert-row\">{}<a class=\"item-name\" href=\"/vaults/{}/{}\">{}</a>{} <span class=\"badge {}\">{}</span><span class=\"item-sub\">{}</span><span class=\"item-sub\">expires {}</span><span class=\"item-sub fingerprint\">{}</span></div>",
|
||||
"<div class=\"cert-row\">{}<a class=\"item-name\" href=\"{}\">{}</a>{} <span class=\"badge {}\">{}</span><span class=\"item-sub\">{}</span><span class=\"item-sub\">expires {}</span><span class=\"item-sub fingerprint\">{}</span></div>",
|
||||
checkbox(cert, selected),
|
||||
escape(vault_id),
|
||||
escape(&cert.id),
|
||||
certificate_href(vault_id, &cert.id),
|
||||
escape(&cert.name),
|
||||
if cert.is_ca { " <span class=\"badge badge-ca\">CA</span>" } else { "" },
|
||||
badge_class,
|
||||
@@ -371,3 +373,29 @@ fn escape(value: &str) -> String {
|
||||
.replace('>', ">")
|
||||
.replace('"', """)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn cert(id: &str, name: &str) -> CertificateSummary {
|
||||
CertificateSummary {
|
||||
id: id.to_string(),
|
||||
name: name.to_string(),
|
||||
..CertificateSummary::default()
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn certificate_links_point_at_the_detail_route() {
|
||||
let cert = cert("cert-1", "Leaf");
|
||||
|
||||
let flat = flat_html(std::slice::from_ref(&cert), "vault-1", &[]);
|
||||
assert!(flat.contains("href=\"/vaults/vault-1/certificates/cert-1\""));
|
||||
assert!(!flat.contains("href=\"/vaults/vault-1/cert-1\""));
|
||||
|
||||
let tree = tree_html(std::slice::from_ref(&cert), "vault-1", &[]);
|
||||
assert!(tree.contains("href=\"/vaults/vault-1/certificates/cert-1\""));
|
||||
assert!(!tree.contains("href=\"/vaults/vault-1/cert-1\""));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user