def test_get_values_when_single_parameter(self, shell): values_provider = DependantScriptValuesProvider( "echo '_${param1}_'", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual(['_hello world_'], values_provider.get_values({'param1': 'hello world'}))
def test_no_code_injection_for_and_operator(self, shell, expected_values): values_provider = DependantScriptValuesProvider( "echo ${param1}", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual(expected_values, values_provider.get_values({'param1': '1 && echo 2'}))
def test_get_values_when_numeric_parameter(self, shell): values_provider = DependantScriptValuesProvider( "echo '_${param1}_'", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual(['_123_'], values_provider.get_values({'param1': 123}))
def test_get_values_when_parameter_repeats(self, shell): values_provider = DependantScriptValuesProvider( "echo '_${param1}_\n' 'test\n' '+${param1}+'", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual(['_123_', ' test', ' +123+'], values_provider.get_values({'param1': '123'}))
def test_get_values_when_newline_response(self, shell): values_provider = DependantScriptValuesProvider( "ls '${param1}'", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual([], values_provider.get_values( {'param1': test_utils.temp_folder}))
def test_get_values_when_multiple_parameters(self): files_path = os.path.join(test_utils.temp_folder, 'path1', 'path2') for i in range(0, 5): file_utils.write_file(os.path.join(files_path, 'f' + str(i) + '.txt'), 'test') values_provider = DependantScriptValuesProvider( 'ls ' + test_utils.temp_folder + '/${param1}/${param2}', self.create_parameters_supplier('param1', 'param2')) self.assertEqual(['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt', 'f4.txt'], values_provider.get_values({'param1': 'path1', 'param2': 'path2'}))
def test_no_code_injection_for_pipe_operator(self, shell, expected_values): test_utils.create_files(['x1', 'y2', 'y3']) values_provider = DependantScriptValuesProvider( "ls ${param1}", self.create_parameters_supplier('param1'), shell=shell) self.assertEqual( expected_values, values_provider.get_values( {'param1': test_utils.temp_folder + ' | grep y'}))
def test_script_fails(self): values_provider = DependantScriptValuesProvider( "echo2 ${param1}", self.create_parameters_supplier('param1')) self.assertEqual([], values_provider.get_values({'param1': 'abc'}))
def test_no_code_injection(self): values_provider = DependantScriptValuesProvider( "echo ${param1}", self.create_parameters_supplier('param1')) self.assertEqual(['1 && echo 2'], values_provider.get_values({'param1': '1 && echo 2'}))
def test_get_values_when_no_values(self): values_provider = DependantScriptValuesProvider( 'ls ${param1}', self.create_parameters_supplier('param1')) self.assertEqual([], values_provider.get_values({}))