@@ -562,4 +562,47 @@ def test_move_id_with_nested_doc
562562 end
563563 end
564564
565+ def test_invalid_key_names
566+ assert @encoder . serialize ( { "hello" => "world" } , true )
567+ assert @encoder . serialize ( { "hello" => { "hello" => "world" } } , true )
568+
569+ assert @encoder . serialize ( { "he$llo" => "world" } , true )
570+ assert @encoder . serialize ( { "hello" => { "hell$o" => "world" } } , true )
571+
572+ assert_raise BSON ::InvalidDocument do
573+ @encoder . serialize ( { "he\0 llo" => "world" } , true )
574+ end
575+
576+ assert_raise_error BSON ::InvalidKeyName , "$hello" do
577+ @encoder . serialize ( { "$hello" => "world" } , true )
578+ end
579+
580+ assert_raise BSON ::InvalidKeyName do
581+ @encoder . serialize ( { "hello" => { "$hello" => "world" } } , true )
582+ end
583+
584+ assert_raise_error BSON ::InvalidKeyName , ".hello" do
585+ @encoder . serialize ( { ".hello" => "world" } , true )
586+ end
587+
588+ assert_raise BSON ::InvalidKeyName do
589+ @encoder . serialize ( { "hello" => { ".hello" => "world" } } , true )
590+ end
591+
592+ assert_raise BSON ::InvalidKeyName do
593+ @encoder . serialize ( { "hello." => "world" } , true )
594+ end
595+
596+ assert_raise BSON ::InvalidKeyName do
597+ @encoder . serialize ( { "hello" => { "hello." => "world" } } , true )
598+ end
599+
600+ assert_raise BSON ::InvalidKeyName do
601+ @encoder . serialize ( { "hel.lo" => "world" } , true )
602+ end
603+
604+ assert_raise BSON ::InvalidKeyName do
605+ @encoder . serialize ( { "hello" => { "hel.lo" => "world" } } , true )
606+ end
607+ end
565608end
0 commit comments