From 20da91d879a4643c235e716ecdcfdc5a481258c4 Mon Sep 17 00:00:00 2001 From: Evan Cordell Date: Tue, 23 May 2017 15:43:21 -0400 Subject: [PATCH] Add tests for providers and update install script --- conf/init/certs_install.sh | 6 ++-- util/config/provider/baseprovider.py | 2 +- util/config/provider/fileprovider.py | 4 +-- util/config/provider/k8sprovider.py | 4 +-- .../config/provider/test/test_fileprovider.py | 29 +++++++++++++++++++ util/config/provider/test/test_k8sprovider.py | 25 ++++++++++++++++ util/config/provider/testprovider.py | 4 +-- 7 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 util/config/provider/test/test_fileprovider.py create mode 100644 util/config/provider/test/test_k8sprovider.py diff --git a/conf/init/certs_install.sh b/conf/init/certs_install.sh index b9fd46dbe..1d680206a 100755 --- a/conf/init/certs_install.sh +++ b/conf/init/certs_install.sh @@ -24,11 +24,11 @@ if [ -f /conf/stack/extra_ca_certs ]; then fi ## Add extra trusted certificates (prefixed) -for f in $(ls /conf/stack/extra_ca* | grep -v ':$') +for f in $(ls -p /conf/stack/extra_ca* | grep -v ':$' | grep -v '/$') do echo "Installing extra cert $f" - cp "/conf/stack/$f" /usr/local/share/ca-certificates/ - cat "/conf/stack/$f" >> /venv/lib/python2.7/site-packages/requests/cacert.pem + cp "$f" /usr/local/share/ca-certificates/ + cat "$f" >> /venv/lib/python2.7/site-packages/requests/cacert.pem done # Update all CA certificates. diff --git a/util/config/provider/baseprovider.py b/util/config/provider/baseprovider.py index 91ac64f74..663c64588 100644 --- a/util/config/provider/baseprovider.py +++ b/util/config/provider/baseprovider.py @@ -110,7 +110,7 @@ class BaseProvider(object): """ raise NotImplementedError - def get_volume_path(self, directory, file): + def get_volume_path(self, directory, filename): """ Helper for constructing file paths, which may differ between providers. For example, kubernetes can't have subfolders in configmaps """ raise NotImplementedError diff --git a/util/config/provider/fileprovider.py b/util/config/provider/fileprovider.py index 1cefa9794..705e14cf4 100644 --- a/util/config/provider/fileprovider.py +++ b/util/config/provider/fileprovider.py @@ -111,5 +111,5 @@ class FileConfigProvider(BaseProvider): return False - def get_volume_path(self, directory, file): - return os.path.join(directory, file) + def get_volume_path(self, directory, filename): + return os.path.join(directory, filename) diff --git a/util/config/provider/k8sprovider.py b/util/config/provider/k8sprovider.py index 743892822..7af71634d 100644 --- a/util/config/provider/k8sprovider.py +++ b/util/config/provider/k8sprovider.py @@ -144,5 +144,5 @@ class KubernetesConfigProvider(FileConfigProvider): request = Request(method, url, data=data, headers=headers) return session.send(request.prepare(), verify=False, timeout=2) - def get_volume_path(self, directory, file): - return "_".join([directory, file]) \ No newline at end of file + def get_volume_path(self, directory, filename): + return "_".join([directory.rstrip('/'), filename]) \ No newline at end of file diff --git a/util/config/provider/test/test_fileprovider.py b/util/config/provider/test/test_fileprovider.py new file mode 100644 index 000000000..7a1336085 --- /dev/null +++ b/util/config/provider/test/test_fileprovider.py @@ -0,0 +1,29 @@ +import pytest + +from util.config.provider import FileConfigProvider + +from test.fixtures import * + + +class TestFileConfigProvider(FileConfigProvider): + def __init__(self): + self.yaml_filename = 'yaml_filename' + self._service_token = 'service_token' + self.config_volume = 'config_volume' + self.py_filename = 'py_filename' + self.yaml_path = os.path.join(self.config_volume, self.yaml_filename) + self.py_path = os.path.join(self.config_volume, self.py_filename) + + +@pytest.mark.parametrize('directory,filename,expected', [ + ("directory", "file", "directory/file"), + ("directory/dir", "file", "directory/dir/file"), + ("directory/dir/", "file", "directory/dir/file"), + ("directory", "file/test", "directory/file/test"), +]) +def test_get_volume_path(directory, filename, expected): + provider = TestFileConfigProvider() + + assert expected == provider.get_volume_path(directory, filename) + + diff --git a/util/config/provider/test/test_k8sprovider.py b/util/config/provider/test/test_k8sprovider.py new file mode 100644 index 000000000..c31f69596 --- /dev/null +++ b/util/config/provider/test/test_k8sprovider.py @@ -0,0 +1,25 @@ +import pytest + +from util.config.provider import KubernetesConfigProvider + +from test.fixtures import * + + +class TestKubernetesConfigProvider(KubernetesConfigProvider): + def __init__(self): + self.yaml_filename = 'yaml_filename' + self._service_token = 'service_token' + + +@pytest.mark.parametrize('directory,filename,expected', [ + ("directory", "file", "directory_file"), + ("directory/dir", "file", "directory/dir_file"), + ("directory/dir/", "file", "directory/dir_file"), + ("directory", "file/test", "directory_file/test"), +]) +def test_get_volume_path(directory, filename, expected): + provider = TestKubernetesConfigProvider() + + assert expected == provider.get_volume_path(directory, filename) + + diff --git a/util/config/provider/testprovider.py b/util/config/provider/testprovider.py index d0a81e550..0074e1e06 100644 --- a/util/config/provider/testprovider.py +++ b/util/config/provider/testprovider.py @@ -90,6 +90,6 @@ class TestConfigProvider(BaseProvider): self._config['SUPER_USERS'] = ['devtable'] self.files = {} - def get_volume_path(self, directory, file): - return os.path.join(directory, file) + def get_volume_path(self, directory, filename): + return os.path.join(directory, filename)