diff --git a/tests/privacy_webbkollen.py b/tests/privacy_webbkollen.py index b7cd6d7d..86c651be 100644 --- a/tests/privacy_webbkollen.py +++ b/tests/privacy_webbkollen.py @@ -17,7 +17,6 @@ REVIEW_SHOW_IMPROVEMENTS_ONLY = get_config_or_default('review_show_improvements_only') def run_test(global_translation, lang_code, url): - points = 5.0 review = '' return_dict = {} rating = Rating(global_translation, REVIEW_SHOW_IMPROVEMENTS_ONLY) @@ -29,58 +28,18 @@ def run_test(global_translation, lang_code, url): print(global_translation('TEXT_TEST_START').format( datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) - orginal_url = url - url = f'https://webbkoll.dataskydd.net/{lang_code}/check?url={urllib.parse.quote(url)}' - headers = { - 'user-agent': 'Mozilla/5.0 (compatible; Webperf; +https://webperf.se)'} - - has_refresh_statement = True - had_refresh_statement = False - session = requests.Session() - while has_refresh_statement: - has_refresh_statement = False - request = session.get(url, allow_redirects=True, - headers=headers, timeout=REQUEST_TIMEOUT) - - if f'type="search" value="{orginal_url}">' in request.text: - # headers[''] = '' - regex = r"_csrf_token[^>]*value=\"(?P[^\"]+)\"" - matches = re.finditer(regex, request.text, re.MULTILINE) - csrf_value = '' - for _, match in enumerate(matches, start=1): - csrf_value = match.group('csrf') - - data = { - '_csrf_token': csrf_value, - 'url': orginal_url, - 'submit': ''} - service_url = f'https://webbkoll.dataskydd.net/{lang_code}/check' - request = session.post(service_url, allow_redirects=True, - headers=headers, timeout=REQUEST_TIMEOUT, data=data) - - if ' 0: for header_info in result_title_beta[0].strings: @@ -108,27 +78,59 @@ def run_test(global_translation, lang_code, url): if info.startswith('20'): review += local_translation('TEXT_REVIEW_GENERATED').format(info) - # review += review_messages +def get_html_content(orginal_url, lang_code, local_translation): + html_content = '' + headers = { + 'user-agent': 'Mozilla/5.0 (compatible; Webperf; +https://webperf.se)'} - rating.set_overall(points) - rating.overall_review = review + has_refresh_statement = True + had_refresh_statement = False + session = requests.Session() + while has_refresh_statement: + has_refresh_statement = False + request = session.get( + (f'https://webbkoll.dataskydd.net/{lang_code}' + f'/check?url={urllib.parse.quote(orginal_url)}'), + allow_redirects=True, + headers=headers, + timeout=REQUEST_TIMEOUT) - print(global_translation('TEXT_TEST_END').format( - datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) + if f'type="search" value="{orginal_url}">' in request.text: + # headers[''] = '' + regex = r"_csrf_token[^>]*value=\"(?P[^\"]+)\"" + matches = re.finditer(regex, request.text, re.MULTILINE) + csrf_value = '' + for _, match in enumerate(matches, start=1): + csrf_value = match.group('csrf') - return (rating, return_dict) + data = { + '_csrf_token': csrf_value, + 'url': orginal_url, + 'submit': ''} + service_url = f'https://webbkoll.dataskydd.net/{lang_code}/check' + request = session.post(service_url, allow_redirects=True, + headers=headers, timeout=REQUEST_TIMEOUT, data=data) + html_content = request.text + + if ' 0.0: points_for_current_result -= points_to_remove_for_current_result - points -= points_to_remove_for_current_result points_for_current_result = max(points_for_current_result, 1.0) # add review info - review_messages += '- ' + re.sub(REGEX_ALLOWED_CHARS, '', + review = create_review(local_translation, + header, + number_of_success, + number_of_alerts, + number_of_warnings, + number_of_sub_alerts, + number_of_sub_warnings, + more_info) + + heading_rating.set_integrity_and_security( + points_for_current_result, review) + return heading_rating + +def create_review(local_translation, header, # pylint: disable=too-many-arguments + number_of_success, number_of_alerts, number_of_warnings, + number_of_sub_alerts, number_of_sub_warnings, more_info): + review = '- ' + re.sub(REGEX_ALLOWED_CHARS, '', header.text, 0, re.MULTILINE).strip() if number_of_success > 0 and number_of_sub_alerts == 0 and number_of_sub_warnings == 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_VERY_GOOD') + review += local_translation('TEXT_REVIEW_CATEGORY_VERY_GOOD') elif number_of_alerts > 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_IS_VERY_BAD').format( + review += local_translation('TEXT_REVIEW_CATEGORY_IS_VERY_BAD').format( 0) elif number_of_warnings > 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_IS_BAD').format( + review += local_translation('TEXT_REVIEW_CATEGORY_IS_BAD').format( 0) elif number_of_sub_alerts > 0 and number_of_sub_warnings > 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_IS_OK').format( + review += local_translation('TEXT_REVIEW_CATEGORY_IS_OK').format( number_of_sub_alerts, number_of_sub_warnings, 0) elif number_of_sub_alerts > 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_IS_OK').format( + review += local_translation('TEXT_REVIEW_CATEGORY_IS_OK').format( number_of_sub_alerts, number_of_sub_warnings, 0) elif number_of_sub_warnings > 0: - review_messages += local_translation('TEXT_REVIEW_CATEGORY_IS_GOOD').format( + review += local_translation('TEXT_REVIEW_CATEGORY_IS_GOOD').format( number_of_sub_warnings, 0) - elif header_id in ('headers', 'cookies'): - review_messages += local_translation('TEXT_REVIEW_CATEGORY_VERY_GOOD') + elif header.get('id') in ('headers', 'cookies'): + review += local_translation('TEXT_REVIEW_CATEGORY_VERY_GOOD') else: - review_messages += ": " + more_info - - heading_rating.set_integrity_and_security( - points_for_current_result, review_messages) - return heading_rating + review += ": " + more_info + return review