@@ -394,6 +394,11 @@ impl CliConfiguration for RunCmd {
394394/// Check whether a node name is considered as valid.
395395pub fn is_node_name_valid ( _name : & str ) -> std:: result:: Result < ( ) , & str > {
396396 let name = _name. to_string ( ) ;
397+
398+ if name. is_empty ( ) {
399+ return Err ( "Node name cannot be empty" )
400+ }
401+
397402 if name. chars ( ) . count ( ) >= crate :: NODE_NAME_MAX_LENGTH {
398403 return Err ( "Node name too long" )
399404 }
@@ -404,7 +409,7 @@ pub fn is_node_name_valid(_name: &str) -> std::result::Result<(), &str> {
404409 return Err ( "Node name should not contain invalid chars such as '.' and '@'" )
405410 }
406411
407- let invalid_patterns = r"^https?:\/\/ " ;
412+ let invalid_patterns = r"^https?:" ;
408413 let re = Regex :: new ( invalid_patterns) . unwrap ( ) ;
409414 if re. is_match ( & name) {
410415 return Err ( "Node name should not contain urls" )
@@ -498,15 +503,23 @@ mod tests {
498503
499504 #[ test]
500505 fn tests_node_name_bad ( ) {
506+ assert ! ( is_node_name_valid( "" ) . is_err( ) ) ;
501507 assert ! ( is_node_name_valid(
502508 "very very long names are really not very cool for the ui at all, really they're not"
503509 )
504510 . is_err( ) ) ;
505511 assert ! ( is_node_name_valid( "Dots.not.Ok" ) . is_err( ) ) ;
506- assert ! ( is_node_name_valid( "http://visit.me" ) . is_err( ) ) ;
507- assert ! ( is_node_name_valid( "https://visit.me" ) . is_err( ) ) ;
512+ // NOTE: the urls below don't include a domain otherwise
513+ // they'd get filtered for including a `.`
514+ assert ! ( is_node_name_valid( "http://visitme" ) . is_err( ) ) ;
515+ assert ! ( is_node_name_valid( "http:/visitme" ) . is_err( ) ) ;
516+ assert ! ( is_node_name_valid( "http:visitme" ) . is_err( ) ) ;
517+ assert ! ( is_node_name_valid( "https://visitme" ) . is_err( ) ) ;
518+ assert ! ( is_node_name_valid( "https:/visitme" ) . is_err( ) ) ;
519+ assert ! ( is_node_name_valid( "https:visitme" ) . is_err( ) ) ;
508520 assert ! ( is_node_name_valid( "www.visit.me" ) . is_err( ) ) ;
509521 assert ! ( is_node_name_valid( "www.visit" ) . is_err( ) ) ;
522+ assert ! ( is_node_name_valid( "hello\\ world" ) . is_err( ) ) ;
510523 assert ! ( is_node_name_valid( "visit.www" ) . is_err( ) ) ;
511524 assert ! ( is_node_name_valid( "email@domain" ) . is_err( ) ) ;
512525 }
0 commit comments