summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/unittests/test_handler/test_handler_apt_source.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/unittests/test_handler/test_handler_apt_source.py b/tests/unittests/test_handler/test_handler_apt_source.py
new file mode 100644
index 00000000..b45fc1d1
--- /dev/null
+++ b/tests/unittests/test_handler/test_handler_apt_source.py
@@ -0,0 +1,87 @@
+""" test_handler_apt_source
+Testing various config variations of the apt_source config
+"""
+import os
+import shutil
+import tempfile
+import re
+
+from cloudinit import distros
+from cloudinit import util
+from cloudinit.config import cc_apt_configure
+
+from ..helpers import TestCase
+
+UNKNOWN_ARCH_INFO = {
+ 'arches': ['default'],
+ 'failsafe': {'primary': 'http://fs-primary-default',
+ 'security': 'http://fs-security-default'}
+}
+
+PACKAGE_MIRRORS = [
+ {'arches': ['i386', 'amd64'],
+ 'failsafe': {'primary': 'http://fs-primary-intel',
+ 'security': 'http://fs-security-intel'},
+ 'search': {
+ 'primary': ['http://%(ec2_region)s.ec2/',
+ 'http://%(availability_zone)s.clouds/'],
+ 'security': ['http://security-mirror1-intel',
+ 'http://security-mirror2-intel']}},
+ {'arches': ['armhf', 'armel'],
+ 'failsafe': {'primary': 'http://fs-primary-arm',
+ 'security': 'http://fs-security-arm'}},
+ UNKNOWN_ARCH_INFO
+]
+
+GAPMI = distros._get_arch_package_mirror_info
+
+def load_tfile_or_url(*args, **kwargs):
+ """ load_tfile_or_url
+ load file and return content after decoding
+ """
+ return util.decode_binary(util.read_file_or_url(*args, **kwargs).contents)
+
+class TestAptSourceConfig(TestCase):
+ """ TestAptSourceConfig
+ Main Class to test apt_source configs
+ """
+ def setUp(self):
+ super(TestAptSourceConfig, self).setUp()
+ self.tmp = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, self.tmp)
+ self.aptlistfile = os.path.join(self.tmp, "single-deb.list")
+
+
+ @staticmethod
+ def _get_default_params():
+ """ get_default_params
+ Get the most basic default mrror and release info to be used in tests
+ """
+ params = {}
+ params['RELEASE'] = cc_apt_configure.get_release()
+ params['MIRROR'] = "http://archive.ubuntu.com/ubuntu"
+ return params
+
+ @staticmethod
+ def _search_apt_source(contents, params, pre, post):
+ return re.search(r"%s %s %s %s\n" %
+ (pre, params['MIRROR'], params['RELEASE'], post),
+ contents, flags=re.IGNORECASE)
+
+ def test_apt_source_release(self):
+ """ test_apt_source_release
+ Test Autoreplacement of MIRROR and RELEASE in source specs
+ """
+ params = self._get_default_params()
+ cfg = {'source': 'deb $MIRROR $RELEASE multiverse',
+ 'filename': self.aptlistfile}
+
+ cc_apt_configure.add_sources([cfg], params)
+
+ self.assertTrue(os.path.isfile(self.aptlistfile))
+
+ contents = load_tfile_or_url(self.aptlistfile)
+ self.assertTrue(self._search_apt_source(contents, params,
+ "deb", "multiverse"))
+
+# vi: ts=4 expandtab