photo-python/tests/functional
2013-06-30 17:05:50 +01:00
..
api_versions Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
__init__.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
README.markdown Updated functional test instructions 2013-06-30 17:05:50 +01:00
test_albums.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
test_base.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
test_framework.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
test_photos.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00
test_tags.py Reorganise tests into unit and functional categories. 2013-06-29 12:43:41 +01:00

Functional Testing

These functional tests check that the openphoto-python library interoperates correctly with a real OpenPhoto/Trovebox server.

They are slow to run, and require a stable HTTP connection to a test server.


Requirements

A computer, Python and an empty OpenPhoto/Trovebox test host.


Setting up

Create a ~/.config/openphoto/test config file containing the following:

# ~/.config/openphoto/test
host = your.host.com
consumerKey = your_consumer_key
consumerSecret = your_consumer_secret
token = your_access_token
tokenSecret = your_access_token_secret

Make sure this is an empty test server, not a production OpenPhoto server!!!

You can specify an alternate test config file with the following environment variable:

export OPENPHOTO_TEST_CONFIG=test2

Running the tests

The following instructions are for Python 2.7. You can adapt them for earlier Python versions using the unittest2 package.

cd /path/to/openphoto-python
python -m unittest discover -c tests/functional

The "-c" lets you stop the tests gracefully with [CTRL]-c.

The easiest way to run a subset of the tests is with the nose package:

cd /path/to/openphoto-python
nosetests -v -s --nologcapture tests/functional/test_albums.py:TestAlbums.test_view

All HTTP requests and responses are recorded in the file tests.log.

You can enable more verbose output to stdout with the following environment variable:

export OPENPHOTO_TEST_DEBUG=1

Test Details

These tests are intended to verify the openphoto-python library. They don't provide comprehensive testing of the OpenPhoto API, there are PHP unit tests for that.

Each test class is run as follows:

SetUpClass:

Check that the server is empty

SetUp:

Ensure there are:

  • Three test photos
  • A single test tag applied to each
  • A single album containing all three photos

TearDownClass:

Remove all photos, tags and albums

Testing old servers

By default, all currently supported API versions will be tested. It's useful to test servers that only support older API versions. To restrict the testing to a specific maximum API version, use the OPENPHOTO_TEST_SERVER_API environment variable.

For example, to restrict testing to APIv1 and APIv2:

export OPENPHOTO_TEST_SERVER_API=2

Full Regression Test

The run_functional_tests script runs all functional tests against all supported API versions.

To use it, you must set up multiple OpenPhoto instances and create the following config files containing your credentials:

test        : Latest self-hosted site
test-apiv1  : APIv1 self-hosted site
test-hosted : Credentials for test account on trovebox.com