scratchstack_aspen/
error.rs1use std::{
2 error::Error,
3 fmt::{Display, Formatter, Result as FmtResult},
4};
5
6#[derive(Debug, Eq, PartialEq)]
8pub enum AspenError {
9 InvalidAction(String),
11
12 InvalidConditionOperator(String),
14
15 InvalidPolicyVersion(String),
17
18 InvalidPrincipal(String),
20
21 InvalidResource(String),
23
24 InvalidSubstitution(String),
26}
27
28impl Display for AspenError {
29 fn fmt(&self, f: &mut Formatter) -> FmtResult {
30 match self {
31 Self::InvalidAction(action) => write!(f, "Invalid action: {action}"),
32 Self::InvalidConditionOperator(operator) => write!(f, "Invalid condition operator: {operator}"),
33 Self::InvalidPolicyVersion(version) => write!(f, "Invalid policy version: {version}"),
34 Self::InvalidPrincipal(principal) => write!(f, "Invalid principal: {principal}"),
35 Self::InvalidResource(resource) => write!(f, "Invalid resource: {resource}"),
36 Self::InvalidSubstitution(element) => write!(f, "Invalid variable substitution: {element}"),
37 }
38 }
39}
40
41impl Error for AspenError {}
42
43#[cfg(test)]
44mod tests {
45 use {
46 crate::AspenError,
47 pretty_assertions::{assert_eq, assert_ne},
48 };
49
50 #[test_log::test]
51 fn test_display() {
52 let _ = format!("{:?}", AspenError::InvalidAction("foo".to_string()));
53 assert_eq!(AspenError::InvalidAction("foo".to_string()).to_string(), "Invalid action: foo");
54
55 let _ = format!("{:?}", AspenError::InvalidPrincipal("foo".to_string()));
56 assert_eq!(AspenError::InvalidPrincipal("foo".to_string()).to_string(), "Invalid principal: foo");
57
58 let _ = format!("{:?}", AspenError::InvalidResource("foo".to_string()));
59 assert_eq!(AspenError::InvalidResource("foo".to_string()).to_string(), "Invalid resource: foo");
60 }
61
62 #[test_log::test]
63 fn test_eq() {
64 let e1a = AspenError::InvalidAction("foo".to_string());
65 let e1b = AspenError::InvalidAction("foo".to_string());
66 let e2a = AspenError::InvalidPrincipal("foo".to_string());
67 let e2b = AspenError::InvalidPrincipal("foo".to_string());
68 let e3a = AspenError::InvalidResource("foo".to_string());
69 let e3b = AspenError::InvalidResource("foo".to_string());
70 let e4 = AspenError::InvalidAction("bar".to_string());
71 let e5 = AspenError::InvalidPrincipal("bar".to_string());
72 let e6 = AspenError::InvalidResource("bar".to_string());
73
74 assert_eq!(e1a, e1b);
75 assert_eq!(e2a, e2b);
76 assert_eq!(e3a, e3b);
77 assert_ne!(e1a, e2a);
78 assert_ne!(e1a, e3a);
79 assert_ne!(e1a, e4);
80 assert_ne!(e1a, e5);
81 assert_ne!(e1a, e6);
82 assert_ne!(e2a, e3a);
83 assert_ne!(e2a, e4);
84 assert_ne!(e2a, e5);
85 assert_ne!(e2a, e6);
86 assert_ne!(e3a, e4);
87 assert_ne!(e3a, e5);
88 assert_ne!(e3a, e6);
89 }
90}