def test_max_async_wait_time(self):
     request_endpoint1 = 'test/{testSomething}/moreTest'
     request_endpoint2 = 'different/{other}/somethingElse'
     request_endpoint3 = 'final/{testing}/theEnd'
     settings_file = {
         'global_producer_timing_delay': 5,
         'per_resource_settings': {
             request_endpoint1: {
                 'producer_timing_delay': 3
             },
             request_endpoint2: {
                 'producer_timing_delay': 7
             }
         },
         'max_async_resource_creation_time': 6
     }
     user_args = {}
     user_args.update(settings_file)
     settings = RestlerSettings(user_args)
     self.assertEqual(
         6,
         settings.get_max_async_resource_creation_time(
             hex_def(request_endpoint1)))
     # producer timing delay > max async
     self.assertEqual(
         7,
         settings.get_max_async_resource_creation_time(
             hex_def(request_endpoint2)))
     self.assertEqual(
         6,
         settings.get_max_async_resource_creation_time(
             hex_def(request_endpoint3)))
 def test_per_resource_timing_delays(self):
     request_endpoint1 = 'test/{testSomething}/moreTest'
     request_endpoint2 = 'different/{other}/somethingElse'
     request_endpoint3 = 'final/{testing}/theEnd'
     settings_file = {
         'global_producer_timing_delay': 5,
         'per_resource_settings': {
             request_endpoint1: {
                 'producer_timing_delay': 3
             },
             request_endpoint2: {
                 'producer_timing_delay': 7
             }
         }
     }
     user_args = {'producer_timing_delay': 1}
     user_args.update(settings_file)
     settings = RestlerSettings(user_args)
     # Set in settings file
     self.assertEqual(
         3, settings.get_producer_timing_delay(hex_def(request_endpoint1)))
     # Set in settings file (different value)
     self.assertEqual(
         7, settings.get_producer_timing_delay(hex_def(request_endpoint2)))
     # Not set in settings file
     self.assertEqual(
         5, settings.get_producer_timing_delay(hex_def(request_endpoint3)))
    def test_create_once(self):
        request_endpoint1 = 'test/{testSomething}/moreTest'
        request_endpoint2 = 'different/{other}/somethingElse'
        request_endpoint3 = 'final/{testing}/theEnd'

        settings_file = {
            'per_resource_settings': {
                request_endpoint1: {
                    'create_once': 1
                },
                request_endpoint2: {
                    'create_once': 1
                },
                request_endpoint3: {
                    'create_once': 0
                }
            }
        }

        RestlerSettings(settings_file)
        create_once_list = RestlerSettings.Instance().create_once_endpoints

        self.assertEqual(2, len(create_once_list))

        self.assertEqual(True, hex_def(request_endpoint1) in create_once_list)
        self.assertEqual(True, hex_def(request_endpoint2) in create_once_list)
        self.assertNotEqual(True,
                            hex_def(request_endpoint3) in create_once_list)
    def test_custom_dictionaries(self):
        request_endpoint1 = 'test/{testSomething}/moreTest'
        request_endpoint2 = 'different/{other}/somethingElse'
        request_endpoint3 = 'final/{testing}/theEnd'
        dict1 = "dict1.json"
        dict2 = "dict2.json"

        settings_file = {
            'per_resource_settings': {
                request_endpoint1: {
                    'custom_dictionary': dict1
                },
                request_endpoint2: {
                    'custom_dictionary': dict2
                },
                request_endpoint3: {}
            }
        }

        RestlerSettings(settings_file)
        custom_dicts = RestlerSettings.Instance(
        ).get_endpoint_custom_mutations_paths()

        self.assertEqual(2, len(custom_dicts))
        self.assertEqual(dict1, custom_dicts[hex_def(request_endpoint1)])
        self.assertEqual(dict2, custom_dicts[hex_def(request_endpoint2)])
        self.assertTrue(hex_def(request_endpoint3) not in custom_dicts)
