Skip to content

Commit

Permalink
Merge pull request #305 from freedomofpress/281-preflight-checks
Browse files Browse the repository at this point in the history
Add sd-export-config.json in sd-export VMs
  • Loading branch information
conorsch authored Aug 8, 2019
2 parents 7b4ee1e + 6bdff92 commit 92d0006
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
19 changes: 19 additions & 0 deletions dom0/sd-export-files.sls
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,22 @@ sd-export-securedrop-icon:
- group: root
- mode: 644
- makedirs: True

# populate sd-export-config.json in sd-export-template. This contains the usb
# device information used for the export

{% import_json "sd/config.json" as d %}

install-securedrop-export-json-config:
file.managed:
- name: /etc/sd-export-config.json
- source: salt://sd/sd-export/config.json.j2
- template: jinja
- context:
# get pci ID and usb ID from config.json
pci_bus_id_value: {{ (d.usb.device | regex_search('sys-usb:(.)-.'))[0] | int }}
usb_device_value: {{ (d.usb.device | regex_search('sys-usb:.-(.)'))[0] | int }}
- user: user
- group: user
- mode: 0644
- makedirs: True
4 changes: 4 additions & 0 deletions sd-export/config.json.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"pci_bus_id": "{{ pci_bus_id_value }}",
"usb_device": "{{ usb_device_value }}"
}
20 changes: 20 additions & 0 deletions tests/test_sd_export.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import json
import re
import unittest

from base import SD_VM_Local_Test
Expand All @@ -21,6 +23,24 @@ def test_sd_export_package_installed(self):
self.assertTrue(self._package_is_installed("cryptsetup"))
self.assertTrue(self._package_is_installed("printer-driver-brlaser"))

def test_sd_export_config_present(self):
with open("config.json") as c:
config = json.load(c)

# Extract values from config.json
match = re.match(r'sys-usb:(\d)-(\d)', config['usb']['device'])
pci_bus_id_value = match.group(1)
usb_device_value = match.group(2)

wanted_lines = [
"{",
" \"pci_bus_id\": \"{}\",".format(pci_bus_id_value),
" \"usb_device\": \"{}\"".format(usb_device_value),
"}",
]
for line in wanted_lines:
self.assertFileHasLine("/etc/sd-export-config.json", line)


def load_tests(loader, tests, pattern):
suite = unittest.TestLoader().loadTestsFromTestCase(SD_Export_Tests)
Expand Down

0 comments on commit 92d0006

Please sign in to comment.