def test_WebInspectScan_webinspect_git_clone_failure_type_error( scan_mock, scan_overrides_mock, wi_config_mock, config_mock, os_mock, log_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) config_mock.side_effect = TypeError # When scan_object._webinspect_git_clone() # Expect assert log_mock.call_count == 1
def test_WebInspectScan_webinspect_git_clone_failure_attribute_error( scan_mock, scan_overrides_mock, wi_config_mock, config_mock, os_mock, os_path_exists_mock, log_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) os_path_exists_mock.side_effect = AttributeError # When with pytest.raises(AttributeError): scan_object._webinspect_git_clone() # Expect assert log_mock.call_count == 1
def test_WebInspectScan_webinspect_git_clone_not_default_with_valid_git_dir_success( scan_mock, scan_overrides_mock, wi_config_mock, config_mock, os_mock, log_mock, check_output_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) # Kinda weird, have to set it like this since we mock scan overrides. scan_object.scan_overrides.settings = 'NotDefault' # When scan_object._webinspect_git_clone() # Expect assert log_mock.call_count == 1 assert check_output_mock.call_count == 3
def test_WebinspectScan_init_success(scan_mock, scan_override_mock, wi_config_mock, config_git_mock): # Given overrides = _setup_overrides() # empty dictionary # When scan_object = WebInspectScan(overrides) # Expect assert config_git_mock.call_count == 1 assert wi_config_mock.call_count == 1 assert scan_mock.call_count == 1
def test_WebInspectScan_webinspect_git_clone_default_success(scan_mock, scan_overrides_mock, wi_config_mock, config_mock, os_mock, log_mock): # Given overrides = _setup_overrides() # When scan_object = WebInspectScan(overrides) # Expect assert log_mock.call_count == 1 assert config_mock.call_count == 1
def test_WebInspectScan_webinspect_git_clone_not_default_with_valid_git_dir_success(scan_mock, scan_overrides_mock, wi_config_mock, config_mock, os_mock, log_mock, check_output_mock): # Given overrides = _setup_overrides(expected_settings='NotDefault') # When scan_object = WebInspectScan(overrides) # Expect assert log_mock.call_count == 1 assert check_output_mock.call_count == 3
def test_WebInspectScan_scan_failure_http_error(scan_override_mock, wi_config_mock, auth_mock, git_clone_mock, upload_settings_policies_mock, _scan_mock, api_create_scan_mock, log_error_mock): # Given overrides = _setup_overrides() auth_mock.return_value.authenticate.return_value = ("expected_username", "expected_password") _scan_mock.side_effect = requests.HTTPError # When with pytest.raises(SystemExit): scan = WebInspectScan(overrides) # Expect assert log_error_mock.call_count == 1
def test_WebInspectScan_scan_complete_success(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, get_status_mock, export_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) scan_object.scan_id = "test_guid" get_status_mock.return_value = 'complete' # When scan_object._scan() # Expect assert export_mock.call_count == 2
def test_WebInspectScan_scan_success(scan_override_mock, wi_config_mock, auth_mock, git_clone_mock, upload_settings_policies_mock, _scan_mock, api_create_scan_mock, xml_parsing_mock): # Given overrides = _setup_overrides() auth_mock.return_value.authenticate.return_value = ("expected_username", "expected_password") # When scan = WebInspectScan(overrides) # Expect assert api_create_scan_mock.call_count == 1 assert _scan_mock.call_count == 1 assert upload_settings_policies_mock.call_count == 1 assert git_clone_mock.call_count == 1 assert xml_parsing_mock.call_count == 1
def test_WebInspectScan_scan_bad_state_failure(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, get_status_mock, log_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) scan_object.scan_id = "test_guid" get_status_mock.return_value = 'SomeRandomState' # any non: Running, NotRunning, Complete state # When with pytest.raises(SystemExit): scan_object._scan() # Expect assert log_mock.call_count == 1
def test_WebInspectScan_scan_failure_none_type_scan_status(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, get_status_mock, log_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) scan_object.scan_id = "test_guid" get_status_mock.return_value = None # Sometimes we got a None response - we want to exit on that(?) # When with pytest.raises(SystemExit): scan_object._scan() # Expect assert log_mock.call_count == 1
def test_WebInspectScan_exit_gracefully_success(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, stop_scan_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) scan_object.scan_id = "scan_guid" # this gets set when a scan is created - we're not creating a scan here. # When with pytest.raises(SystemExit): scan_object._exit_scan_gracefully("scan_guid") # Expect assert stop_scan_mock.call_count == 1
def webinspect_scan(**kwargs): # handle deprecated click option warnings if kwargs['upload_policy']: Logger.app.critical( "--upload_policy is a deprecated option because of underuse, if you believe there is a " "valid use for this please make a github issue") if kwargs['upload_webmacros']: Logger.app.critical( "--upload_webmacros is a deprecated option because of underuse, if you believe there is a " "valid use for this please make a github issue") if kwargs['upload_settings']: Logger.app.critical( "--upload_settings is a deprecated option because of underuse, if you believe there is a " "valid use for this please make a github issue") WebInspectScan(kwargs.copy())
def test_WebInspectScan_stop_scan_success(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, stop_scan_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) # When scan_object._stop_scan("scan_guid") # Expect assert stop_scan_mock.call_count == 1
def test_WebInspectScan_scan_not_running_failure(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, get_status_mock, stop_scan_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object._set_api(None, None) scan_object.scan_id = "test_guid" get_status_mock.return_value = 'notrunning' # When with pytest.raises(SystemExit): scan_object._scan() # Expect assert stop_scan_mock.call_count == 1
def test_xml_parsing_success(scan_mock, scan_overrides_mock, wi_config_mock, config_mock, write_to_console_mock, write_to_json_mock, element_tree_mock, get_time_mock): # Given overrides = _setup_overrides() scan_object = WebInspectScan(overrides) scan_object.scan_overrides.settings = 'litecart' scan_object.scan_id = "test_scan_id" scan_object.scan_overrides.scan_name = "test_scan_name" filename = "test.xml" scan_object.start_time = '2013-02-01 10:10:08' get_time_mock.side_effect = ['2013-02-01 10:11:08'] #When scan_object.xml_parsing(filename) #Expect assert scan_mock.call_count == 1 assert write_to_console_mock.call_count == 1 assert write_to_json_mock.call_count == 1 write_to_json_mock.assert_called_once_with('test.xml', 'test_scan_name', 'test_scan_id', '2013-02-01 10:10:08', '2013-02-01 10:11:08') write_to_console_mock.assert_called_once_with("test_scan_name")
def test_WebInspectScan_upload_settings_and_policies_success(scan_mock, scan_override_mock, wi_config_mock, config_git_mock, verify_scan_mock, upload_settings_mock, upload_webmacros_mock, upload_policy_mock): # Given overrides = _setup_overrides(expected_upload_settings="settings.xml", expected_upload_webmacro="upload.macro", expected_upload_policy="test policy?") scan_object = WebInspectScan(overrides) # below was done to logically isolate this test - which was harder to do than I thought. # since self.webinspect_api isn't declared in the init and we have mocked the function that creates # it, we have to set the api. scan_object._set_api(None, None) scan_object.webinspect_api.setting_overrides.webinspect_upload_policy = True scan_object.webinspect_api.setting_overrides.scan_policy = None # When scan_object._upload_settings_and_policies() # Expect assert verify_scan_mock.call_count == 1 assert upload_settings_mock.call_count == 1 assert upload_webmacros_mock.call_count == 1 assert upload_policy_mock.call_count == 1