Esempio n. 5
0
    def test_settings_file_upload(self):
        with open(os.path.join(os.path.dirname(__file__), "restler_user_settings.json")) as json_file:
            settings_file = json.load(json_file)
        settings = RestlerSettings(settings_file)

        self.assertEqual('exhaustive', settings.get_checker_arg('namespacerule', 'mode'))
        self.assertEqual('exhaustive', settings.get_checker_arg('useafterfree', 'mode'))
        self.assertEqual('exhaustive', settings.get_checker_arg('leakagerule', 'mode'))
        self.assertEqual('exhaustive', settings.get_checker_arg('resourcehierarchy', 'mode'))
        self.assertEqual(None, settings.get_checker_arg('invaliddynamicobject', 'mode'))
        self.assertEqual('normal', settings.get_checker_arg('payloadbody', 'mode'))
        self.assertTrue(settings.get_checker_arg('payloadbody', 'start_with_valid'))
        self.assertTrue(settings.get_checker_arg('payloadbody', 'start_with_examples'))
        self.assertFalse(settings.get_checker_arg('payloadbody', 'size_dep_budget'))
        self.assertTrue(settings.get_checker_arg('payloadbody', 'use_feedback'))
        self.assertEqual('C:\\restler\\restlerpayloadbody\\recipe_custom.json', settings.get_checker_arg('payloadbody', 'recipe_file'))
        self.assertEqual('C:\\restler\\restlerpayloadbody\\compile\\grammar.json', settings.get_checker_arg('payloadbody', 'grammar_file'))

        request1 = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}/{recordType}/{relativeRecordSetName}"
        request2 = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/dnsZones/{zoneName}"
        self.assertEqual(1, settings.get_producer_timing_delay(hex_def(request1)))
        self.assertEqual(5, settings.get_producer_timing_delay(hex_def(request2)))
        self.assertEqual(2, settings.get_producer_timing_delay(hex_def("test_unknown_request_id")))

        custom_dicts = settings.get_endpoint_custom_mutations_paths()
        self.assertEqual("c:\\restler\\custom_dict1.json", custom_dicts[hex_def(request1)])
        self.assertEqual("c:\\restler\\custom_dict2.json", custom_dicts[hex_def(request2)])

        self.assertEqual(20, settings.max_combinations)
        self.assertEqual(90, settings.max_request_execution_time)

        self.assertEqual(True, hex_def(request1) in settings.create_once_endpoints)
        self.assertNotEqual(True, hex_def(request2) in settings.create_once_endpoints)

        self.assertEqual(200, settings.dyn_objects_cache_size)
        self.assertEqual(2, settings.fuzzing_jobs)
        self.assertEqual('directed-smoke-test', settings.fuzzing_mode)
        self.assertEqual(30, settings.garbage_collection_interval)
        self.assertTrue(settings.ignore_dependencies)
        self.assertTrue(settings.ignore_feedback)
        self.assertTrue(settings.connection_settings.include_user_agent)
        self.assertEqual(45, settings.max_async_resource_creation_time)
        self.assertEqual(11, settings.max_sequence_length)
        self.assertFalse(settings.connection_settings.use_ssl)
        self.assertTrue(settings.no_tokens_in_logs)
        self.assertEqual('(\w*)/ddosProtectionPlans(\w*)', settings.path_regex)
        self.assertEqual(500, settings.request_throttle_ms)
        self.assertEqual('100.100.100.100', settings.connection_settings.target_ip)
        self.assertEqual(500, settings.connection_settings.target_port)
        self.assertEqual(12, settings.time_budget)
        self.assertEqual('some refresh command', settings.token_refresh_cmd)
        self.assertEqual(60, settings.token_refresh_interval)
        self.assertEqual(False, settings.wait_for_async_resource_creation)
        self.assertEqual('0.0.0', settings.version)