oauth2_broker/auth/token/
secret.rs1use crate::_prelude::*;
5
6#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct TokenSecret(String);
9impl TokenSecret {
10 pub fn new(value: impl Into<String>) -> Self {
12 Self(value.into())
13 }
14
15 pub fn expose(&self) -> &str {
17 &self.0
18 }
19}
20impl AsRef<str> for TokenSecret {
21 fn as_ref(&self) -> &str {
22 self.expose()
23 }
24}
25impl Debug for TokenSecret {
26 fn fmt(&self, f: &mut Formatter) -> FmtResult {
27 f.debug_tuple("TokenSecret").field(&"<redacted>").finish()
28 }
29}
30impl Display for TokenSecret {
31 fn fmt(&self, f: &mut Formatter) -> FmtResult {
32 f.write_str("<redacted>")
33 }
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
40
41 #[test]
42 fn secret_formatters_redact() {
43 let secret = TokenSecret::new("super-secret");
44
45 assert_eq!(format!("{secret:?}"), "TokenSecret(\"<redacted>\")");
46 assert_eq!(format!("{secret}"), "<redacted>");
47 }
48}