Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Complete release-specific testing for 2.5.0~rc3 #6599

Closed
Tracked by #6596
zenmonkeykstop opened this issue Oct 5, 2022 · 3 comments
Closed
Tracked by #6596

Complete release-specific testing for 2.5.0~rc3 #6599

zenmonkeykstop opened this issue Oct 5, 2022 · 3 comments

Comments

@zenmonkeykstop
Copy link
Contributor

No description provided.

@zenmonkeykstop zenmonkeykstop changed the title Complete release-specific testing for 2.5.0~rc2 Complete release-specific testing for 2.5.0~rc3 Oct 6, 2022
@cfm
Copy link
Member

cfm commented Oct 13, 2022

Environment

  • Install target: NUC11s
  • Tails version: 5.2
  • Test Scenario: upgrade
  • SSH over Tor: yes
  • Release candidate: RC3
  • General notes:

2.5.0 release-specific changes

Upgrade-only

  • Upgrade completed successfully from 2.4.2
  • revoked_tokens table is no longer present in database
sdadmin@app:~$ sudo -u www-data sqlite3 /var/lib/securedrop/db.sqlite ".schema revoked_tokens"
sdadmin@app:~$ 

Login

  • Log in to the JI
  • Confirm that you are logged in as the expected user
  • Edit the js cookie signature in Tor Browser and try to continue browsing the JI
  • Confirm that you are logged out
  • Login to the JI
  • note your session id (in an app-server ssh session, use redis-cli and KEYS js_session:* to check it)
  • Log out, then log back in again
  • check your session id again and confirm that you received a new random-looking
    session id, and that your previous session id is no longer present

Sessions of multiple users are separate

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Confirm that you are logged in as the expected user in each session

Sessions are renewed in accordance with the new expiration/renewal policy

  • Login to the JI
  • in an app server ssh session use redis-cli, KEYS *, and EXPIRE <key id> 10 to
    expire the session
  • Try to continue browsing, and confirm that you are logged out automatically

  • Confirm that a "logged out due to inactivity" message is displayed on the login screen

  • Login to the JI
  • use KEYS * and EXPIRE <key> 1799 to set the key expiry time to less than 30min
  • check the key value with GET <key> and verify that the renew-count value is 5
  • continue browsing in the JI
  • Check the key TTL with TTL <key> and verify that it has had an additional 2hrs added
  • check the key value with GET <key> and verify that the renew-count value is 4
  • repeat the expiry/renewal process 4 more times, verifying that renew-count decreases each time
  • once renew-count is 0, verify that the TTL is no longer renewed by browsing the JI

Logout works

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Logout from user X in browser A
  • Confirm that user X is logged out
  • Confirm that user Y is still logged in

Deleting a user destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, delete user Y
  • Confirm that user Y in browser B is logged out

Changing a user password destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, change password of user Y
  • Confirm that user Y in browser B is logged out
  • Login to the JI as admin X
  • Change admin X password
  • Confirm that admin X is logged out on password change

API and securedrop-client

