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