tests.rs (3642B)
1 use crate::Config; 2 #[expect(clippy::unwrap_used, reason = "OK in tests")] 3 #[test] 4 fn missing_fields() { 5 drop(toml::from_str::<Config>("").unwrap_err()); 6 drop(toml::from_str::<Config>("timeout=15").unwrap_err()); 7 drop(toml::from_str::<Config>(r#"rpz="/foo""#).unwrap_err()); 8 drop(toml::from_str::<Config>(r#"local_dir="/foo/""#).unwrap()); 9 drop(toml::from_str::<Config>(r#"adblock=["https://foo.com/foo"]"#).unwrap()); 10 } 11 #[expect(clippy::unwrap_used, reason = "OK in tests")] 12 #[test] 13 fn invalid_fields() { 14 drop(toml::from_str::<Config>("bob=15").unwrap_err()); 15 drop(toml::from_str::<Config>(r#"foo=["https://foo.com/foo"]"#).unwrap_err()); 16 } 17 #[expect(clippy::unwrap_used, reason = "OK in tests")] 18 #[test] 19 fn timeout() { 20 drop(toml::from_str::<Config>(r#"local_dir="/foo/""#).unwrap()); 21 drop( 22 toml::from_str::<Config>( 23 r#"timeout=15 24 local_dir="/foo/""#, 25 ) 26 .unwrap(), 27 ); 28 drop( 29 toml::from_str::<Config>( 30 r#"timeout=4294967295 31 local_dir="/foo/""#, 32 ) 33 .unwrap(), 34 ); 35 drop( 36 toml::from_str::<Config>( 37 r#"timeout=-1 38 local_dir="/foo/""#, 39 ) 40 .unwrap_err(), 41 ); 42 drop( 43 toml::from_str::<Config>( 44 r#"timeout=0 45 local_dir="/foo/""#, 46 ) 47 .unwrap(), 48 ); 49 drop( 50 toml::from_str::<Config>( 51 r#"timeout=4294967296 52 local_dir="/foo/""#, 53 ) 54 .unwrap_err(), 55 ); 56 } 57 #[expect(clippy::unwrap_used, reason = "OK in tests")] 58 #[test] 59 fn arrays() { 60 drop( 61 toml::from_str::<Config>(r#"adblock=["https://foo.com/foo","https://foo.com/foo"]"#) 62 .unwrap_err(), 63 ); 64 drop(toml::from_str::<Config>(r#"adblock=["https://foo.com/foo"]"#).unwrap()); 65 drop( 66 toml::from_str::<Config>( 67 r#"adblock=["https://foo.com/foo"] 68 domain=["https://foo.com/foo"]"#, 69 ) 70 .unwrap_err(), 71 ); 72 } 73 #[expect(clippy::unwrap_used, reason = "OK in tests")] 74 #[test] 75 fn urls() { 76 drop(toml::from_str::<Config>(r#"adblock=["file://foo.com/foo"]"#).unwrap_err()); 77 drop(toml::from_str::<Config>(r#"adblock=["foo.com/foo"]"#).unwrap_err()); 78 drop(toml::from_str::<Config>(r#"adblock=["http://foo.com/foo"]"#).unwrap()); 79 drop( 80 toml::from_str::<Config>( 81 r#"adblock=[] 82 domain=["https:///foo"]"#, 83 ) 84 .unwrap(), 85 ); 86 drop(toml::from_str::<Config>(r#"adblock=[""]"#).unwrap_err()); 87 drop(toml::from_str::<Config>(r#"adblock=["https://"]"#).unwrap_err()); 88 drop(toml::from_str::<Config>(r#"adblock=["ftp://foo.com/foo"]"#).unwrap_err()); 89 } 90 #[expect(clippy::unwrap_used, reason = "OK in tests")] 91 #[test] 92 fn paths() { 93 drop( 94 toml::from_str::<Config>( 95 r#"rpz="/foo/" 96 wildcard=["https://foo.com/foo"]"#, 97 ) 98 .unwrap_err(), 99 ); 100 drop( 101 toml::from_str::<Config>( 102 r#"rpz="foo" 103 wildcard=["https://foo.com/foo"]"#, 104 ) 105 .unwrap_err(), 106 ); 107 drop( 108 toml::from_str::<Config>( 109 r#"rpz="/foo" 110 wildcard=["https://foo.com/foo"]"#, 111 ) 112 .unwrap(), 113 ); 114 drop(toml::from_str::<Config>(r#"local_dir="foo/""#).unwrap_err()); 115 drop(toml::from_str::<Config>(r#"local_dir="/foo/""#).unwrap()); 116 // Directories are allowed to not have a trailing `/`, but they will get it 117 // added. 118 assert!( 119 toml::from_str::<Config>( 120 r#"local_dir="/foo" 121 wildcard=["https://foo.com/foo"]"# 122 ) 123 .is_ok_and(|config| config 124 .local_dir 125 .is_some_and(|dir| dir.to_str().is_some_and(|val| val == "/foo/"))) 126 ); 127 }