@@ -44,21 +44,32 @@ module OpenC3
4444 expect ( names [ 0 ] ) . to match ( /.*\/ DEFAULT\/ tool_config\/ toolie\/ namely.json.*/ )
4545 end
4646
47- it "rejects path traversal in tool name" do
48- expect { ToolConfigModel . save_config ( '../evil' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
49- expect { ToolConfigModel . save_config ( 'evil/sub' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
50- expect { ToolConfigModel . save_config ( 'evil\\sub' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
51- expect { ToolConfigModel . delete_config ( '../evil' , 'name' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
52- expect { ToolConfigModel . load_config ( '../evil' , 'name' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
53- expect { ToolConfigModel . list_configs ( '../evil' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid tool name/ )
47+ it "allows valid tool and config names" do
48+ ToolConfigModel . save_config ( 'my-tool' , 'My Config 1.0' , '{}' , local_mode : false , scope : 'DEFAULT' )
49+ config = ToolConfigModel . load_config ( 'my-tool' , 'My Config 1.0' , scope : 'DEFAULT' )
50+ expect ( config ) . to eq ( '{}' )
5451 end
5552
56- it "rejects path traversal in config name" do
57- expect { ToolConfigModel . save_config ( 'tool' , '../../etc/passwd' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid config name/ )
58- expect { ToolConfigModel . save_config ( 'tool' , 'sub/dir' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid config name/ )
59- expect { ToolConfigModel . save_config ( 'tool' , 'sub\\dir' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid config name/ )
60- expect { ToolConfigModel . delete_config ( 'tool' , '../evil' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid config name/ )
61- expect { ToolConfigModel . load_config ( 'tool' , '../evil' , scope : 'DEFAULT' ) } . to raise_error ( RuntimeError , /Invalid config name/ )
53+ it "rejects invalid characters in tool name" do
54+ expect { ToolConfigModel . save_config ( '../evil' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
55+ expect { ToolConfigModel . save_config ( 'evil/sub' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
56+ expect { ToolConfigModel . save_config ( 'evil\\sub' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
57+ expect { ToolConfigModel . save_config ( '' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
58+ expect { ToolConfigModel . save_config ( 'evil@name' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
59+ expect { ToolConfigModel . save_config ( 'evil#name' , 'name' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
60+ expect { ToolConfigModel . delete_config ( '../evil' , 'name' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
61+ expect { ToolConfigModel . load_config ( '../evil' , 'name' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
62+ expect { ToolConfigModel . list_configs ( '../evil' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid tool name/ )
63+ end
64+
65+ it "rejects invalid characters in config name" do
66+ expect { ToolConfigModel . save_config ( 'tool' , '../../etc/passwd' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
67+ expect { ToolConfigModel . save_config ( 'tool' , 'sub/dir' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
68+ expect { ToolConfigModel . save_config ( 'tool' , 'sub\\dir' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
69+ expect { ToolConfigModel . save_config ( 'tool' , '' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
70+ expect { ToolConfigModel . save_config ( 'tool' , 'name@evil' , '{}' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
71+ expect { ToolConfigModel . delete_config ( 'tool' , '../evil' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
72+ expect { ToolConfigModel . load_config ( 'tool' , '../evil' , scope : 'DEFAULT' ) } . to raise_error ( ToolConfigModel ::InvalidNameError , /Invalid config name/ )
6273 end
6374 end
6475 end
0 commit comments