示例#1
0
    def test_multiple_parameters_get_required(self):
        self.add_parameter(create_parameter_model('p1'))
        self.add_parameter(create_parameter_model('p2'))
        self.add_parameter(create_parameter_model('p3'))
        property = self.create_property('Hello ${p1}, ${p3} and ${p2}!')

        self.assertCountEqual(['p1', 'p2', 'p3'], property.required_parameters)
示例#2
0
    def test_multiple_parameters_when_one_repeats(self):
        self.add_parameter(create_parameter_model('p1'))
        self.add_parameter(create_parameter_model('p2'))
        property = self.create_property('Hello ${p1}, ${p1}, ${p2} and ${p1}!')

        self.set_value('p1', 'John')
        self.set_value('p2', 'Mary')

        self.assertEqual('Hello John, John, Mary and John!', property.get())
    def test_two_replaces_in_two_files(self):
        parameters = []
        parameters.append(create_parameter_model('param1', all_parameters=parameters))
        parameters.append(create_parameter_model('param2', all_parameters=parameters))

        files = file_download_feature.substitute_parameter_values(
            parameters,
            ['/home/${param2}/${param1}.txt', '/tmp/${param2}.txt', '/${param1}'],
            {'param1': 'val1', 'param2': 'val2'})

        self.assertEqual(files, ['/home/val2/val1.txt', '/tmp/val2.txt', '/val1'])
示例#4
0
    def test_multiple_parameters_when_one_missing(self):
        self.add_parameter(create_parameter_model('p1'))
        self.add_parameter(create_parameter_model('p2'))
        self.add_parameter(create_parameter_model('p3'))

        property = self.create_property('Hello, ${p1}, ${p2} and ${p3}!')

        self.set_value('p1', 'John')
        self.set_value('p3', 'world')

        self.assertIsNone(property.get())
示例#5
0
    def test_multiple_parameters(self):
        self.add_parameter(create_parameter_model('p1'))
        self.add_parameter(create_parameter_model('p2'))
        self.add_parameter(create_parameter_model('p3'))

        property = self.create_property('Hello, ${p1}, ${p2} and ${p3}!')

        self.set_value('p1', 'John')
        self.set_value('p2', 'Mary')
        self.set_value('p3', 'world')

        self.assertEqual('Hello, John, Mary and world!', property.get())
    def test_list_with_dependency_when_matches(self):
        parameters = []
        values = ObservableDict()
        dep_param = create_parameter_model('dep_param')
        parameter = create_parameter_model('param',
                                           type='list',
                                           values_script="echo '${dep_param}_\n' '_${dep_param}_'",
                                           all_parameters=parameters,
                                           other_param_values=values)
        parameters.extend([dep_param, parameter])

        values['dep_param'] = 'abc'
        error = parameter.validate_value(' _abc_')
        self.assertIsNone(error)
    def test_map_to_script_file_value(self):
        file_dir = os.path.expanduser('~')
        parameter_model = create_parameter_model('param1', type=PARAM_TYPE_SERVER_FILE,
                                                 file_dir=file_dir)

        mapped_value = parameter_model.map_to_script('abc')
        self.assertEqual(os.path.join(file_dir, 'abc'), mapped_value)
示例#8
0
    def create_parameters(self, *names):
        result = []
        for name in names:
            parameter = create_parameter_model(name, all_parameters=result)
            result.append(parameter)

        return result
示例#9
0
    def test_late_add_single_parameter(self):
        self.set_value('p1', 'John')
        property = self.create_property('Hello, ${p1}!')

        self.add_parameter(create_parameter_model('p1'))

        self.assertEqual('Hello, John!', property.get())
示例#10
0
    def test_server_file_when_valid(self):
        filename = 'file1.txt'

        test_utils.create_file(filename)
        parameter = create_parameter_model('param', type=PARAM_TYPE_SERVER_FILE, file_dir=test_utils.temp_folder)

        error = parameter.validate_value(filename)
        self.assertIsNone(error)
    def test_single_replace(self):
        parameter = create_parameter_model('param1')

        files = file_download_feature.substitute_parameter_values(
            [parameter],
            ['/home/user/${param1}.txt'],
            {'param1': 'val1'})

        self.assertEqual(files, ['/home/user/val1.txt'])
    def test_no_pattern_match(self):
        param1 = create_parameter_model('param1')

        files = file_download_feature.substitute_parameter_values(
            [param1],
            ['/home/user/${paramX}.txt'],
            {'param1': 'val1'})

        self.assertEqual(files, ['/home/user/${paramX}.txt'])
