diff options
| author | Scott Moser <smoser@ubuntu.com> | 2012-03-06 11:58:52 -0500 | 
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2012-03-06 11:58:52 -0500 | 
| commit | f0a6ec70d13ea771efee86b2544346731cd79991 (patch) | |
| tree | 3dad437479fe4887769d0b7749fa5e733a5a6eb6 /tests/unittests/test_datasource | |
| parent | d53984dbd4fd8662f9cfda86cbab3d0d7c656511 (diff) | |
| download | vyos-cloud-init-f0a6ec70d13ea771efee86b2544346731cd79991.tar.gz vyos-cloud-init-f0a6ec70d13ea771efee86b2544346731cd79991.zip | |
Add initial DataSourceMaaS.
Tests at this point seem to indicate that seed-dir would work.
Diffstat (limited to 'tests/unittests/test_datasource')
| -rw-r--r-- | tests/unittests/test_datasource/test_maas.py | 112 | 
1 files changed, 112 insertions, 0 deletions
| diff --git a/tests/unittests/test_datasource/test_maas.py b/tests/unittests/test_datasource/test_maas.py new file mode 100644 index 00000000..ad169b97 --- /dev/null +++ b/tests/unittests/test_datasource/test_maas.py @@ -0,0 +1,112 @@ +from unittest import TestCase +from tempfile import mkdtemp +from shutil import rmtree +import os +from copy import copy +from cloudinit.DataSourceMaaS import ( +    MaasSeedDirNone, +    MaasSeedDirMalformed, +    read_maas_seed_dir, +) + + +class TestMaasDataSource(TestCase): + +    def setUp(self): +        super(TestMaasDataSource, self).setUp() +        # Make a temp directoy for tests to use. +        self.tmp = mkdtemp(prefix="unittest_") + +    def tearDown(self): +        super(TestMaasDataSource, self).tearDown() +        # Clean up temp directory +        rmtree(self.tmp) + +    def test_seed_dir_valid(self): +        """Verify a valid seeddir is read as such""" + +        data = {'instance-id': 'i-valid01', 'hostname': 'valid01-hostname', +            'userdata': 'valid01-userdata'} + +        my_d = os.path.join(self.tmp, "valid") +        populate_dir(my_d, data) + +        (userdata, metadata) = read_maas_seed_dir(my_d) + +        self.assertEqual(userdata, data['userdata']) +        for key in ('instance-id', 'hostname'): +            self.assertEqual(data[key], metadata[key]) +         +    def test_seed_dir_valid_extra(self): +        """Verify extra files do not affect seed_dir validity """ + +        data = {'instance-id': 'i-valid-extra', +            'hostname': 'valid-extra-hostname', +            'userdata': 'valid-extra-userdata', 'foo': 'bar'} + +        my_d = os.path.join(self.tmp, "valid_extra") +        populate_dir(my_d, data) + +        (userdata, metadata) = read_maas_seed_dir(my_d) + +        self.assertEqual(userdata, data['userdata']) +        for key in ('instance-id', 'hostname'): +            self.assertEqual(data[key], metadata[key]) + +        # additional files should not just appear as keys in metadata atm +        self.assertFalse(('foo' in metadata)) + +    def test_seed_dir_invalid(self): +        """Verify that invalid seed_dir raises MaasSeedDirMalformed""" + +        valid = {'instance-id': 'i-instanceid', +            'hostname': 'test-hostname', 'userdata': ''} + +        my_based = os.path.join(self.tmp, "valid_extra") + +        # missing 'userdata' file +        my_d = "%s-01" % my_based +        invalid_data = copy(valid) +        del invalid_data['userdata'] +        populate_dir(my_d, invalid_data) +        self.assertRaises(MaasSeedDirMalformed, read_maas_seed_dir, my_d) + +        # missing 'instance-id' +        my_d = "%s-02" % my_based +        invalid_data = copy(valid) +        del invalid_data['instance-id'] +        populate_dir(my_d, invalid_data) +        self.assertRaises(MaasSeedDirMalformed, read_maas_seed_dir, my_d) + +    def test_seed_dir_none(self): +        """Verify that empty seed_dir raises MaasSeedDirNone""" + +        my_d = os.path.join(self.tmp, "valid_empty") +        self.assertRaises(MaasSeedDirNone, read_maas_seed_dir, my_d) + +    def test_seed_dir_missing(self): +        """Verify that missing seed_dir raises MaasSeedDirNone""" +        self.assertRaises(MaasSeedDirNone, read_maas_seed_dir, +            os.path.join(self.tmp, "nonexistantdirectory")) + +    def test_seed_url_valid(self): +        """Verify that valid seed_url is read as such""" +        pass + +    def test_seed_url_invalid(self): +        """Verify that invalid seed_url raises MaasSeedDirMalformed""" +        pass + +    def test_seed_url_missing(self): +        """Verify seed_url with no found entries raises MaasSeedDirNone""" +        pass + + +def populate_dir(seed_dir, files): +    os.mkdir(seed_dir) +    for (name, content) in files.iteritems(): +        with open(os.path.join(seed_dir, name), "w") as fp: +            fp.write(content) +            fp.close() + +# vi: ts=4 expandtab | 
