it seems to be working now

This commit is contained in:
Robin Appelman 2025-10-31 01:46:47 +01:00
commit b4cf0acb44
11 changed files with 398 additions and 64 deletions

View file

@ -86,7 +86,7 @@ impl<'de> Deserialize<'de> for ForwardDestination {
#[test]
fn test_de() {
use serde_test::{Token, assert_de_tokens, assert_de_tokens_error};
use serde_test::{assert_de_tokens, assert_de_tokens_error, Token};
let addr_str = "127.0.0.1:80";
let addr = SocketAddr::from_str("127.0.0.1:80").unwrap();

View file

@ -1,7 +1,7 @@
use serde::de::{Error, Unexpected, Visitor};
use serde::{Deserialize, Deserializer};
use std::fmt::{Display, Formatter};
use std::path::Path;
use serde::{Deserialize, Deserializer};
use serde::de::{Error, Unexpected, Visitor};
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub struct NamespaceName(String);
@ -41,8 +41,7 @@ impl<'de> Deserialize<'de> for NamespaceName {
type Value = NamespaceName;
fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
formatter
.write_str("A valid namespace name")
formatter.write_str("A valid namespace name")
}
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
@ -57,7 +56,7 @@ impl<'de> Deserialize<'de> for NamespaceName {
fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
where
E: Error
E: Error,
{
if !validate_name(&v) {
return Err(E::invalid_value(Unexpected::Str(&v), &self));
@ -75,17 +74,18 @@ fn validate_name(name: &str) -> bool {
if name.is_empty() {
return false;
}
name.bytes().all(|b| b.is_ascii_alphanumeric() || [b'_', b'.', b'-'].contains(&b))
name.bytes()
.all(|b| b.is_ascii_alphanumeric() || [b'_', b'.', b'-'].contains(&b))
}
#[test]
fn test_de() {
use serde_test::{Token, assert_de_tokens, assert_de_tokens_error};
use serde_test::{assert_de_tokens, assert_de_tokens_error, Token};
assert_de_tokens(&NamespaceName("foo".into()), &[Token::String("foo")]);
assert_de_tokens_error::<NamespaceName>(
&[Token::String("foo/bar")],
"invalid value: integer `-80`, expected Either a port as integer, or a string containing a socket address",
"invalid value: string \"foo/bar\", expected A valid namespace name",
);
}

View file

@ -97,7 +97,7 @@ impl<'de> Deserialize<'de> for ForwardSource {
#[test]
fn test_de() {
use serde_test::{Token, assert_de_tokens, assert_de_tokens_error};
use serde_test::{assert_de_tokens, assert_de_tokens_error, Token};
let addr_str = "127.0.0.1:80";
let addr = SocketAddr::from_str("127.0.0.1:80").unwrap();