| product_risk_suite/api/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/api/admin.py |
UserAdminWithAPITokens.api_token_count |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/admin.py |
APITokenAdmin.get_fields |
|
3 |
3 |
0 |
|
0% |
| product_risk_suite/api/admin.py |
APITokenAdmin.get_readonly_fields |
|
3 |
3 |
0 |
|
0% |
| product_risk_suite/api/admin.py |
APITokenAdmin.save_model |
|
7 |
7 |
0 |
|
0% |
| product_risk_suite/api/admin.py |
APITokenAdmin.response_add |
|
4 |
4 |
0 |
|
0% |
| product_risk_suite/api/admin.py |
(no function) |
|
28 |
0 |
0 |
|
100% |
| product_risk_suite/api/apps.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/api/middleware.py |
APITokenAuthenticationMiddleware.__init__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/api/middleware.py |
APITokenAuthenticationMiddleware.__call__ |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/api/middleware.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/api/migrations/0001_initial.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/api/migrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/api/models.py |
APIToken.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/models.py |
APIToken.is_valid |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/api/models.py |
APIToken.generate_raw_token |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/api/models.py |
APIToken.hash_token |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/api/models.py |
APIToken.authenticate |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/api/models.py |
(no function) |
|
24 |
0 |
0 |
|
100% |
| product_risk_suite/api/schema.py |
ProductRiskAnalysisType.resolve_risk_entries |
|
4 |
4 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
StrideType.resolve_full |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
RiskRatingType.resolve_likelihood_of_occurrence_str |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
RiskRatingType.resolve_severity_of_impact_str |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
RiskRatingType.resolve_risk |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
StatusType.resolve_is_todo |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
EvidenceType.resolve_responsible |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
Query.resolve_products |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/api/schema.py |
Query.resolve_product_by_title |
|
6 |
6 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
Query.resolve_product_by_slug |
|
6 |
6 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
Query.resolve_security_requirements |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
Query.resolve_stride_to_str |
|
4 |
4 |
0 |
|
0% |
| product_risk_suite/api/schema.py |
(no function) |
|
96 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
APITokenModelTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
APITokenModelTest.test_authenticate_round_trip |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
APITokenModelTest.test_authenticate_rejects_garbage |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
APITokenModelTest.test_authenticate_rejects_inactive |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
APITokenModelTest.test_authenticate_rejects_expired |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.setUp |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest._query |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_valid_token_with_permission_returns_product |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_valid_token_without_permission_returns_empty |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_invalid_token_returns_401 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_expired_token_returns_401 |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_no_auth_header_falls_back_to_anonymous |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
GraphQLTokenAuthTest.test_session_login_is_unaffected_by_middleware |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/api/tests.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| product_risk_suite/manage.py |
main |
|
8 |
3 |
0 |
|
62% |
| product_risk_suite/manage.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductAdmin.get_obj_perms_user_select_form |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/product/admin.py |
ProductAdmin.get_obj_perms_group_select_form |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/product/admin.py |
ProductRiskAnalysisAdmin.n_entries |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
upgrade_to_latest_risk_version |
|
17 |
2 |
0 |
|
88% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.created_at_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.last_change_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.get_form |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.formfield_for_manytomany |
|
17 |
6 |
0 |
|
65% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_Id |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_outdated |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_title |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_asset |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_origin |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_stride |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_accepted |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.tm_linked |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_initial |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_mitigated |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
ProductRiskEntryAdmin.risk_after_mitigation |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/admin.py |
(no function) |
|
66 |
0 |
0 |
|
100% |
| product_risk_suite/product/apps.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0001_initial.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0002_alter_product_analyzes_and_more.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0003_productriskentry_svg_id_alter_product_slug_and_more.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0004_alter_product_options.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0005_remove_productriskentry_svg_id.py |
migrate_pop_pre_svg_ids |
|
9 |
5 |
0 |
|
44% |
| product_risk_suite/product/migrations/0005_remove_productriskentry_svg_id.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0006_productriskentry_svg_id.py |
migrate_push_pre_svg_ids |
|
8 |
4 |
0 |
|
50% |
| product_risk_suite/product/migrations/0006_productriskentry_svg_id.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/0007_productriskentry_created_at_productriskentry_last_change.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/migrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
ProductRiskEntry.__str__ |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
ProductRiskEntry.list_svg_ids |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
ProductRiskAnalysis.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
ProductRiskAnalysis.get_risk_summary |
|
22 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
Product.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/models.py |
(no function) |
|
35 |
0 |
0 |
|
100% |
| product_risk_suite/product/templatetags/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/product/templatetags/extras.py |
subtract |
|
3 |
1 |
0 |
|
67% |
| product_risk_suite/product/templatetags/extras.py |
get |
|
4 |
2 |
0 |
|
50% |
| product_risk_suite/product/templatetags/extras.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryTest.setUp |
|
23 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryTest.test_product_risk_entry_str |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryTest.test_list_svg_ids_empty_when_none_assigned |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryTest.test_list_svg_ids_returns_tech_names_of_assigned_connections |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisTest.setUp |
|
29 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisTest.test_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisTest.test_get_risk_summary |
|
19 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.setUp |
|
30 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest._admin |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_changelist_view_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_add_view_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_change_view_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_add_view_help_text_for_new_entry |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_change_view_help_text_for_existing_entry |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_id |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_title |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_asset |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_origin |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_stride |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_initial |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_accepted_false |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_accepted_true |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_mitigated_false |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_mitigated_true |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_after_mitigation_none_when_unmitigated |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_risk_after_mitigation_value_when_mitigated |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_tm_linked_false_without_svg_id |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_display_tm_linked_true_with_svg_id |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_svg_id_queryset_filtered_to_product_connection_names |
|
12 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskEntryAdminTest.test_svg_id_queryset_unfiltered_for_new_entry |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.setUp |
|
18 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.setUp.make_risk |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest._url |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_no_permission_returns_403 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_with_view_permission_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_nonexistent_product_returns_404 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_nonexistent_analysis_returns_404 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_contains_correct_product |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_contains_correct_analysis |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_entries_match_analysis |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_entries_ordered_by_custom_id |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_risk_summary_has_expected_keys |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_context_risk_summary_counts_entries |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_product_edit_false_for_viewer |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisViewTest.test_product_edit_true_for_editor |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.setUp |
|
15 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest._admin |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_changelist_returns_200 |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_add_view_returns_200 |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_change_view_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_n_entries_with_two_entries |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_n_entries_with_empty_analysis |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductRiskAnalysisAdminTest.test_n_entries_reflected_in_changelist |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductIndexTemplateTest.setUp |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductIndexTemplateTest.test_product_index_template_no_missing_vars |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductViewTemplateTest.setUp |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductViewTemplateTest.test_product_template_no_missing_vars |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisTemplateTest.setUp |
|
30 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
ProductAnalysisTemplateTest.test_product_analysis_template_no_missing_vars |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
_make_versioned_risk |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
UpgradeRiskVersionAdminActionTest.setUp |
|
12 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
UpgradeRiskVersionAdminActionTest._post_action |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
UpgradeRiskVersionAdminActionTest.test_upgrades_entry_pointing_to_outdated_risk |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
UpgradeRiskVersionAdminActionTest.test_leaves_entry_unchanged_when_already_current |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
UpgradeRiskVersionAdminActionTest.test_handles_mix_of_outdated_and_current_entries |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedAdminDisplayTest.setUp |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedAdminDisplayTest._admin |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedAdminDisplayTest.test_risk_outdated_false_when_not_current |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedAdminDisplayTest.test_risk_outdated_true_when_current |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedIconTemplateTest.setUp |
|
19 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedIconTemplateTest.test_outdated_icon_shown_when_entry_has_outdated_risk |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedIconTemplateTest.test_outdated_icon_is_a_link_to_diff_view |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskOutdatedIconTemplateTest.test_outdated_icon_absent_when_all_risks_are_current |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.setUp |
|
21 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest._url |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_no_product_permission_returns_403 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_unknown_entry_returns_404 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_authorized_user_gets_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_shows_both_version_numbers |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_shows_old_and_new_title |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_changed_field_marker_present |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
RiskDiffViewTest.test_entry_already_current_shows_no_diff_message |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product/tests.py |
(no function) |
|
114 |
0 |
0 |
|
100% |
| product_risk_suite/product/urls.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/views.py |
product_index |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product/views.py |
product |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product/views.py |
risk_diff |
|
16 |
2 |
0 |
|
88% |
| product_risk_suite/product/views.py |
risk_diff._stride_str |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product/views.py |
risk_diff._smv_str |
|
4 |
1 |
0 |
|
75% |
| product_risk_suite/product/views.py |
product_analysis |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/product/views.py |
(no function) |
|
23 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/asgi.py |
(no function) |
|
7 |
7 |
0 |
|
0% |
| product_risk_suite/product_risk_suite/ldap_settings.py |
(no function) |
|
11 |
11 |
0 |
|
0% |
| product_risk_suite/product_risk_suite/settings.py |
(no function) |
|
37 |
2 |
0 |
|
95% |
| product_risk_suite/product_risk_suite/test_settings.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
ShowLoginViewTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
ShowLoginViewTest.test_unauthenticated_renders_login_page |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
ShowLoginViewTest.test_authenticated_redirects_to_product |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_get_renders_login_page |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_post_valid_credentials_redirects_to_product |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_post_wrong_password_shows_error |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_post_unknown_user_shows_error |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_post_missing_credentials_shows_error |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LoginViewTest.test_post_valid_login_authenticates_user |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LogoutViewTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LogoutViewTest.test_logout_redirects_to_root |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
LogoutViewTest.test_logout_clears_session |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/tests.py |
(no function) |
|
21 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/urls.py |
(no function) |
|
11 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/views.py |
showLogin |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/views.py |
login_view |
|
14 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/views.py |
logout_view |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/views.py |
(no function) |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/product_risk_suite/wsgi.py |
(no function) |
|
7 |
7 |
0 |
|
0% |
| product_risk_suite/risk_assessment/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
SecurityRequirementAdmin.norm |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
SecurityRequirementAdmin.short |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
SecurityRequirementAdmin.description |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
RiskAdmin.get_fieldsets |
|
3 |
1 |
0 |
|
67% |
| product_risk_suite/risk_assessment/admin.py |
RiskAdmin.stride_str |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
RiskAdmin.save_model |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
RiskAdmin.save_related |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
RiskAdmin.response_change |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
RiskRatingAdmin.risk_str |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
update_evidences |
|
2 |
2 |
0 |
|
0% |
| product_risk_suite/risk_assessment/admin.py |
run_scraper_now |
|
10 |
1 |
0 |
|
90% |
| product_risk_suite/risk_assessment/admin.py |
EvidenceAdmin.scrape_status |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
EvidenceAdmin.get_urls |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/admin.py |
EvidenceAdmin.test_scraper_view |
|
18 |
3 |
0 |
|
83% |
| product_risk_suite/risk_assessment/admin.py |
(no function) |
|
88 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/apps.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/forms.py |
EvidenceUpdateProductForm.__init__ |
|
3 |
3 |
0 |
|
0% |
| product_risk_suite/risk_assessment/forms.py |
(no function) |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0001_initial.py |
(no function) |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0002_evidence_evidence_link.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0003_alter_stride_name.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0004_alter_securityrequirement_slug.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0005_riskmitigation_title.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0006_likelihoodexample_severityexample_and_more.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0007_suggestedmitigationvalidation_and_more.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0008_alter_risk_suggested_mitigation_validation.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0009_alter_riskmitigation_security_requirements.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0010_alter_securityrequirement_options.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0011_evidence_product.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0012_rename_livecycle_lifecycle_and_more.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0013_risk_is_current_risk_version_alter_risk_custom_id_and_more.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0014_evidence_last_scrape_failed_and_more.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/0015_evidence_scraper.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/migrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
truncate |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Asset.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
LifeCycle.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Origin.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
SecurityRequirement.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Stride.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Stride.save |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Stride.clean |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
SuggestedMitigationValidation.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Risk.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Risk.has_newer_version |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Risk.stride_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Risk.list_stride |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
SeverityName.to_human_str |
|
11 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
SeverityExample.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
LikelihoodName.to_human_str |
|
8 |
1 |
0 |
|
88% |
| product_risk_suite/risk_assessment/models.py |
LikelihoodExample.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/risk_assessment/models.py |
_RiskRating__loo_help_list |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
_RiskRating__sev_help_list |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.risk_level |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.risk_level_to_color |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.color_class |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.risk_color_class |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.calc_risk |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.risk |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.color_likelihood_of_occurrence |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.color_severity_of_impact |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskRating.color_risk |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Status.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Status.is_todo |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Status.web_idx_name |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Status.save |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Status.clean |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Evidence.__str__ |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Evidence.color_due_date |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Evidence.scrape_icon_class |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
Evidence.scrape_icon_title |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskMitigation.list_security_requirements |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
RiskMitigation.__str__ |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/models.py |
(no function) |
|
159 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
FreeMethodTests.test_truncate |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
AssetTest.test_simple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
AssetTest.test_unique |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
AssetTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
LifeCycleTest.test_simple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
LifeCycleTest.test_unique |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
LifeCycleTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
OriginTest.test_simple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
OriginTest.test_unique |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
OriginTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementTest.test_simple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementTest.test_unique |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StrideTest.test_simple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StrideTest.test_no_create_unallowed |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StrideTest.test_unique |
|
9 |
2 |
0 |
|
78% |
| product_risk_suite/risk_assessment/tests.py |
StrideTest.test_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskTest.setUp |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskTest.test_simple |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskTest.test_stride_str |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskTest.test_list_strid |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SeverityNameTest.test_human_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
LikelihoodNameTest.test_human_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_risk |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_risk_level |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_risk_level_to_color |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_color_class |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_risk_color_class |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingTest.test_color_props |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StatusTest.setUp |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StatusTest.test_str |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StatusTest.test_is_todo |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StatusTest.test_web_idx_name |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
StatusTest.test_invalid |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.setUp |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.test_str |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.test_color_due_date |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.test_scrape_icon_no_scraper |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.test_scrape_icon_ok |
|
11 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceTest.test_scrape_icon_failed |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceScraperAdminActionTest.setUp |
|
21 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceScraperAdminActionTest.test_run_scraper_now_only_processes_evidences_with_scraper |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceScraperAdminActionTest.test_run_scraper_now_only_processes_evidences_with_scraper.fake_run |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminScrapeStatusTest.setUp |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminScrapeStatusTest.test_no_scraper_renders_nothing |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminScrapeStatusTest.test_successful_scrape_renders_yes_icon |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminScrapeStatusTest.test_failed_scrape_renders_no_icon |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminScrapeStatusTest.test_scrape_bookkeeping_fields_are_readonly |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminReadonlyScrapeFieldsTest.setUp |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminReadonlyScrapeFieldsTest.test_change_form_does_not_expose_editable_inputs |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminReadonlyScrapeFieldsTest.test_post_cannot_change_readonly_scrape_fields |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminReadonlyScrapeFieldsTest.test_change_form_has_test_scraper_button |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminTestScraperViewTest.setUp |
|
11 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminTestScraperViewTest.test_get_is_not_allowed |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminTestScraperViewTest.test_no_scraper_selected_shows_error |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminTestScraperViewTest.test_successful_dry_run_shows_extracted_values |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
EvidenceAdminTestScraperViewTest.test_unauthenticated_is_redirected_to_login |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskMitigationTest.setUp |
|
12 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskMitigationTest.test_str |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskMitigationTest.test_list_sec_req |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SeverityExampleTest.test_simple |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
LikelihoodExampleTest.test_simple |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestedMitigationValidationTest.test_simple |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest._get |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_asset_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_origin_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_lifecycle_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_securityrequirement_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_risk_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_riskmitigation_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_riskrating_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_evidence_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_severityexample_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_likelihoodexample_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAssessmentAdminChangelistTest.test_suggestedmitigationvalidation_changelist |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementAdminTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementAdminTest.test_norm_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementAdminTest.test_short_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementAdminTest.test_description_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAdminTest.setUp |
|
16 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAdminTest.test_stride_str_display_single |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskAdminTest.test_stride_str_display_multiple |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingAdminTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskRatingAdminTest.test_risk_str_display |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementsViewTest.setUp |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementsViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementsViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementsViewTest.test_context_contains_all_requirements |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementsViewTest.test_context_empty_when_no_requirements_exist |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementViewTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementViewTest.test_nonexistent_slug_returns_404 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SecurityRequirementViewTest.test_context_contains_correct_requirement |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.setUp |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_severities_has_five_entries |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_severities_have_str_and_value_keys |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_loos_has_five_entries |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_risk_is_complete_5x5_matrix |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_risk_corner_values |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_risk_color_is_complete_5x5_matrix |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_example_severities_populated |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_example_loos_populated |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_example_severities_empty_without_data |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskInfoViewTest.test_context_example_loos_empty_without_data |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestionViewTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestionViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestionViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestionViewTest.test_nonexistent_id_returns_404 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
SuggestionViewTest.test_context_contains_correct_suggestion |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.setUp |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_default_version_is_1 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_default_is_current_is_true |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_has_newer_version_false_when_current |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_has_newer_version_true_when_not_current |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_str_includes_version_number |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_str_includes_custom_id |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_same_custom_id_different_versions_allowed |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskVersioningModelTest.test_duplicate_custom_id_and_version_raises_integrity_error |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.setUp |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest._post |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_no_checkbox_updates_title_in_place |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_no_checkbox_does_not_create_new_version |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_no_checkbox_keeps_risk_current |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_creates_version_2 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_new_version_has_updated_data |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_new_version_is_current |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_old_version_becomes_not_current |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_old_version_data_is_unchanged |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_copies_stride_to_new_version |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
RiskSaveAsNewVersionFormTest.test_checkbox_redirects_to_new_version_change_form |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/tests.py |
(no function) |
|
177 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/urls.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/views.py |
security_requirements |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/views.py |
security_requirement |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/views.py |
risk_info |
|
19 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/views.py |
suggestion_view |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/risk_assessment/views.py |
EvidenceUpdateProductView.form_valid |
|
23 |
23 |
0 |
|
0% |
| product_risk_suite/risk_assessment/views.py |
EvidenceUpdateProductView.form_invalid |
|
2 |
2 |
0 |
|
0% |
| product_risk_suite/risk_assessment/views.py |
EvidenceUpdateProductView.get_context_data |
|
6 |
6 |
0 |
|
0% |
| product_risk_suite/risk_assessment/views.py |
(no function) |
|
30 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/admin.py |
RemoteCredentialForm._post_clean |
|
5 |
5 |
0 |
|
0% |
| product_risk_suite/scraper/admin.py |
(no function) |
|
27 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/apps.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/management/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/management/commands/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/management/commands/sync_evidence_scrapers.py |
Command.add_arguments |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/scraper/management/commands/sync_evidence_scrapers.py |
Command.handle |
|
5 |
5 |
0 |
|
0% |
| product_risk_suite/scraper/management/commands/sync_evidence_scrapers.py |
Command._run_once |
|
10 |
10 |
0 |
|
0% |
| product_risk_suite/scraper/management/commands/sync_evidence_scrapers.py |
(no function) |
|
12 |
12 |
0 |
|
0% |
| product_risk_suite/scraper/migrations/0001_initial.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/migrations/0002_alter_scraper_credential.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/migrations/0003_assigneemapping.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/migrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
_fernet |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/scraper/models.py |
RemoteCredential.clean |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential.password |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential.password |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential.api_token |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential.api_token |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/models.py |
RemoteCredential._encrypt |
|
3 |
1 |
0 |
|
67% |
| product_risk_suite/scraper/models.py |
RemoteCredential._decrypt |
|
6 |
2 |
0 |
|
67% |
| product_risk_suite/scraper/models.py |
Scraper.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/scraper/models.py |
ScraperStatusMapping.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/scraper/models.py |
AssigneeMapping.__str__ |
|
1 |
1 |
0 |
|
0% |
| product_risk_suite/scraper/models.py |
(no function) |
|
54 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/pathutils.py |
resolve_json_path |
|
17 |
4 |
0 |
|
76% |
| product_risk_suite/scraper/pathutils.py |
resolve_html_value |
|
12 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/pathutils.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/services.py |
run_scraper_for_evidence |
|
33 |
3 |
0 |
|
91% |
| product_risk_suite/scraper/services.py |
test_scraper |
|
28 |
11 |
0 |
|
61% |
| product_risk_suite/scraper/services.py |
_resolve_status |
|
4 |
1 |
0 |
|
75% |
| product_risk_suite/scraper/services.py |
_resolve_responsible |
|
6 |
1 |
0 |
|
83% |
| product_risk_suite/scraper/services.py |
_resolve_from_assignee_mapping |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/services.py |
_mark_failed |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/services.py |
_fetch |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/services.py |
_extract |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/services.py |
(no function) |
|
19 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_json_path_simple |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_json_path_with_index |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_json_path_missing_returns_none |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_html_value_text |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_html_value_attr |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
PathUtilsTest.test_resolve_html_value_missing_returns_none |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RemoteCredentialTest.test_password_round_trip_and_not_stored_plain |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RemoteCredentialTest.test_api_token_round_trip |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RemoteCredentialTest.test_clean_requires_password_for_basic |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RemoteCredentialTest.test_clean_requires_api_token_for_token |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.setUp |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest._mock_response |
|
10 |
1 |
0 |
|
90% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_success_updates_status_and_responsible |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_unmapped_status_is_a_failure |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_unmatched_assignee_still_succeeds |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_unmatched_assignee_unassigns_a_previously_set_responsible |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_network_error_is_a_failure |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_url_outside_credential_domain_is_rejected |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_no_scraper_is_a_noop |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_public_scraper_without_credential |
|
14 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
RunScraperForEvidenceTest.test_html_response_format |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
AssigneeMappingResolutionTest.setUp |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
AssigneeMappingResolutionTest._mock_response |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
AssigneeMappingResolutionTest.test_mapped_assignee_uses_mapped_local_user |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
AssigneeMappingResolutionTest.test_mapping_for_a_different_host_is_ignored |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
AssigneeMappingResolutionTest.test_unmapped_and_unknown_username_is_unassigned |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/scraper/tests.py |
(no function) |
|
49 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/admin.py |
ThreatModelConnectionNameAdmin.product |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/admin.py |
ThreatModelAdmin.product |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/admin.py |
ThreatModelAdmin.available_connections |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/admin.py |
(no function) |
|
17 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/apps.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/0001_initial.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/0002_threatmodelconnectionname_human_name.py |
(no function) |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/0003_threatmodelconnectionname_id.py |
migrate_assign_ids |
|
4 |
2 |
0 |
|
50% |
| product_risk_suite/threat_model/migrations/0003_threatmodelconnectionname_id.py |
(no function) |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/0004_threatmodelconnectionname_primary_key.py |
migrate_pop_tm_cn |
|
7 |
5 |
0 |
|
29% |
| product_risk_suite/threat_model/migrations/0004_threatmodelconnectionname_primary_key.py |
migrate_push_tm_cn |
|
7 |
4 |
0 |
|
43% |
| product_risk_suite/threat_model/migrations/0004_threatmodelconnectionname_primary_key.py |
(no function) |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/0005_threatmodelconnectionname_product.py |
fix_invalid_products |
|
5 |
3 |
0 |
|
40% |
| product_risk_suite/threat_model/migrations/0005_threatmodelconnectionname_product.py |
(no function) |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/migrations/__init__.py |
(no function) |
|
0 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
ThreatModel.__str__ |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
ThreatModel.__remove_svg_attribute |
|
4 |
1 |
0 |
|
75% |
| product_risk_suite/threat_model/models.py |
ThreatModel.__remove_dark_mode_from_style |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
ThreatModel.get_clean_svg_content |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
ThreatModel.list_connection_names |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
ThreatModel.save |
|
12 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/models.py |
(no function) |
|
20 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/shared_models.py |
ThreatModelConnectionName.__str__ |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/shared_models.py |
(no function) |
|
7 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameTest.test_simple |
|
13 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelTest.setUp |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelTest.test_simple |
|
14 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelTest.test_str |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelTest.test_list_connection_names_empty_when_none_assigned |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelTest.test_list_connection_names_returns_tech_names |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
_make_risk |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.setUp |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.test_context_includes_accessible_tm |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.test_context_excludes_inaccessible_tm |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelIndexViewTest.test_context_empty_for_user_without_any_permission |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.setUp |
|
8 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_authenticated_returns_200 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_nonexistent_slug_returns_404 |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_inaccessible_product_returns_404 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_contains_tm |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_svg_content_is_string |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_svg_removes_dark_mode_style |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_risk_entries_empty_when_no_entries_linked |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_names_empty_when_no_entries_linked |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest._setup_risk_entry |
|
10 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_risk_entries_populated_when_entry_linked |
|
6 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelDetailViewTest.test_context_names_populated_when_entry_linked |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelSvgAccessTest.setUp |
|
9 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelSvgAccessTest.test_unauthenticated_redirects_to_login |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelSvgAccessTest.test_authorized_user_gets_200 |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelSvgAccessTest.test_unauthorized_user_gets_403 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelSvgAccessTest.test_unknown_file_gets_404 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminConfigTest.setUp |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminConfigTest.test_list_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminConfigTest.test_exclude |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminConfigTest.test_ordering |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminConfigTest.test_product_method_returns_product_title |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.setUp |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.test_list_display |
|
1 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.test_exclude |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.test_product_method_returns_product_title |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.test_available_connections_zero_when_none |
|
2 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminConfigTest.test_available_connections_counts_linked_names |
|
5 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminViewTest.setUp |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminViewTest.test_changelist_returns_200 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminViewTest.test_changeform_returns_200 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelConnectionNameAdminViewTest.test_changelist_excludes_id_and_product_id_columns |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminViewTest.setUp |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminViewTest.test_changelist_returns_200 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminViewTest.test_changelist_shows_available_connections_column |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminViewTest.test_changeform_returns_200 |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
ThreatModelAdminViewTest.test_changeform_excludes_slug_and_connection_names |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/tests.py |
(no function) |
|
75 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/urls.py |
(no function) |
|
3 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/views.py |
serve_threat_model_svg |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/views.py |
threat_model_index |
|
4 |
0 |
0 |
|
100% |
| product_risk_suite/threat_model/views.py |
threat_model |
|
36 |
5 |
0 |
|
86% |
| product_risk_suite/threat_model/views.py |
(no function) |
|
17 |
0 |
0 |
|
100% |