
Tox (and hence Travis) only runs unit tests Functional tests can be run manually, with the default Python version
99 lines
4.1 KiB
Python
99 lines
4.1 KiB
Python
import os
|
|
import shutil
|
|
try:
|
|
import unittest2 as unittest # Python2.6
|
|
except ImportError:
|
|
import unittest
|
|
|
|
from openphoto import OpenPhoto
|
|
|
|
CONFIG_HOME_PATH = os.path.join("tests", "config")
|
|
CONFIG_PATH = os.path.join(CONFIG_HOME_PATH, "openphoto")
|
|
|
|
class TestConfig(unittest.TestCase):
|
|
def setUp(self):
|
|
""" Override XDG_CONFIG_HOME env var, to use test configs """
|
|
try:
|
|
self.original_xdg_config_home = os.environ["XDG_CONFIG_HOME"]
|
|
except KeyError:
|
|
self.original_xdg_config_home = None
|
|
os.environ["XDG_CONFIG_HOME"] = CONFIG_HOME_PATH
|
|
os.makedirs(CONFIG_PATH)
|
|
|
|
def tearDown(self):
|
|
if self.original_xdg_config_home is None:
|
|
del os.environ["XDG_CONFIG_HOME"]
|
|
else:
|
|
os.environ["XDG_CONFIG_HOME"] = self.original_xdg_config_home
|
|
shutil.rmtree(CONFIG_HOME_PATH, ignore_errors=True)
|
|
|
|
@staticmethod
|
|
def create_config(config_file, host):
|
|
with open(os.path.join(CONFIG_PATH, config_file), "w") as conf:
|
|
conf.write("host = %s\n" % host)
|
|
conf.write("# Comment\n\n")
|
|
conf.write("consumerKey = \"%s_consumer_key\"\n" % config_file)
|
|
conf.write("\"consumerSecret\" = %s_consumer_secret\n" % config_file)
|
|
conf.write("'token'=%s_token\n" % config_file)
|
|
conf.write("tokenSecret = '%s_token_secret'\n" % config_file)
|
|
|
|
def test_default_config(self):
|
|
""" Ensure the default config is loaded """
|
|
self.create_config("default", "Test Default Host")
|
|
client = OpenPhoto()
|
|
config = client.config
|
|
self.assertEqual(client.host, "Test Default Host")
|
|
self.assertEqual(config.consumer_key, "default_consumer_key")
|
|
self.assertEqual(config.consumer_secret, "default_consumer_secret")
|
|
self.assertEqual(config.token, "default_token")
|
|
self.assertEqual(config.token_secret, "default_token_secret")
|
|
|
|
def test_custom_config(self):
|
|
""" Ensure a custom config can be loaded """
|
|
self.create_config("default", "Test Default Host")
|
|
self.create_config("custom", "Test Custom Host")
|
|
client = OpenPhoto(config_file="custom")
|
|
config = client.config
|
|
self.assertEqual(client.host, "Test Custom Host")
|
|
self.assertEqual(config.consumer_key, "custom_consumer_key")
|
|
self.assertEqual(config.consumer_secret, "custom_consumer_secret")
|
|
self.assertEqual(config.token, "custom_token")
|
|
self.assertEqual(config.token_secret, "custom_token_secret")
|
|
|
|
def test_full_config_path(self):
|
|
""" Ensure a full custom config path can be loaded """
|
|
self.create_config("path", "Test Path Host")
|
|
full_path = os.path.abspath(CONFIG_PATH)
|
|
client = OpenPhoto(config_file=os.path.join(full_path, "path"))
|
|
config = client.config
|
|
self.assertEqual(client.host, "Test Path Host")
|
|
self.assertEqual(config.consumer_key, "path_consumer_key")
|
|
self.assertEqual(config.consumer_secret, "path_consumer_secret")
|
|
self.assertEqual(config.token, "path_token")
|
|
self.assertEqual(config.token_secret, "path_token_secret")
|
|
|
|
def test_host_override(self):
|
|
""" Ensure that specifying a host overrides the default config """
|
|
self.create_config("default", "Test Default Host")
|
|
client = OpenPhoto(host="host_override")
|
|
config = client.config
|
|
self.assertEqual(config.host, "host_override")
|
|
self.assertEqual(config.consumer_key, "")
|
|
self.assertEqual(config.consumer_secret, "")
|
|
self.assertEqual(config.token, "")
|
|
self.assertEqual(config.token_secret, "")
|
|
|
|
def test_missing_config_files(self):
|
|
""" Ensure that missing config files raise exceptions """
|
|
with self.assertRaises(IOError):
|
|
OpenPhoto()
|
|
with self.assertRaises(IOError):
|
|
OpenPhoto(config_file="custom")
|
|
|
|
def test_host_and_config_file(self):
|
|
""" It's not valid to specify both a host and a config_file """
|
|
self.create_config("custom", "Test Custom Host")
|
|
with self.assertRaises(ValueError):
|
|
OpenPhoto(config_file="custom", host="host_override")
|
|
|
|
|