modkit_auth/oauth2/
error.rs1use thiserror::Error;
2
3#[derive(Debug, Error)]
8#[non_exhaustive]
9pub enum TokenError {
10 #[error("{0}")]
16 Http(String),
17
18 #[error("invalid token response: {0}")]
20 InvalidResponse(String),
21
22 #[error("unsupported token type: {0}")]
24 UnsupportedTokenType(String),
25
26 #[error("OAuth2 config error: {0}")]
29 ConfigError(String),
30
31 #[error("token unavailable: {0}")]
33 Unavailable(String),
34}
35
36#[cfg(test)]
37#[cfg_attr(coverage_nightly, coverage(off))]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn config_error_renders() {
43 let e = TokenError::ConfigError("both endpoints set".into());
44 assert_eq!(e.to_string(), "OAuth2 config error: both endpoints set");
45 }
46
47 #[test]
48 fn http_error_renders() {
49 let e = TokenError::Http("OAuth2 token HTTP 401 Unauthorized".into());
50 assert_eq!(e.to_string(), "OAuth2 token HTTP 401 Unauthorized");
51 }
52
53 #[test]
54 fn invalid_response_renders() {
55 let e = TokenError::InvalidResponse("missing access_token".into());
56 assert_eq!(
57 e.to_string(),
58 "invalid token response: missing access_token"
59 );
60 }
61
62 #[test]
63 fn unsupported_token_type_renders() {
64 let e = TokenError::UnsupportedTokenType("mac".into());
65 assert_eq!(e.to_string(), "unsupported token type: mac");
66 }
67
68 #[test]
69 fn unavailable_renders() {
70 let e = TokenError::Unavailable("watcher shut down".into());
71 assert_eq!(e.to_string(), "token unavailable: watcher shut down");
72 }
73}