To run this test plan, start with a clean system (e.g. a virtual machine) running either Xenial with stable-phone-overlay enabled (i.e. ppa:ci-train-ppa-service/stable-phone-overlay), or the current development version of Ubuntu. While the software under test is primarily non-graphical, it depends on the D-Bus session bus so needs to be run from a normal login session (it shouldn't matter whether it is Unity 7 or 8).

Set up NextCloud

Warning /!\ This step can be skipped if you've already got a NextCloud or OwnCloud system set up. If you do use your own installation, ensure that it has a valid certificate if using TLS.

  1. Install the NextCloud snap:

    • sudo snap install nextcloud
  2. Open a web browser and direct it to http://localhost/ to bring up the NextCloud web interface.

  3. You will be prompted to pick an administrator account name and password.
  4. Once you've logged in, click your account name in the top right corner of the page and pick "Users" from the menu.
  5. Create a normal user account.
  6. Log out and then verify that you can log in as the normal user account.

Install the silo under testing

  • sudo add-apt-repository ppa:ci-train-ppa-service/$TICKET_ID
    sudo apt update

Ensure software and dependencies are installed

  • sudo apt install storage-provider-owncloud keeper keeper-cli \
        ubuntu-app-launch ubuntu-system-settings

Test Plan

This test plan is not supposed to be complete; use it to guide your manual testing so they dont miss big functional areas that are part in the component; also this should be used as guideline to inspire the exploratory testing which should be adapted smartly based on the real content of a MP

Perform a Keeper Backup

  1. Configure an online account:
    • Run the Unity 8 System Settings app. If you are running the tests under Unity 7, it can be started by running system-settings from a terminal.

    • Pick "Accounts", "Add Account...", then "ownCloud".
    • Enter the details for your unprivileged ownCloud/nextcloud account. Use http://localhost/ as the URL (or whatever the URL of your personal instance is).

    • Select the newly created account, and ensure that the storage provider has been granted access to the account.
  2. Check that the account is visible to Keeper via its command line tool:
    • /usr/lib/x86_64-linux-gnu/keeper/keeper list-storage-configs

    This should print out something like storage-provider-owncloud:user@localhost. If it doesn't print anything, there is a problem with the account configuration.

  3. Copy some files to ~/Music and ~/Videos.

  4. Start a backup with keeper:
    • /usr/lib/x86_64-linux-gnu/keeper/keeper backup --sections=Music,Videos
  5. After the backup has completed, open the NextCloud/OwnCloud web interface and check that the backup has been uploaded.

Alternative test: Direct D-Bus access

This test doesn't exercise any additional code paths over the above Keeper tests. So if they pass, these extra tests can be skipped. They are primarily here to help narrow down problems if the full stack test fails.

  1. Configure an online account as described in (1) from the above test plan.
  2. Verify that the account is visible to the to the storage-framework registry:
    • gdbus call --session \
          --dest com.canonical.StorageFramework.Registry \
          --object-path /com/canonical/StorageFramework/Registry \
          --method com.canonical.StorageFramework.Registry.ListAccounts
    The output should look something like this (line breaks added for readability):
    • ([('com.canonical.StorageFramework.Provider.OwnCloud', objectpath '/provider/1', uint32 1,
         'storage-provider-owncloud', 'user@localhost', 'ownCloud', ''),
       ('com.canonical.StorageFramework.Provider.Local', '/provider/0', 0,
         '', 'james', 'Local Provider', '')],)

    Take note of the object path for the OwnCloud account (shown as /provider/1 above). The account number may be different, so is referred to as /provider/$ID below.

  3. Retrieve the list of root folders of the account:
    • gdbus call --session \
          --dest com.canonical.StorageFramework.Provider.OwnCloud \
          --object-path /provider/$ID \
          --method com.canonical.StorageFramework.Provider.Roots '[]'
    The output should look something like the following:
    • ([('.', @as [], 'Root', '"58d8bc0d3f5be"', 2, {'last_modified_time': <'2017-03-27T07:15:25Z'>})],)
    Only a single root should be returned. The random looking ETag and modification date will likely be different.
  4. List the contents of the root folder:
    • gdbus call --session \
          --dest com.canonical.StorageFramework.Provider.OwnCloud \
          --object-path /provider/$ID \
          --method com.canonical.StorageFramework.Provider.List '.' '' '[]'
    The output should look something like the following (line breaks added for readability):
    • ([('Documents/', ['.'], 'Documents', '"58d8bc0ca3c10"', 1,
         {'last_modified_time': <'2017-03-27T07:15:24Z'>}),
        ('Nextcloud%20Manual.pdf', ['.'], 'Nextcloud Manual.pdf', '"4357ce3c77812f965f1dca90624313ac"', 0,
         {'last_modified_time': <'2017-03-27T07:15:24Z'>, 'size_in_bytes': <int64 4098507>}),
        ('Nextcloud.mp4', ['.'], 'Nextcloud.mp4', '"0ea6e35821b5ead8e4ebc94ea67aa63c"', 0,
         {'last_modified_time': <'2017-03-27T07:15:24Z'>, 'size_in_bytes': <int64 462413>}),
        ('Photos/', ['.'], 'Photos', '"58d8bc0d3f5be"', 1,
         {'last_modified_time': <'2017-03-27T07:15:25Z'>})],
    The output should match the files in the user's account.

Process/Merges/TestPlan/storage-provider-webdav (last edited 2017-03-28 04:39:04 by jamesh)