示例#13
0
 def test_default_settings(self):
     parameter_model = create_parameter_model('param_with_defaults')
     self.assertEqual('param_with_defaults', parameter_model.name)
     self.assertEqual(False, parameter_model.no_value)
     self.assertEqual(False, parameter_model.required)
     self.assertEqual(False, parameter_model.secure)
     self.assertEqual(',', parameter_model.separator)
     self.assertEqual('text', parameter_model.type)
     self.assertEqual(False, parameter_model.constant)
示例#14
0
    def test_notification_on_parameter_add(self):
        config = _create_config_model('conf_x')
        observer = self._create_collection_observer()
        config.parameters.subscribe(observer)

        parameter = create_parameter_model('param1')
        config.parameters.append(parameter)

        self.assertEqual([('add', parameter)], observer.changes)
示例#15
0
    def test_late_remove_single_parameter(self):
        parameter = create_parameter_model('p1')
        self.add_parameter(parameter)
        self.set_value('p1', 'John')
        property = self.create_property('Hello, ${p1}!')

        self.parameters.remove(parameter)

        self.assertEqual('Hello, ${p1}!', property.get())
    def test_skip_flag_replace(self):
        param1 = create_parameter_model('param1', no_value=True)

        files = file_download_feature.substitute_parameter_values(
            [param1],
            ['/home/user/${param1}.txt'],
            {'param1': 'val1'})

        self.assertEqual(files, ['/home/user/${param1}.txt'])
示例#17
0
    def test_server_file_when_valid(self):
        filename = 'file1.txt'

        test_utils.create_file(filename)
        parameter = create_parameter_model('param',
                                           type=PARAM_TYPE_SERVER_FILE,
                                           file_dir=test_utils.temp_folder)

        error = parameter.validate_value(filename)
        self.assertIsNone(error)
示例#18
0
    def create_parameters_supplier(self, *param_names):
        result = []

        for param_name in param_names:
            parameter = create_parameter_model(param_name,
                                               all_parameters=result)
            parameter.name = param_name
            result.append(parameter)

        return lambda: result
示例#19
0
    def test_fill_when_server_file_plain(self):
        parameters = [
            create_parameter_model('p1',
                                   type='server_file',
                                   file_dir=test_utils.temp_folder,
                                   file_recursive=True)
        ]

        result = fill_parameter_values(parameters, 'Value = ${p1}',
                                       {'p1': 'folder'})
        self.assertEqual('Value = folder', result)
    def test_replace_username_and_param(self):
        param1 = create_parameter_model('param1')

        files = file_download_feature.substitute_variable_values(
            [param1],
            ['/home/${auth.username}/${param1}.txt'],
            {'param1': 'val1'},
            '127.0.0.1',
            'user_X')

        self.assertEqual(files, ['/home/user_X/val1.txt'])
    def test_no_pattern_match(self):
        param1 = create_parameter_model('param1')

        files = file_download_feature.substitute_variable_values(
            [param1],
            ['/home/user/${paramX}.txt'],
            {'param1': 'val1'},
            '127.0.0.1',
            'user_X')

        self.assertEqual(files, ['/home/user/${paramX}.txt'])
    def test_skip_secure_replace(self):
        param1 = create_parameter_model('param1', secure=True)

        files = file_download_feature.substitute_variable_values(
            [param1],
            ['/home/user/${param1}.txt'],
            {'param1': 'val1'},
            '127.0.0.1',
            'user_X')

        self.assertEqual(files, ['/home/user/${param1}.txt'])
    def test_replace_audit_name(self):
        param1 = create_parameter_model('param1', no_value=True)

        files = file_download_feature.substitute_variable_values(
            [param1],
            ['/home/user/${auth.audit_name}.txt'],
            {'param1': 'val1'},
            '127.0.0.1',
            'user_X')

        self.assertEqual(files, ['/home/user/127.0.0.1.txt'])
示例#24
0
    def test_fill_when_server_file_recursive_and_one_level(self):
        parameters = [
            create_parameter_model('p1',
                                   type='server_file',
                                   file_dir=test_utils.temp_folder,
                                   file_recursive=True)
        ]

        result = fill_parameter_values(parameters, 'Value = ${p1}',
                                       {'p1': ['folder']})
        expected_value = os.path.join(test_utils.temp_folder, 'folder')
        self.assertEqual('Value = ' + expected_value, result)
示例#25
0
    def test_prepare_only_multiselect(self):
        parameters = []
        param1 = create_parameter_model('param1',
                                        type='text',
                                        all_parameters=parameters)
        multi_param = create_parameter_model('multi_param',
                                             type='multiselect',
                                             all_parameters=parameters)
        param2 = create_parameter_model('param2',
                                        type='list',
                                        all_parameters=parameters)

        parameters.extend([param1, multi_param, param2])

        values = self.prepare({
            param1: 'xyz',
            multi_param: 'xyz',
            param2: 'xyz'
        })
        self.assertEqual('xyz', values['param1'])
        self.assertEqual(['xyz'], values['multi_param'])
        self.assertEqual('xyz', values['param2'])
示例#26
0
 def test_ip6_when_ip4(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('172.13.0.15')
     self.assert_error(error)
示例#27
0
    def test_server_file_when_wrong(self):
        test_utils.create_file('file1.txt')
        parameter = create_parameter_model('param', type=PARAM_TYPE_SERVER_FILE, file_dir=test_utils.temp_folder)

        error = parameter.validate_value('my.dat')
        self.assert_error(error)
示例#28
0
 def test_any_ip_when_wrong(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('127.abcd.1')
     self.assert_error(error)
示例#29
0
 def test_ip4_when_ip6(self):
     parameter = create_parameter_model('param', type='ip4')
     error = parameter.validate_value('ABCD::1234')
     self.assert_error(error)
示例#30
0
    def test_multiselect_when_single_not_matching_element(self):
        parameter = create_parameter_model(
            'param', type=PARAM_TYPE_MULTISELECT, allowed_values=['val1', 'val2', 'val3'])

        error = parameter.validate_value(['X'])
        self.assert_error(error)
示例#31
0
 def test_any_ip_when_ip4(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('127.0.0.1')
     self.assertIsNone(error)
示例#32
0
 def test_ip6_when_ip4(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('172.13.0.15')
     self.assert_error(error)
示例#33
0
    def test_normalize_simple_when_number(self):
        parameter = create_parameter_model('param')

        self.assertEqual(123, parameter.normalize_user_value(123))
示例#34
0
    def test_server_file_when_wrong(self):
        test_utils.create_file('file1.txt')
        parameter = create_parameter_model('param', type=PARAM_TYPE_SERVER_FILE, file_dir=test_utils.temp_folder)

        error = parameter.validate_value('my.dat')
        self.assert_error(error)
示例#35
0
 def test_ip6_when_complex_valid(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('AbC:0::13:127.0.0.1')
     self.assertIsNone(error)
示例#36
0
    def test_normalize_simple_when_none(self):
        parameter = create_parameter_model('param')

        self.assertIsNone(parameter.normalize_user_value(None))
示例#37
0
    def test_normalize_simple_when_string(self):
        parameter = create_parameter_model('param')

        self.assertEqual('abc', parameter.normalize_user_value('abc'))
示例#38
0
    def test_normalize_multiselect_when_none(self):
        parameter = create_parameter_model('param', type=PARAM_TYPE_MULTISELECT, allowed_values=['Hello', 'world'])

        self.assertEqual([], parameter.normalize_user_value(None))
示例#39
0
    def test_normalize_simple_when_string(self):
        parameter = create_parameter_model('param')

        self.assertEqual('abc', parameter.normalize_user_value('abc'))
示例#40
0
 def test_ip6_when_valid(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('1:2:3:4:5:6:7:8')
     self.assertIsNone(error)
示例#41
0
    def test_normalize_simple_when_list(self):
        parameter = create_parameter_model('param')

        self.assertEqual(['Hello', 'world'], parameter.normalize_user_value(['Hello', 'world']))
示例#42
0
 def test_ip4_when_ip6(self):
     parameter = create_parameter_model('param', type='ip4')
     error = parameter.validate_value('ABCD::1234')
     self.assert_error(error)
示例#43
0
    def test_multiselect_when_not_list_value(self):
        parameter = create_parameter_model(
            'param', type=PARAM_TYPE_MULTISELECT, allowed_values=['val1', 'val2', 'val3'])

        error = parameter.validate_value('val1')
        self.assert_error(error)
示例#44
0
 def test_ip4_when_valid(self):
     parameter = create_parameter_model('param', type='ip4')
     error = parameter.validate_value('192.168.0.13')
     self.assertIsNone(error)
示例#45
0
    def test_list_with_script_when_matches_and_win_newline(self):
        parameter = create_parameter_model('param', type='list', values_script="echo '123\r\n' 'abc'")

        error = parameter.validate_value('123')
        self.assertIsNone(error)
示例#46
0
 def test_any_ip_when_wrong(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('127.abcd.1')
     self.assert_error(error)
示例#47
0
 def test_any_ip_when_ip6(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('ABCD::6789')
     self.assertIsNone(error)
示例#48
0
 def test_any_ip_when_ip6(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('ABCD::6789')
     self.assertIsNone(error)
示例#49
0
 def test_ip4_when_valid(self):
     parameter = create_parameter_model('param', type='ip4')
     error = parameter.validate_value('192.168.0.13')
     self.assertIsNone(error)
示例#50
0
 def test_any_ip_when_ip4(self):
     parameter = create_parameter_model('param', type='ip')
     error = parameter.validate_value('127.0.0.1')
     self.assertIsNone(error)
示例#51
0
 def test_ip6_when_valid(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('1:2:3:4:5:6:7:8')
     self.assertIsNone(error)
示例#52
0
    def test_file_upload_parameter_when_valid(self):
        parameter = create_parameter_model('param', type='file_upload')

        uploaded_file = test_utils.create_file('test.xml')
        error = parameter.validate_value(uploaded_file)
        self.assertIsNone(error)
示例#53
0
 def test_ip6_when_complex_valid(self):
     parameter = create_parameter_model('param', type='ip6')
     error = parameter.validate_value('AbC:0::13:127.0.0.1')
     self.assertIsNone(error)
示例#54
0
    def test_file_upload_parameter_when_not_exists(self):
        parameter = create_parameter_model('param', type='file_upload')

        uploaded_file = test_utils.create_file('test.xml')
        error = parameter.validate_value(uploaded_file + '_')
        self.assert_error(error)
示例#55
0
    def test_normalize_simple_when_none(self):
        parameter = create_parameter_model('param')

        self.assertIsNone(parameter.normalize_user_value(None))
示例#56
0
    def test_list_parameter_when_not_matches(self):
        parameter = create_parameter_model(
            'param', type='list', allowed_values=['val1', 'val2', 'val3'])

        error = parameter.validate_value('val4')
        self.assert_error(error)
示例#57
0
    def test_normalize_simple_when_number(self):
        parameter = create_parameter_model('param')

        self.assertEqual(123, parameter.normalize_user_value(123))
示例#58
0
    def test_multiselect_when_empty_list(self):
        parameter = create_parameter_model(
            'param', type=PARAM_TYPE_MULTISELECT, allowed_values=['val1', 'val2', 'val3'])

        error = parameter.validate_value([])
        self.assertIsNone(error)
示例#59
0
    def test_normalize_multiselect_when_none(self):
        parameter = create_parameter_model('param', type=PARAM_TYPE_MULTISELECT, allowed_values=['Hello', 'world'])

        self.assertEqual([], parameter.normalize_user_value(None))
示例#60
0
    def test_normalize_simple_when_list(self):
        parameter = create_parameter_model('param')

        self.assertEqual(['Hello', 'world'], parameter.normalize_user_value(['Hello', 'world']))