def test_checkers_in_settings(self): settings_file = { 'settings_file_exists':True, 'checkers' : { 'NamespaceRule' : { 'mode' : 'exhaustive' }, 'useafterfree' : { 'mode' : 'exhaustive' }, 'leakagerule' : { 'mode' : 'exhaustive' }, 'resourcehierarchy' : { 'mode' : 'exhaustive' } } } settings = RestlerSettings(settings_file) candidate_values = primitives.CandidateValuesPool() test_dict = { } candidate_values.set_candidate_values(test_dict) 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('namespace_rule_mode', 'mode')) self.assertEqual(None, settings.get_checker_arg('use_after_free_rule_mode', 'mode')) self.assertEqual(None, settings.get_checker_arg('leakage_rule_mode', 'mode')) self.assertEqual(None, settings.get_checker_arg('resource_hierarchy_rule_mode', 'mode'))
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')) 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("\\path\\to\\file.pem", settings.client_certificate_path) 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.connection_settings.disable_cert_validation) 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(True, settings.ignore_decoding_failures) self.assertEqual('0.0.0', settings.version) code1 = re.compile('400') code2 = re.compile('2.4') code3 = re.compile('3.+') code4 = re.compile('404') code5 = re.compile('500') self.assertEqual([code1, code2, code3], settings.custom_bug_codes) self.assertEqual([code4, code5], settings.custom_non_bug_codes)