1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
use xtax_blob_storage::validate_blob_key; #[test] fn empty_key_is_rejected() { assert!(validate_blob_key("").is_err()); } #[test] fn leading_slash_is_rejected() { assert!(validate_blob_key("/etc/passwd").is_err()); } #[test] fn dotdot_is_rejected() { assert!(validate_blob_key("../../etc/passwd").is_err()); } #[test] fn dot_is_rejected() { assert!(validate_blob_key("./foo").is_err()); } #[test] fn dotdot_inside_is_rejected() { assert!(validate_blob_key("a/../../x").is_err()); } #[test] fn dot_inside_is_rejected() { assert!(validate_blob_key("a/./x").is_err()); } #[test] fn normal_single_component_is_ok() { assert!(validate_blob_key("hello.txt").is_ok()); } #[test] fn nested_key_is_ok() { assert!(validate_blob_key("a/b/c.txt").is_ok()); } #[test] fn trailing_slash_is_rejected() { assert!(validate_blob_key("foo/").is_err()); } #[test] fn backslash_is_rejected() { assert!(validate_blob_key("a\\b.txt").is_err()); } #[test] fn empty_component_is_rejected() { assert!(validate_blob_key("a//b.txt").is_err()); } #[test] fn key_with_only_dots_is_ok() { assert!(validate_blob_key("...").is_ok()); assert!(validate_blob_key("..a").is_ok()); assert!(validate_blob_key("a..").is_ok()); }