Note: use SecureDrop Workstation, configured to connect to your QA instance

  • Login to securedrop-client
  • Confirm that the login is succesful
  • on the app server, confirm that a session id was created
  • confirm that basic authenticated operations (syncing sources, downloading docs, replies) work in the client
  • Log out in the client (keeping the client session open in offline mode
  • on the app server, confirm that the session id was destroyed
  • Confirm that basic authenticated operations are no longer available in the client

On this very loaded Server, the logout request unfortunately never succeeds. But this is a Client-side not a Server-side problem.


  • #6557, #6475 - locale changes
    • Run ./securedrop_admin sdconfig on the Admin Workstation, and confirm that
      the list of available languages matches those in the filesecuredrop/i18n.json
    • (install only) set up both Portugese locales during installation, and confirm that they are available in the locale widget in the SI and JI, listed including the locale country name.

Yes, after a manual ssh app sudo systemctl restart apache2.


  • #6550 - double-escaped org names
    • In the Admin Interface, update the organization name to a string including an ampersand
    • verify that the ampersand is rendered correctly in the SI and JI


  • #6425 - removal of minification
    • in the SI index page source, there is no reference to static/gen/source.js, with the file included from static/js/source.js instead.
    • on the JI all sources page, there is no reference to static/gen/journalist.js, with the file included from static/js/journalist.js instead.
    • on the JI all sources page, with JS enabled, source filtering works correctly.

@nathandyer
Copy link
Contributor

nathandyer commented Oct 13, 2022

Environment

Install target: NUC11s
Tails version: 5.2
Test Scenario: Clean Install
SSH over Tor: Not during install, but post-install
Release candidate: RC3
General notes:

2.5.0 release-specific changes

  • #6403 Unified Redis-backed sessions

    Note: session info is now stored server-side using Redis. Some useful redis-cli commands for testing include:

    • KEYS <pattern> - lists all keys matching a given pattern
    • GET <key> - returns the given key's value
    • TTL <key> - returns the time-to-live for a given key
    • EXPIRE <key> <sec> - sets a given key's expiry to the <sec> value in seconds

    redis-cli should be run in an app server terminal as the instance redis server is
    only available locally.

Login

  • Log in to the JI
  • Confirm that you are logged in as the expected user
  • Edit the js cookie signature in Tor Browser and try to continue browsing the JI
  • Confirm that you are logged out
  • Login to the JI
  • note your session id (in an app-server ssh session, use redis-cli and KEYS js_session:* to check it)
  • Log out, then log back in again
  • check your session id again and confirm that you received a new random-looking
    session id, and that your previous session id is no longer present

Sessions of multiple users are separate

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Confirm that you are logged in as the expected user in each session

Sessions are renewed in accordance with the new expiration/renewal policy

  • Login to the JI
  • in an app server ssh session use redis-cli, KEYS *, and EXPIRE <key id> 10 to
    expire the session
  • Try to continue browsing, and confirm that you are logged out automatically
  • Confirm that a "logged out due to inactivity" message is displayed on the login screen
  • Login to the JI
  • use KEYS * and EXPIRE <key> 1799 to set the key expiry time to less than 30min
  • check the key value with GET <key> and verify that the renew-count value is 5
  • continue browsing in the JI
  • Check the key TTL with TTL <key> and verify that it has had an additional 2hrs added
  • check the key value with GET <key> and verify that the renew-count value is 4
  • repeat the expiry/renewal process 4 more times, verifying that renew-count decreases each time
  • once renew-count is 0, verify that the TTL is no longer renewed by browsing the JI

Logout works

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Logout from user X in browser A
  • Confirm that user X is logged out
  • Confirm that user Y is still logged in

Deleting a user destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, delete user Y
  • Confirm that user Y in browser B is logged out

Changing a user password destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, change password of user Y
  • Confirm that user Y in browser B is logged out
  • Login to the JI as admin X
  • Change admin X password
  • Confirm that admin X is logged out on password change

API and securedrop-client

Note: use SecureDrop Workstation, configured to connect to your QA instance

  • Login to securedrop-client
  • Confirm that the login is succesful
  • on the app server, confirm that a session id was created
  • confirm that basic authenticated operations (syncing sources, downloading docs, replies) work in the client
  • Log out in the client (keeping the client session open in offline mode
  • on the app server, confirm that the session id was destroyed
  • Confirm that basic authenticated operations are no longer available in the client

  • #6557, #6475 - locale changes
    • Run ./securedrop_admin sdconfig on the Admin Workstation, and confirm that
      the list of available languages matches those in the filesecuredrop/i18n.json
    • (install only) set up both Portugese locales during installation, and confirm that they are available in the locale widget in the SI and JI, listed including the locale country name.

  • #6550 - double-escaped org names
    • In the Admin Interface, update the organization name to a string including an ampersand
    • verify that the ampersand is rendered correctly in the SI and JI


  • #6425 - removal of minification
    • in the SI index page source, there is no reference to static/gen/source.js, with the file included from static/js/source.js instead.
    • on the JI all sources page, there is no reference to static/gen/journalist.js, with the file included from static/js/journalist.js instead.
    • on the JI all sources page, with JS enabled, source filtering works correctly.

@zenmonkeykstop
Copy link
Contributor Author

zenmonkeykstop commented Oct 14, 2022

(VMs, install scenario, Tails 5.4)

2.5.0 release-specific changes

  • #6403 Unified Redis-backed sessions

    Note: session info is now stored server-side using Redis. Some useful redis-cli commands for testing include:

    • KEYS <pattern> - lists all keys matching a given pattern
    • GET <key> - returns the given key's value
    • TTL <key> - returns the time-to-live for a given key
    • EXPIRE <key> <sec> - sets a given key's expiry to the <sec> value in seconds

    redis-cli should be run in an app server terminal as the instance redis server is
    only available locally.

Upgrade-only

  • Upgrade completed successfully from 2.4.2
  • revoked_tokens table is no longer present in database

Login

  • Log in to the JI
  • Confirm that you are logged in as the expected user
  • Edit the js cookie signature in Tor Browser and try to continue browsing the JI
  • Confirm that you are logged out
  • Login to the JI
  • note your session id (in an app-server ssh session, use redis-cli and KEYS js_session:* to check it)
  • Log out, then log back in again
  • check your session id again and confirm that you received a new random-looking
    session id, and that your previous session id is no longer present

Sessions of multiple users are separate

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Confirm that you are logged in as the expected user in each session

Sessions are renewed in accordance with the new expiration/renewal policy

  • Login to the JI
  • in an app server ssh session use redis-cli, KEYS *, and EXPIRE <key id> 10 to
    expire the session
  • Try to continue browsing, and confirm that you are logged out automatically
  • Confirm that a "logged out due to inactivity" message is displayed on the login screen
  • Login to the JI
  • use KEYS * and EXPIRE <key> 1799 to set the key expiry time to less than 30min
  • check the key value with GET <key> and verify that the renew-count value is 5
  • continue browsing in the JI
  • Check the key TTL with TTL <key> and verify that it has had an additional 2hrs added
  • check the key value with GET <key> and verify that the renew-count value is 4
  • repeat the expiry/renewal process 4 more times, verifying that renew-count decreases each time
  • once renew-count is 0, verify that the TTL is no longer renewed by browsing the JI

Logout works

  • Login to the JI as user X in browser A
  • Login to the JI as user Y in browser B
  • Logout from user X in browser A
  • Confirm that user X is logged out
  • Confirm that user Y is still logged in

Deleting a user destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, delete user Y
  • Confirm that user Y in browser B is logged out

Changing a user password destroy all sessions of the user

  • Login to the JI as admin X in browser A
  • Login to the JI as admin/user Y in browser B
  • From admin X in browser A, change password of user Y
  • Confirm that user Y in browser B is logged out
  • Login to the JI as admin X
  • Change admin X password
  • Confirm that admin X is logged out on password change

API and securedrop-client

SKIPPED as my sdw install is currently b0rked

  • #6557, #6475 - locale changes
    • Run ./securedrop_admin sdconfig on the Admin Workstation, and confirm that
      the list of available languages matches those in the filesecuredrop/i18n.json
    • (install only) set up both Portugese locales during installation, and confirm that they are available in the locale widget in the SI and JI, listed including the locale country name.

  • #6550 - double-escaped org names
    • In the Admin Interface, update the organization name to a string including an ampersand
    • verify that the ampersand is rendered correctly in the SI and JI


  • #6425 - removal of minification
    • in the SI index page source, there is no reference to static/gen/source.js, with the file included from static/js/source.js instead.
    • on the JI all sources page, there is no reference to static/gen/journalist.js, with the file included from static/js/journalist.js instead.
    • on the JI all sources page, with JS enabled, source filtering works correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants