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)
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)