Skip to content

Commit 626669a

Browse files
file/item: Add more tests
1 parent 157efd9 commit 626669a

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

client/src/file/item.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,89 @@ impl TryFrom<&[u8]> for Item {
195195
mod tests {
196196
use super::*;
197197

198+
#[tokio::test]
199+
async fn test_item_set_label() {
200+
let attributes = std::collections::HashMap::from([("service".to_string(), "test-service")]);
201+
let mut item = Item::new("Original Label", &attributes, Secret::text("secret"));
202+
203+
let original_modified = item.modified();
204+
tokio::time::sleep(Duration::from_secs(1)).await;
205+
206+
item.set_label("New Label");
207+
208+
assert_eq!(item.label(), "New Label");
209+
assert!(item.modified() > original_modified);
210+
assert_eq!(item.secret().as_bytes(), b"secret");
211+
assert_eq!(item.attributes().get("service").unwrap(), "test-service");
212+
}
213+
214+
#[tokio::test]
215+
async fn test_item_set_secret_text() {
216+
let attributes = std::collections::HashMap::from([("service".to_string(), "test-service")]);
217+
let mut item = Item::new("Test Item", &attributes, Secret::text("original"));
218+
219+
let original_modified = item.modified();
220+
tokio::time::sleep(Duration::from_secs(1)).await;
221+
222+
item.set_secret(Secret::text("new secret"));
223+
224+
assert_eq!(item.secret().as_bytes(), b"new secret");
225+
assert!(item.modified() > original_modified);
226+
assert_eq!(item.label(), "Test Item");
227+
assert_eq!(item.attributes().get("service").unwrap(), "test-service");
228+
}
229+
230+
#[tokio::test]
231+
async fn test_item_set_secret_blob() {
232+
let attributes = std::collections::HashMap::from([("type".to_string(), "binary")]);
233+
let mut item = Item::new("Binary Item", &attributes, Secret::blob(b"binary data"));
234+
235+
let original_modified = item.modified();
236+
tokio::time::sleep(Duration::from_secs(1)).await;
237+
238+
item.set_secret(Secret::blob(b"new binary data"));
239+
240+
assert_eq!(item.secret().as_bytes(), b"new binary data");
241+
assert!(item.modified() > original_modified);
242+
assert_eq!(item.label(), "Binary Item");
243+
}
244+
245+
#[tokio::test]
246+
async fn test_item_created_timestamp() {
247+
let attributes = std::collections::HashMap::from([("test".to_string(), "timestamp")]);
248+
let item = Item::new("Timestamp Test", &attributes, Secret::text("data"));
249+
250+
let created_time = item.created();
251+
assert!(created_time.as_secs() > 0);
252+
253+
let modified_time = item.modified();
254+
assert_eq!(created_time, modified_time);
255+
}
256+
257+
#[tokio::test]
258+
async fn test_item_modified_timestamp_updates() {
259+
let attributes = std::collections::HashMap::from([("test".to_string(), "modification")]);
260+
let mut item = Item::new("Modification Test", &attributes, Secret::text("data"));
261+
262+
let original_created = item.created();
263+
let original_modified = item.modified();
264+
265+
tokio::time::sleep(Duration::from_secs(1)).await;
266+
267+
item.set_label("Updated Label");
268+
269+
assert_eq!(item.created(), original_created);
270+
assert!(item.modified() > original_modified);
271+
272+
let mid_modified = item.modified();
273+
tokio::time::sleep(Duration::from_secs(1)).await;
274+
275+
item.set_secret(Secret::text("updated secret"));
276+
277+
assert_eq!(item.created(), original_created);
278+
assert!(item.modified() > mid_modified);
279+
}
280+
198281
#[test]
199282
fn test_file_item_serialization() {
200283
let key = Key::new(vec![

0 commit comments

Comments
 (0)