localencrypt/common/
object_key.rs1use crate::SecureStringError;
2
3const DEFAULT_ENVIRONMENT: &str = "LocalEncrypt";
4
5#[derive(Clone, PartialEq, Debug)]
6pub struct ObjectKey {
7 environment: String,
8 tag: String,
9 id: String,
10}
11
12impl ObjectKey {
13 pub fn new(environment: &str, tag: &str, id: &str) -> Result<Self, SecureStringError> {
14 if id.is_empty() {
15 return Err(SecureStringError::InvalidArgument(String::from(
16 "Tag and ID must not be empty",
17 )));
18 }
19
20 Ok(Self {
21 environment: environment.to_string(),
22 tag: tag.to_string(),
23 id: id.to_string(),
24 })
25 }
26
27 pub fn environment(&self) -> String {
28 self.environment.clone()
29 }
30
31 pub fn tag(&self) -> String {
32 self.tag.clone()
33 }
34
35 pub fn id(&self) -> String {
36 self.id.clone()
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use wasm_bindgen_test::*;
43
44 use super::*;
45
46 #[wasm_bindgen_test]
47 fn test_object_key_new() {
48 let object_key = ObjectKey::new("debug", "test", "test_id").unwrap();
49 assert_eq!(object_key.tag(), "test");
50 assert_eq!(object_key.id(), "test_id");
51 }
52
53 #[wasm_bindgen_test]
54 async fn test_invalid_object_key_creation() {
55 let object_key_empty_id = ObjectKey::new("debug", "test_tag", "");
57 assert!(
58 object_key_empty_id.is_err(),
59 "Successfully created ObjectKey with empty id"
60 );
61 }
62
63 #[wasm_bindgen_test]
64 fn test_object_key_new_empty_tag_and_id() {
65 let object_key = ObjectKey::new("debug", "", "");
66 assert!(
67 object_key.is_err(),
68 "Successfully created ObjectKey with empty tag and id"
69 );
70 match object_key {
71 Err(SecureStringError::InvalidArgument(msg)) => {
72 assert_eq!(msg, "Tag and ID must not be empty");
73 }
74 _ => {
75 panic!("Unexpected result from ObjectKey::new with empty tag and id");
76 }
77 }
78 }
79
80 #[wasm_bindgen_test]
81 fn test_object_key_new_error_message() {
82 let object_key = ObjectKey::new("debug", "test", "");
83 assert!(
84 object_key.is_err(),
85 "Successfully created ObjectKey with empty id"
86 );
87 match object_key {
88 Err(SecureStringError::InvalidArgument(msg)) => {
89 assert_eq!(msg, "Tag and ID must not be empty");
90 }
91 _ => {
92 panic!("Unexpected result from ObjectKey::new with empty id");
93 }
94 }
95 }
96}