Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
786 commits
Select commit Hold shift + click to select a range
b16a444
API tests (#684)
MariusBaldovin Aug 29, 2024
9c35e39
362921863: (fix) create device popup view in firefox (#728)
OlgaMardvilko Aug 29, 2024
9193abb
362924178: (fix) change to align information on the welcome modal (#733)
OlgaMardvilko Aug 30, 2024
c2b1971
Fix UI issues (#734)
sofyakurilova Aug 30, 2024
81447a8
363180408: (fix) change callouts show start testrun if no valid devic…
OlgaMardvilko Aug 30, 2024
e6435f3
Add new properties to device configuration (#732)
jboddey Aug 31, 2024
60dcdc8
Prevent Testrun from starting with device if full configuration is no…
jboddey Aug 31, 2024
6b151d7
Remove default values from config for network adapters (#730)
jboddey Aug 31, 2024
d8979fe
Adds device qualification/pilot icon (#727)
sofyakurilova Aug 31, 2024
7ced90d
WIP (#717)
jboddey Aug 31, 2024
406f56c
Adds delete device button (#736)
sofyakurilova Sep 2, 2024
bc9e453
Fix device testing type (#737)
sofyakurilova Sep 2, 2024
14e9f23
Check is value is null, undefined or empty string (#738)
sofyakurilova Sep 2, 2024
4fb2b00
362724933: (feat) add program type to results tab (#739)
OlgaMardvilko Sep 3, 2024
089e170
Fix design issues (#741)
sofyakurilova Sep 3, 2024
481cd06
362646053: (feat) add program icons and change borders in tiles (#745)
OlgaMardvilko Sep 4, 2024
c36ff6f
Adds dialog if profile is successfully saved (#746)
sofyakurilova Sep 4, 2024
ecf2f1e
364545807: (fix) changes to prevent the second callout is hidden (#748)
OlgaMardvilko Sep 5, 2024
2646a2f
Change dialog height on resize (#749)
sofyakurilova Sep 5, 2024
2ed3fa6
When canceling deletion, Create device modal opens (#751)
sofyakurilova Sep 5, 2024
1e1d1e5
364828484: (fix) [GAR 1.1] change program icon aria-label (#752)
OlgaMardvilko Sep 5, 2024
91babe4
Update delete device endpoint (#729)
MariusBaldovin Sep 5, 2024
0a1fb8f
Jinja reports (#714)
hitnik Sep 5, 2024
ac07ce3
364844263: (fix) add styles on hover active device tile (#756)
OlgaMardvilko Sep 6, 2024
c295604
364578734: (fix) change device tile view to meet size (#757)
OlgaMardvilko Sep 6, 2024
d24e32e
Change button type to have the same background color (#758)
sofyakurilova Sep 6, 2024
045dc44
365059335: (fix) [GAR 1.1] change device tile structure to allow read…
OlgaMardvilko Sep 6, 2024
93c0fd6
Change hostname for MQTT service (#759)
sofyakurilova Sep 6, 2024
099902d
Exit with correct return code on api testing (#740)
jboddey Sep 6, 2024
5649a60
Update cryptography dependency (#755)
jboddey Sep 6, 2024
4d45428
Adding concept of test packs (#723)
jboddey Sep 6, 2024
ba98a66
Add dhcp_disconnect_ip_change test (#743)
jhughesoti Sep 9, 2024
894171f
No update from BE of test status results during testrun (#761)
sofyakurilova Sep 9, 2024
eaad969
Fix text for High risk profile save window (#762)
sofyakurilova Sep 9, 2024
e14f028
Focus selected item on save (#754)
sofyakurilova Sep 9, 2024
391f161
Focus first interactive element on redirect to risk assessment (#763)
sofyakurilova Sep 9, 2024
16a7950
Adds dynamic top property to callouts (#765)
sofyakurilova Sep 10, 2024
6fab65b
Added test for 'system/testpacks' endpoint, fixed typing error in api…
MariusBaldovin Sep 12, 2024
5ffd1f9
362959152: (feat) add testing complete modal (#770)
OlgaMardvilko Sep 12, 2024
f626ec4
Listen callout resize event, not window resize event (#769)
sofyakurilova Sep 12, 2024
25fa4dc
Add dhcp disconnect tests to qual test pack (#771)
jhughesoti Sep 13, 2024
b4ec5b4
Move bottom callouts to top when callout is destroyed; fix css select…
sofyakurilova Sep 13, 2024
9db6f39
Filter devices to open device dialog if all devices are outdated (#774)
sofyakurilova Sep 13, 2024
3f095c2
Rename column "Program" to "Assessment type" (#775)
sofyakurilova Sep 13, 2024
054815f
Hide "Create" text in edit mode (#773)
sofyakurilova Sep 16, 2024
0038600
Prevent default event (#777)
sofyakurilova Sep 16, 2024
12782df
Show success dialog only for valid risk profile (#779)
sofyakurilova Sep 16, 2024
6c82ae9
Filter Not Started tests from test count (#778)
sofyakurilova Sep 16, 2024
78679ce
Change version label (#780)
sofyakurilova Sep 17, 2024
3d6c4eb
Display tags for Testrun progress page (#781)
sofyakurilova Sep 17, 2024
c63e70e
365728028: (feat) improve callouts (#782)
OlgaMardvilko Sep 17, 2024
2181c8d
367673910: (fix) prevent download PDF report button focused twice on …
OlgaMardvilko Sep 18, 2024
493ca67
Fix tags (#786)
sofyakurilova Sep 18, 2024
9220494
Console errors on starting the test attempt (#784)
sofyakurilova Sep 18, 2024
eac2e85
366014294: (feat) update callouts logic (#787)
OlgaMardvilko Sep 18, 2024
8248696
Destroy "waiting for device" snackbar when status changed (#788)
sofyakurilova Sep 18, 2024
c252fdb
Mark dirty only multi select control when tab navigation (#789)
sofyakurilova Sep 19, 2024
1d451de
Adds focus flow after closing download zip/testing complete dialog (#…
sofyakurilova Sep 20, 2024
1347033
Remove tooltip from link (#793)
sofyakurilova Sep 20, 2024
f09aac4
Adds aria label; code refactoring (#790)
sofyakurilova Sep 20, 2024
a9e7d87
Add mac address filter for the device interface to single ip test (#791)
jhughesoti Sep 23, 2024
f33f107
Do not show "Save changes" dialog when there is no changes in profile…
sofyakurilova Sep 23, 2024
b89afd8
Risk profile completed modal: the redundant information is communica…
sofyakurilova Sep 23, 2024
c14c8bb
Adds timeout to allow screen reader to detect changes and pronounce t…
sofyakurilova Sep 23, 2024
3f8ea7c
Adds button action on space click
sofyakurilova Sep 23, 2024
7049707
Adds focus trap
sofyakurilova Sep 23, 2024
727f1ea
Fix tests
sofyakurilova Sep 23, 2024
f43519a
369106935: (fix) [a11y] make focused element announced (#807)
OlgaMardvilko Sep 24, 2024
7b8bf72
Focus with delay to allow screen reader detect changes
sofyakurilova Sep 24, 2024
6b31410
Focus risk assessment link when appears
sofyakurilova Sep 24, 2024
d85e792
369314564: (fix) set focus after callout dismissed (#812)
OlgaMardvilko Sep 25, 2024
9df0cd7
369312866: (fix) set focus after welcome modal is closed (#813)
OlgaMardvilko Sep 25, 2024
9e22f0d
Fix profiles page style to fit the screen
sofyakurilova Sep 24, 2024
3fa26ad
Improve style for buttons
sofyakurilova Sep 25, 2024
b689291
Improve style for buttons
sofyakurilova Sep 25, 2024
3753427
358071738: (feat) prevent listening mgtt internet connect event in si…
OlgaMardvilko Sep 25, 2024
b10a023
remove singl_intf parameter from start_ui
hitnik Sep 20, 2024
81b759e
single_intf config parameter
hitnik Sep 20, 2024
9f39f1d
added test_get_devices_format (#809)
MariusBaldovin Sep 25, 2024
1acb918
Fix condition to show dialog on name change
sofyakurilova Sep 25, 2024
bf12aa7
Fix tests
sofyakurilova Sep 25, 2024
4b4cd37
365978129: (feat) add PDF report templates (#801)
OlgaMardvilko Sep 26, 2024
957ba71
369538601: (fix) set focus to first interactive elem after stop test …
OlgaMardvilko Sep 26, 2024
aa570c2
Remove steps to resolve from information tests (#817)
jboddey Sep 26, 2024
5ee5374
369327155: (fix) set focus to selected risk profile if no changes on …
OlgaMardvilko Sep 27, 2024
de3cec8
Prevent default event
sofyakurilova Sep 26, 2024
5a49438
Adds simple dialog announcement
sofyakurilova Sep 27, 2024
291e603
Fix tests
sofyakurilova Sep 27, 2024
eccfb23
Return focus on previous active element
sofyakurilova Sep 27, 2024
e028128
remove vsa tag (#823)
jhughesoti Sep 27, 2024
1846b16
Fix baseline tests (#821)
MariusBaldovin Sep 30, 2024
c65f0a1
Active delete button on space and enter
sofyakurilova Sep 30, 2024
f226d78
369779748: (fix) add field name to validation rule for announce by Sc…
OlgaMardvilko Sep 30, 2024
7490c60
Add delay and fix dialog open configuration
sofyakurilova Sep 30, 2024
ccb8cea
Fix tests
sofyakurilova Sep 30, 2024
326b810
367979183: (fix) announce the result and description on completed tes…
OlgaMardvilko Sep 30, 2024
8087d14
Add optional recommendations for informational tests on pilot devices…
jboddey Sep 30, 2024
4a02251
select row on enter and space
sofyakurilova Sep 30, 2024
a2b7631
369542969: (fix) announce completed test modal (#832)
OlgaMardvilko Sep 30, 2024
464c6e8
fixed _ load_version (#828)
MariusBaldovin Sep 30, 2024
9fa3290
Feature/tls 1.0 (#783)
jhughesoti Oct 1, 2024
70d9f16
fix device disconnected whilst monitoring (#830)
hitnik Oct 1, 2024
d968d27
369538601: (fix) focus first interactive elem on start or stop testru…
OlgaMardvilko Oct 1, 2024
ac769d5
Adds deactivate guard for devices page
sofyakurilova Oct 1, 2024
3dd014b
Fix audit
sofyakurilova Oct 1, 2024
25df584
369788198: (fix) validation message alignment on create device (#842)
OlgaMardvilko Oct 2, 2024
11d61b1
370729271: (fix) remove asterisks on the questions in the device flow…
OlgaMardvilko Oct 2, 2024
b1c4f7b
framework/unit_tests (#841)
jhughesoti Oct 2, 2024
01b6601
370711565: (fix) changes for informational test result (#844)
OlgaMardvilko Oct 2, 2024
ebf87b7
Add role and aria-live for screen reader
sofyakurilova Oct 2, 2024
5fbacca
370923173: (fix) remove close button from the certificates panel (#847)
OlgaMardvilko Oct 2, 2024
a69409a
Change text in risk dialog
sofyakurilova Oct 2, 2024
780d3c4
Revised device qualification PDF report and Pilot PDF report. The rep…
hitnik Oct 2, 2024
416e288
Switch test modules base image to pytho:3.10-slim image (#833)
jhughesoti Oct 2, 2024
6b487b8
Change description for NTP test failure (#835)
jboddey Oct 2, 2024
76d8256
370012527: (feat) update PDF reports styles (#850)
OlgaMardvilko Oct 3, 2024
2f63319
Update docs (#839)
jboddey Oct 3, 2024
39e176d
Perform some refactoring (#846)
jboddey Oct 3, 2024
139f03f
Fix report_test.py tests (#848)
MariusBaldovin Oct 4, 2024
3471b1b
369538601: (fix) set focus to first interactive elem after stop test …
OlgaMardvilko Oct 7, 2024
4943253
371506031: (fix) make the welcome modal be on top completed test moda…
OlgaMardvilko Oct 7, 2024
6371363
366151318: (fix) add communicate steps on create device (#851)
OlgaMardvilko Oct 7, 2024
c8ab340
370941517: (fix) return focus to initial btn after cancel download zi…
OlgaMardvilko Oct 7, 2024
61a1ef8
371177676: (fix) set focus to the initial device if cancel on edit de…
OlgaMardvilko Oct 7, 2024
e2972b6
371525395: (fix) exclude error status from count of completed test re…
OlgaMardvilko Oct 8, 2024
29e65d9
371948760: (fix) set focus to first interactive elem after start test…
OlgaMardvilko Oct 8, 2024
b7b3944
feature/dns_module_resolved_ips (#862)
jhughesoti Oct 8, 2024
cc3ef21
stop monitoring when test run is cancelled (#855)
hitnik Oct 8, 2024
d52b29b
session/remove_invalid_questions (#834)
MariusBaldovin Oct 8, 2024
2b01d51
API tests (#766)
MariusBaldovin Oct 8, 2024
d0c31fd
371525174: (fix) update ui on PDF report (#866)
OlgaMardvilko Oct 8, 2024
e46a9c0
Fix navigation structure in PDF report (#867)
jboddey Oct 9, 2024
65c74ed
copy a device profile questionnaire to risk profile
hitnik Oct 7, 2024
57fada4
device risk to risk_profile risk
hitnik Oct 8, 2024
9800a1c
page counter
hitnik Oct 9, 2024
94a3a9d
bold table headers
hitnik Oct 9, 2024
a9e35b9
test report duration format
hitnik Oct 9, 2024
01222a5
372610099: (fix) update the text for Risk assessment complete modal (…
OlgaMardvilko Oct 10, 2024
35358b2
fix sensitive info risk
hitnik Oct 10, 2024
7a4b88f
Remove global app component store
sofyakurilova Oct 15, 2024
0ea6aaa
372804973: (fix) make risk profile names not case sensitive (#882)
OlgaMardvilko Oct 15, 2024
9daa9d3
370942396: (fix) change create device errors and program styles for i…
OlgaMardvilko Oct 15, 2024
49df261
Adds action value instead of null, undefined, string; move common fun…
sofyakurilova Oct 16, 2024
a682b9a
369806347: (fix) improve unit tests (#887)
OlgaMardvilko Oct 16, 2024
547a41e
Send event to GA when test run is completed for Pilot program
sofyakurilova Oct 16, 2024
6181a72
373617780: (fix) change to allow MAC address error text move on to ne…
OlgaMardvilko Oct 16, 2024
1c9bb38
Answers per page calculation refactor (#884)
hitnik Oct 17, 2024
50fef24
Send event to GA when Pilot zip is downloaded
sofyakurilova Oct 16, 2024
a3a238a
Fix tests
sofyakurilova Oct 17, 2024
71c7581
373855404: (fix) allow to change case of letters for existing profile…
OlgaMardvilko Oct 17, 2024
58d52ef
Device endpoints (#872)
MariusBaldovin Oct 17, 2024
d3206dd
Profiles endpoint (#870)
MariusBaldovin Oct 17, 2024
0c14365
Reports endpoint (#868)
MariusBaldovin Oct 17, 2024
515aa7d
Certificates endpoint (#861)
MariusBaldovin Oct 17, 2024
a81d9b1
Remove v from firmware version in UI (#897)
jboddey Oct 18, 2024
fa0de21
372768360: (feat) [Settings] only device port is enabled in no intern…
OlgaMardvilko Oct 18, 2024
fc46050
Change error message
sofyakurilova Oct 18, 2024
5a0ac68
Fix tests
sofyakurilova Oct 18, 2024
46c39ea
Update statuses.md (#894)
jboddey Oct 18, 2024
e3e6e1a
Add release 2.0 fixes to dev (#879)
jboddey Oct 18, 2024
85244da
Fix spelling mistake in report (#902)
jboddey Oct 18, 2024
0715cef
Hide complete dialog if test run is missing in reports
sofyakurilova Oct 21, 2024
5ee001b
374055268: (fix) prevent overwrite copied profile (#909)
OlgaMardvilko Oct 21, 2024
7247ac4
Update dependencies (#903)
jboddey Oct 21, 2024
9a99c45
Merge hotfix into dev (#911)
jboddey Oct 22, 2024
0d9f64a
The link provided in the risk profile answers is not clickable (#908)
sofyakurilova Oct 22, 2024
c5a2a04
Catch invalid device config nicely (#912)
jboddey Oct 22, 2024
1589978
Check if dhcp-1.pcap exists (#913)
jboddey Oct 22, 2024
f86804d
Skip first default values to display error correctly
sofyakurilova Oct 23, 2024
ccddc4d
updated package.yml to start testrun and check if successfully starte…
MariusBaldovin Oct 23, 2024
837be6a
Add better error handling to port stat tests (#914)
jboddey Oct 23, 2024
fccc586
374258745: (fix) [PDF report] wrap long words into the next line to p…
OlgaMardvilko Oct 24, 2024
5b021df
Adds separate method for value
sofyakurilova Oct 24, 2024
ce95c24
375367968: (fix) [Setting panel] remove callout about two ports warni…
OlgaMardvilko Oct 25, 2024
30d0ac9
374084009: Fix error on restoring DHCP server configuration if device…
jboddey Oct 28, 2024
aadb7a0
updated readme.md (#926)
MariusBaldovin Oct 29, 2024
851981c
Upload cert - error handling (#924)
MariusBaldovin Oct 29, 2024
3c0e8d4
Feature/cli no UI (#916)
jhughesoti Oct 29, 2024
ab785be
Connection/README.md (#937)
MariusBaldovin Oct 31, 2024
e8a8593
Disable MQTT log (#930)
jboddey Oct 31, 2024
1fe91e4
corrected mistake on vnc (#940)
MariusBaldovin Oct 31, 2024
2dac94e
remove dublicate tests from the TLS test module (#942)
hitnik Oct 31, 2024
dbece93
tls/README.md (#941)
MariusBaldovin Oct 31, 2024
c048531
updated protocol/README.md (#939)
MariusBaldovin Oct 31, 2024
bcf35c7
update readme.mf for dns module (#938)
MariusBaldovin Oct 31, 2024
64c8fc9
updated postman file (#865)
MariusBaldovin Oct 31, 2024
c56adac
Scapy update to 2.6.0 (#943)
MariusBaldovin Oct 31, 2024
20974d9
added procps package in base container (#945)
MariusBaldovin Nov 4, 2024
23a3201
remove the mqtt debug line (#944)
MariusBaldovin Nov 4, 2024
eb7f292
Unit tests (#946)
MariusBaldovin Nov 4, 2024
f66cd75
Fix security.services.vnc test (#921)
MariusBaldovin Nov 4, 2024
84c354b
Change test in Delete Report Dialog
sofyakurilova Nov 4, 2024
4ac264e
Fix style
sofyakurilova Nov 4, 2024
bc8a1fe
added error handling if 200~dhcp-1.pcap is empty (#949)
MariusBaldovin Nov 4, 2024
bc986de
Add communication network type test (#950)
jhughesoti Nov 4, 2024
f60af44
Adds tooltip for title
sofyakurilova Nov 6, 2024
ee105a3
Fix is based on console error
sofyakurilova Nov 6, 2024
7af5b42
Feature/sys test timeout (#951)
jhughesoti Nov 6, 2024
8b98a5f
374289627: (fix) change the report url from static to dynamic (#954)
OlgaMardvilko Nov 7, 2024
bb9c98a
Pin python requirements (#764)
jhughesoti Nov 7, 2024
18c9752
typo error (#961)
MariusBaldovin Nov 12, 2024
f163711
Conn/module_config typo errors (#959)
MariusBaldovin Nov 12, 2024
33db0a9
conn/ipv6_slaac (#962)
MariusBaldovin Nov 12, 2024
c22457e
Fix tls error result (#963)
jhughesoti Nov 13, 2024
a42de22
Add BACnet test and extend port scan (#957)
jboddey Nov 13, 2024
de942c2
Error handling for connection module (#960)
MariusBaldovin Nov 13, 2024
755c717
Adds coverage check
sofyakurilova Nov 18, 2024
dba5024
Adds coverage check
sofyakurilova Nov 18, 2024
5bb6bb0
Adds coverage check
sofyakurilova Nov 18, 2024
015270a
Fix floating test issue
sofyakurilova Nov 19, 2024
a5ff62a
Fix permissions of resources folder during install (#974)
jboddey Nov 20, 2024
a9a1420
Only run tests if they are included in the device's test pack (#956)
jboddey Nov 21, 2024
de47f2d
changed the logic to display the description when test is non complia…
MariusBaldovin Nov 21, 2024
1c209d5
fix chrony install error (#979)
hitnik Nov 21, 2024
8ac041d
Error handling when lease is None (#981)
MariusBaldovin Nov 22, 2024
9af06af
Bacnet traceback error (#989)
MariusBaldovin Nov 25, 2024
561ddc1
Feature/tls module report (#871)
jhughesoti Nov 29, 2024
1a45400
Initialize listener every time (#990)
jhughesoti Nov 29, 2024
fc6738c
Merge release changes into dev (#1030)
jboddey Dec 20, 2024
3248a64
Update Crypto and Jinja libraries (#1038)
jboddey Jan 2, 2025
cadb6bf
Added debug message in case users enters an incorrect device mac addr…
MariusBaldovin Jan 3, 2025
cca00ab
Allow NTPv3 packets (#1048)
jboddey Jan 6, 2025
d6b5231
Re-render device profile (#1050)
MariusBaldovin Jan 8, 2025
421e52d
Handling error if profile name contains special characters (#1043)
MariusBaldovin Jan 8, 2025
390b572
389661817: (feat) change profile name validation (#1057)
OlgaMardvilko Jan 14, 2025
3365ab3
Add column; change pilot text; change order of columns
sofyakurilova Jan 14, 2025
2d9d145
389657377: (feat) add status Starting to UI (#1062)
OlgaMardvilko Jan 15, 2025
95011c0
Add full port scan to determine any HTTPS/TLS server running on non-s…
jhughesoti Jan 16, 2025
7d050aa
Remove 'v' from testing complete modal (#1063)
jboddey Jan 16, 2025
237223a
384421113: Add starting status (#1032)
jboddey Jan 17, 2025
0b36aa2
Pin download artifact actions (#1065)
jboddey Jan 17, 2025
d3ff78e
Adds statuses for Testing complete modal
sofyakurilova Jan 21, 2025
472f253
Profile export endpoint (#1052)
MariusBaldovin Jan 27, 2025
c251c99
Fix protocol.services.bacnet (#1082)
MariusBaldovin Jan 28, 2025
0285f49
tr-ws/tr-ui containers (#1089)
MariusBaldovin Jan 30, 2025
5055ac1
Generating module reports using Jinja2 (#1073)
hitnik Jan 31, 2025
9bbc3a9
Update dependencies; increase budget
sofyakurilova Jan 31, 2025
eec9cfd
Add a disclaimer about tests affected by single interface mode (#1056)
jboddey Jan 31, 2025
4df99ec
Update TLS client description (#1097)
jboddey Feb 2, 2025
6868082
Set test description for module timeout (#1098)
jboddey Feb 3, 2025
86aade5
Fix services resolving wrong ip (#1096)
jhughesoti Feb 7, 2025
270eadd
384032243: Rename test result to pilot recommendation (#1031)
jboddey Feb 11, 2025
fae4954
fixed reports unittest (#1110)
MariusBaldovin Feb 12, 2025
9ad56ff
Resolve merge conflicts
jboddey Feb 12, 2025
985d58f
Update dependencies and bump version
jboddey Feb 12, 2025
495d8e4
fix failed tests
Feb 12, 2025
8ba6792
Fix mock (#1116)
sofyakurilova Feb 12, 2025
e2dd655
Prevent send new request before previous is finished
sofyakurilova Feb 12, 2025
c33e642
remove steps_to_resolve logs (#1119)
MariusBaldovin Feb 13, 2025
947a5bb
Remove word Preliminary from pdf report
sofyakurilova Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Checkout source
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download package
uses: actions/download-artifact@v4
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: testrun_package
- name: Install dependencies
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
- name: Checkout source
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download package
uses: actions/download-artifact@v4
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: testrun_package
- name: Install dependencies
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
- name: Checkout source
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download package
uses: actions/download-artifact@v4
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: testrun_package
- name: Install dependencies
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,6 @@ jobs:
- name: Install Testrun
shell: bash {0}
run: cmd/install -l
- name: Build Testrun
shell: bash {0}
run: cmd/build
timeout-minutes: 10
- name: Run tests for conn module
shell: bash {0}
run: bash testing/unit/run_test_module.sh conn captures ethtool output
Expand Down
111 changes: 110 additions & 1 deletion docs/dev/mockoon.json

Large diffs are not rendered by default.

898 changes: 891 additions & 7 deletions docs/dev/postman.json

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion docs/get_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ Follow these steps to start Testrun:
1. Start Testrun with the command `sudo testrun`
- To run Testrun in network-only mode (without running any tests), use the `--net-only` option.
- To run Testrun with just one interface (connected to the device), use the `--single-intf` option.


**Note**: Tests that require an internet connection (e.g TLS client, DNS) will produce a non-compliant result.

## Test your device

Expand Down
117 changes: 107 additions & 10 deletions framework/python/src/api/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
DEVICE_ADDITIONAL_INFO_KEY = "additional_info"

DEVICES_PATH = "local/devices"
PROFILES_PATH = "local/risk_profiles"

RESOURCES_PATH = "resources"
DEVICE_FOLDER_PATH = "devices"
Expand Down Expand Up @@ -133,6 +134,9 @@ def __init__(self, testrun):
self._router.add_api_route("/profiles",
self.delete_profile,
methods=["DELETE"])
self._router.add_api_route("/profile/{profile_name}",
self.export_profile,
methods=["POST"])

# Allow all origins to access the API
origins = ["*"]
Expand Down Expand Up @@ -278,7 +282,8 @@ async def start_testrun(self, request: Request, response: Response):
TestrunStatus.IN_PROGRESS,
TestrunStatus.WAITING_FOR_DEVICE,
TestrunStatus.MONITORING,
TestrunStatus.VALIDATING
TestrunStatus.VALIDATING,
TestrunStatus.STARTING

]:
LOGGER.debug("Testrun is already running. Cannot start another instance")
Expand Down Expand Up @@ -341,7 +346,8 @@ async def stop_testrun(self, response: Response):
not in [TestrunStatus.IN_PROGRESS,
TestrunStatus.WAITING_FOR_DEVICE,
TestrunStatus.MONITORING,
TestrunStatus.VALIDATING]):
TestrunStatus.VALIDATING,
TestrunStatus.STARTING]):
response.status_code = 404
return self._generate_msg(False, "Testrun is not currently running")

Expand All @@ -359,8 +365,9 @@ def shutdown(self, response: Response):
# Check that Testrun is not currently running
if (self._session.get_status()
not in [TestrunStatus.CANCELLED,
TestrunStatus.COMPLIANT,
TestrunStatus.NON_COMPLIANT,
TestrunStatus.PROCEED,
TestrunStatus.DO_NOT_PROCEED,
TestrunStatus.COMPLETE,
TestrunStatus.IDLE
]):
LOGGER.debug("Unable to shutdown Testrun as Testrun is in progress")
Expand Down Expand Up @@ -521,12 +528,14 @@ async def delete_device(self, request: Request, response: Response):
if (self._session.get_target_device() == device
and self._session.get_status()
not in [TestrunStatus.CANCELLED,
TestrunStatus.COMPLIANT,
TestrunStatus.NON_COMPLIANT
TestrunStatus.COMPLETE,
TestrunStatus.PROCEED,
TestrunStatus.DO_NOT_PROCEED
]):

response.status_code = 403
return self._generate_msg(
False, "Cannot delete this device whilst " + "it is being tested")
False, "Cannot delete this device whilst it is being tested")

# Delete device
self._testrun.delete_device(device)
Expand All @@ -540,7 +549,7 @@ async def delete_device(self, request: Request, response: Response):
LOGGER.error(e)
response.status_code = 500
return self._generate_msg(
False, "An error occured whilst deleting " + "the device")
False, "An error occured whilst deleting the device")

async def save_device(self, request: Request, response: Response):
LOGGER.debug("Received device post request")
Expand Down Expand Up @@ -644,8 +653,9 @@ async def edit_device(self, request: Request, response: Response):
if (self._session.get_target_device() == device
and self._session.get_status()
not in [TestrunStatus.CANCELLED,
TestrunStatus.COMPLIANT,
TestrunStatus.NON_COMPLIANT
TestrunStatus.COMPLETE,
TestrunStatus.PROCEED,
TestrunStatus.DO_NOT_PROCEED
]):
response.status_code = 403
return self._generate_msg(
Expand Down Expand Up @@ -926,6 +936,93 @@ async def delete_profile(self, request: Request, response: Response):

return self._generate_msg(True, "Successfully deleted that profile")

async def export_profile(self, request: Request, response: Response,
profile_name):

LOGGER.debug(f"Received get profile request for {profile_name}")

device = None

try:
req_raw = (await request.body()).decode("UTF-8")
req_json = json.loads(req_raw)

# Check if device mac_addr has been specified
if "mac_addr" in req_json and len(req_json.get("mac_addr")) > 0:
device_mac_addr = req_json.get("mac_addr")
device = self.get_session().get_device(device_mac_addr)

# If device is not found return 404
if device is None:
response.status_code = status.HTTP_404_NOT_FOUND
return self._generate_msg(
False, "A device with that mac address could not be found")

except JSONDecodeError:
# Device not specified
pass

# Retrieve the profile
profile = self._session.get_profile(profile_name)

# If the profile not found return 404
if profile is None:
LOGGER.info("Profile not found, returning 404")
response.status_code = 404
return self._generate_msg(False, "Profile could not be found")

# If device has been added into the body
if device:

try:

# Path where the PDF will be saved
profile_pdf_path = os.path.join(PROFILES_PATH, f"{profile_name}.pdf")

# Write the PDF content
with open(profile_pdf_path, "wb") as f:
f.write(profile.to_pdf(device).getvalue())

# Return the pdf file
if os.path.isfile(profile_pdf_path):
return FileResponse(profile_pdf_path)
else:
LOGGER.info("Profile could not be found, returning 404")
response.status_code = 404
return self._generate_msg(False, "Profile could not be found")

# Exceptions if the PDF creation fails
except Exception as e:
LOGGER.error(f"Error creating the profile PDF: {e}")
response.status_code = 500
return self._generate_msg(False, "Error retrieving the profile PDF")

# If device not added into the body
else:

try:

# Path where the PDF will be saved
profile_pdf_path = os.path.join(PROFILES_PATH, f"{profile_name}.pdf")

# Write the PDF content
with open(profile_pdf_path, "wb") as f:
f.write(profile.to_pdf_no_device().getvalue())

# Return the pdf file
if os.path.isfile(profile_pdf_path):
return FileResponse(profile_pdf_path)
else:
LOGGER.info("Profile could not be found, returning 404")
response.status_code = 404
return self._generate_msg(False, "Profile could not be found")

# Exceptions if the PDF creation fails
except Exception as e:
LOGGER.error(f"Error creating the profile PDF: {e}")
response.status_code = 500
return self._generate_msg(False, "Error retrieving the profile PDF")

# Certificates
def get_certs(self):
LOGGER.debug("Received certs list request")
Expand Down
48 changes: 44 additions & 4 deletions framework/python/src/common/risk_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ def to_html(self, device):
logo_img_b64 = base64.b64encode(f.read()).decode('utf-8')

self._device = self._format_device_profile(device)
pages = self._generate_report_pages()
pages = self._generate_report_pages(device)
return self._template.render(
styles=self._template_styles,
manufacturer=self._device.manufacturer,
Expand All @@ -366,7 +366,33 @@ def to_html(self, device):
created_at=self.created.strftime('%d.%m.%Y')
)

def _generate_report_pages(self):
def to_html_no_device(self):
"""Returns the risk profile in HTML format without device info"""

high_risk_message = '''The device has been assessed to be high
risk due to the nature of the answers provided
about the device functionality.'''
limited_risk_message = '''The device has been assessed to be limited risk
due to the nature of the answers provided about
the device functionality.'''

with open(test_run_img_file, 'rb') as f:
logo_img_b64 = base64.b64encode(f.read()).decode('utf-8')

pages = self._generate_report_pages()
return self._template.render(
styles=self._template_styles,
logo=logo_img_b64,
risk=self.risk,
high_risk_message=high_risk_message,
limited_risk_message=limited_risk_message,
pages=pages,
total_pages=len(pages),
version=self.version,
created_at=self.created.strftime('%d.%m.%Y')
)

def _generate_report_pages(self, device=None):

# Text block heght
block_height = 18
Expand All @@ -391,8 +417,11 @@ def _generate_report_pages(self):
current_page = []
index = 1

questions = deepcopy(self._device.additional_info)
questions.extend(self.questions)
questions = deepcopy(self.questions)

if device:
questions = deepcopy(self._device.additional_info)
questions.extend(self.questions)

for question in questions:

Expand Down Expand Up @@ -456,6 +485,17 @@ def to_pdf(self, device):
HTML(string=html).write_pdf(pdf_bytes)
return pdf_bytes

def to_pdf_no_device(self):
"""Returns the risk profile in PDF format without device info"""

# Resolve the data as html first
html = self.to_html_no_device()

# Convert HTML to PDF in memory using weasyprint
pdf_bytes = BytesIO()
HTML(string=html).write_pdf(pdf_bytes)
return pdf_bytes

# Adding risks to device profile questions
def _format_device_profile(self, device):
device_copy = deepcopy(device)
Expand Down
12 changes: 10 additions & 2 deletions framework/python/src/common/statuses.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,26 @@


class TestrunStatus:
"""Statuses for overall testing"""
IDLE = "Idle"
STARTING = "Starting"
WAITING_FOR_DEVICE = "Waiting for Device"
MONITORING = "Monitoring"
IN_PROGRESS = "In Progress"
CANCELLED = "Cancelled"
COMPLIANT = "Compliant"
NON_COMPLIANT = "Non-Compliant"
STOPPING = "Stopping"
VALIDATING = "Validating Network"
COMPLETE = "Complete"
PROCEED = "Proceed"
DO_NOT_PROCEED = "Do Not Proceed"

class TestrunResult:
"""Statuses for the Testrun result"""
COMPLIANT = "Compliant"
NON_COMPLIANT = "Non-Compliant"

class TestResult:
"""Statuses for test results"""
IN_PROGRESS = "In Progress"
COMPLIANT = "Compliant"
NON_COMPLIANT = "Non-Compliant"
Expand Down
Loading
Loading