Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
286 changes: 117 additions & 169 deletions docs/dev/mockoon.json

Large diffs are not rendered by default.

35 changes: 3 additions & 32 deletions framework/python/src/core/testrun.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
DEVICE_TEST_PACK_KEY = 'test_pack'
DEVICE_ADDITIONAL_INFO_KEY = 'additional_info'
DEVICE_REPORT_NAME_FORMAT = '{mac_addr}_{timestamp}'
DEVICE_QUESTIONS_FILE_NAME = 'device_profile.json'

MAX_DEVICE_REPORTS_KEY = 'max_device_reports'

Expand Down Expand Up @@ -284,37 +283,9 @@ def _load_devices(self, device_dir):
device.additional_info = device_config_json.get(
DEVICE_ADDITIONAL_INFO_KEY)

format_file_path = os.path.join(self.get_root_dir(),
RESOURCE_DEVICES_DIR,
DEVICE_QUESTIONS_FILE_NAME)
with open(format_file_path, 'r', encoding='utf-8') as f:
format_data = json.load(f)

required_questions = [
item['question'] for item in format_data
if item.get('validation', {}).get('required') is True
]

current_answers = \
device.additional_info if device.additional_info else []
answered_questions = \
[entry.get('question') for entry in current_answers]

missing_answers = [q for q in required_questions if
q not in answered_questions]

if (None in [device.type, device.technology, device.test_pack] or
len(missing_answers) > 0):
if missing_answers:
LOGGER.warning(
f'Device : {device}'
)
LOGGER.warning(
f'Device is missing required additional info: {missing_answers}'
)
else:
LOGGER.warning(
'Device is outdated and requires further configuration')
if None in [device.type, device.technology, device.test_pack]:
LOGGER.warning(
'Device is outdated and requires further configuration')
device.status = 'Invalid'

if not device.get_reports():
Expand Down
2 changes: 1 addition & 1 deletion make/DEBIAN/control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Package: Testrun
Version: 2.4.0-beta.3
Version: 2.4.0-beta.2
Architecture: amd64
Maintainer: Google <ssm-orcas@google.com>
Homepage: https://github.com/google/testrun
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ <h2 tabindex="-1">Welcome to Testrun!</h2>
>
to share you thoughts
</li>
<li>Risk Profile was lastly updated in 2026 V2.4.0</li>
</ul>
</section>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type DialogData = {

@Component({
selector: 'app-consent-dialog',

imports: [
MatDialogModule,
MatButtonModule,
Expand Down
1 change: 1 addition & 0 deletions modules/ui/src/app/components/version/version.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export const INSTALLED_VERSION = 'INSTALLED_VERSION';
declare const gtag: Function;
@Component({
selector: 'app-version',

imports: [CommonModule, MatButtonModule, MatDialogModule],
templateUrl: './version.component.html',
styleUrls: ['./version.component.scss'],
Expand Down
53 changes: 0 additions & 53 deletions resources/devices/device_profile.json
Original file line number Diff line number Diff line change
Expand Up @@ -402,58 +402,5 @@
"id": 3
}
]
},
{
"id": 7,
"question": "Does the device UI web dashboard have a mechanism to enforce the change of default passwords, SSH, Hardcoded Accounts Credentials and factory-default API keys upon first use?",
"validation": { "required": true },
"type": "select",
"options": [
{ "id": 1, "text": "Yes, mandatory change required", "risk": "Limited" },
{ "id": 2, "text": "Yes, but can be bypassed", "risk": "High" },
{ "id": 3, "text": "No, default credentials remain", "risk": "High" },
{ "id": 4, "text": "N/A (No password-based login)", "risk": "High" }
]
},
{
"id": 8,
"question": "Does the device support encrypted management protocols (e.g., HTTPS, SSHv2, TLS 1.2, or TLS 1.3)?",
"validation": { "required": true },
"type": "select",
"options": [
{ "id": 1, "text": "Yes, only encrypted protocols", "risk": "Limited" },
{ "id": 2, "text": "Yes, but unencrypted protocols (HTTP/Telnet) are also available", "risk": "High" },
{ "id": 3, "text": "No, only unencrypted protocols are supported", "risk": "High" }
]
},
{
"id": 9,
"question": "How are firmware updates delivered and verified on the device?",
"validation": { "required": true },
"type": "select",
"options": [
{ "id": 1, "text": "Automatic updates with cryptographic signature verification", "risk": "Limited" },
{ "id": 2, "text": "Manual updates with cryptographic signature verification", "risk": "Limited" },
{ "id": 3, "text": "Manual updates without signature verification", "risk": "High" },
{ "id": 4, "text": "The device does not support firmware updates", "risk": "High" }
]
},
{
"id": 10,
"question": "Does the device include physical tamper-resistant features?",
"validation": { "required": true },
"type": "select",
"options": [
{
"id": 1,
"text": "Yes, includes physical seals or chassis intrusion detection",
"risk": "Limited"
},
{
"id": 2,
"text": "No physical tamper protection",
"risk": "High"
}
]
}
]
Loading
Loading