Skip to content

KOG 15 11 2018 1 testplan

Kevin O'Gorman edited this page Nov 15, 2018 · 1 revision

QA plan - securedrop-client master (@8bcb575), securedrop-workstation master (@34d666f)

System configuration

  • The sd-svs AppVM does not have a net VM configured.
  • The sd-svs-disp AppVM does not have a net VM configured.
  • The sd-proxy AppVM uses sd-whonix as its NetVM
  • Daily system updates occur without issue. - untested
    • In Fedora-based VMs
    • In Debian-based VMs
    • For dom0 packages
  • Each AppVM is based on the correct templateVM - sd-whonix?
  • /etc/qubes-rpc/policy files deny by default on sd-svs and sd-gpg

Basic operation

  • I am able to log in to the client and sync (I.e. sources appear in the left hand sidebar)
  • In a subsequent visit I am able to access the conversation view for sources that were
  • In the file manager for sd-svs, a user cannot easily accidentally open a file in the sd-svs VM (i.e. test mime type handling by clicking on the relevant file).
  • I am able to download and decrypt a file from a source (click on the file in the client).
  • I am able to view the conversation history between a source and a journalist.
  • I am able to open a file from a source and it opens in a new disp VM.
  • When logged in, a user is able to star a source.
  • When logged in, a user is able to unstar a source - "Failed to apply change"
  • When logged in, a user is able to reply to a source.
    • Test sending empty reply
    • Test sending very long reply
  • When not logged in, a user is not able to reply to a source.
  • When not logged in, a user is not able to star a source.
  • Changes made via the Source (SI) and Journalist Interface (JI) are reflected in the client:
    • When a message, file, or collection is deleted, it's removed from the client at next refresh - see below, files deleted but client crashes on source deletion
    • When a reply is entered in the JI, it’s reflected in the client at next refresh
    • When a source ‘deletes’ a reply, it’s flagged as read in the client - no indicator
    • Starred and unstarred entries in the JI are reflected in the client

Deletion tests

Case 1: Submission deleted

  • Start the dev container.
  • Log into the client.
  • Make sure that one downloads a file from a source.
  • This files should now be in the data folder (inside the SecureDrop homedir).
  • Log into the journalist interface and delete the submission you downloaded (NOT a reply, we will run through that - separately).
  • Back in the client, click Refresh.
  • Now look in the data directory: the file associated with the submission you deleted should be gone.

Case 2: Reply deleted

  • Now using the journalist interface, submit a reply to a source.
  • Wait until that reply downloads and decrypts.
  • Verify the file is there in the data folder locally.
  • Now delete the reply from the journalist interface.
  • Back in the client, click Refresh.
  • Now look in the data directory: the file associated with the reply you deleted should be gone.

Case 3: Source deleted

  • Now, make sure there is at least a reply and submission associated with a given source.
  • Refresh the client again, make sure the documents associated with the source are downloaded.
  • Verify the files associated with that source’s submissions are in the data folder locally.
  • Now delete the source from the journalist interface.
  • Back in the client, click refresh.
  • Now look in the data directory: all files associated with all sources documents should be gone. - source is deleted but client crashes with message
Running app with home directory: /home/user/test_data_dir
Traceback (most recent call last):
  File "/home/user/securedrop-client/securedrop_client/logic.py", line 424, in update_conversation_view
    self.session.refresh(self.gui.current_source)
  File "/home/user/.local/share/virtualenvs/securedrop-client-g9KXN1tj/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 1498, in refresh
    self._expire_state(state, attribute_names)
  File "/home/user/.local/share/virtualenvs/securedrop-client-g9KXN1tj/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 1600, in _expire_state
    self._validate_persistent(state)
  File "/home/user/.local/share/virtualenvs/securedrop-client-g9KXN1tj/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 2047, in _validate_persistent
    state_str(state))
sqlalchemy.exc.InvalidRequestError: Instance '<Source at 0x3acaf98fda0>' is not persistent within this Session