~ubuntu-branches/ubuntu/saucy/cloud-init/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/unittests/test_handler/test_handler_apt_configure.py

  • Committer: Package Import Robot
  • Author(s): Scott Moser
  • Date: 2013-08-14 21:44:22 UTC
  • mfrom: (1.4.1)
  • Revision ID: package-import@ubuntu.com-20130814214422-uzrq82t5srz2g4c2
Tags: 0.7.3~bzr858-0ubuntu1
* New upstream snapshot.
  * fix resizing of root partition by preferring the functional 'growpart'
    support over the broken 'parted resizepart' support (LP: #1212444)
  * add options for apt_ftp_proxy, apt_https_proxy and apt_config
    (LP: #1057195)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from mocker import MockerTestCase
 
2
 
 
3
from cloudinit import cloud
 
4
from cloudinit import util
 
5
 
 
6
from cloudinit.config import cc_apt_configure
 
7
 
 
8
import os
 
9
import re
 
10
 
 
11
 
 
12
class TestAptProxyConfig(MockerTestCase):
 
13
    def setUp(self):
 
14
        super(TestAptProxyConfig, self).setUp()
 
15
        self.tmp = self.makeDir()
 
16
        self.pfile = os.path.join(self.tmp, "proxy.cfg")
 
17
        self.cfile = os.path.join(self.tmp, "config.cfg")
 
18
 
 
19
    def _search_apt_config(self, contents, ptype, value):
 
20
        print(
 
21
            r"acquire::%s::proxy\s+[\"']%s[\"'];\n" % (ptype, value),
 
22
            contents, "flags=re.IGNORECASE")
 
23
        return(re.search(
 
24
            r"acquire::%s::proxy\s+[\"']%s[\"'];\n" % (ptype, value),
 
25
            contents, flags=re.IGNORECASE))
 
26
 
 
27
    def test_apt_proxy_written(self):
 
28
        cfg = {'apt_proxy': 'myproxy'}
 
29
        cc_apt_configure.apply_apt_config(cfg, self.pfile, self.cfile)
 
30
 
 
31
        self.assertTrue(os.path.isfile(self.pfile))
 
32
        self.assertFalse(os.path.isfile(self.cfile))
 
33
 
 
34
        contents = str(util.read_file_or_url(self.pfile))
 
35
        self.assertTrue(self._search_apt_config(contents, "http", "myproxy"))
 
36
 
 
37
    def test_apt_http_proxy_written(self):
 
38
        cfg = {'apt_http_proxy': 'myproxy'}
 
39
        cc_apt_configure.apply_apt_config(cfg, self.pfile, self.cfile)
 
40
 
 
41
        self.assertTrue(os.path.isfile(self.pfile))
 
42
        self.assertFalse(os.path.isfile(self.cfile))
 
43
 
 
44
        contents = str(util.read_file_or_url(self.pfile))
 
45
        self.assertTrue(self._search_apt_config(contents, "http", "myproxy"))
 
46
 
 
47
    def test_apt_all_proxy_written(self):
 
48
        cfg = {'apt_http_proxy': 'myproxy_http_proxy',
 
49
               'apt_https_proxy': 'myproxy_https_proxy',
 
50
               'apt_ftp_proxy': 'myproxy_ftp_proxy'}
 
51
 
 
52
        values = {'http': cfg['apt_http_proxy'],
 
53
                  'https': cfg['apt_https_proxy'],
 
54
                  'ftp': cfg['apt_ftp_proxy'],
 
55
                  }
 
56
 
 
57
        cc_apt_configure.apply_apt_config(cfg, self.pfile, self.cfile)
 
58
 
 
59
        self.assertTrue(os.path.isfile(self.pfile))
 
60
        self.assertFalse(os.path.isfile(self.cfile))
 
61
 
 
62
        contents = str(util.read_file_or_url(self.pfile))
 
63
 
 
64
        for ptype, pval in values.iteritems():
 
65
            self.assertTrue(self._search_apt_config(contents, ptype, pval))
 
66
 
 
67
    def test_proxy_deleted(self):
 
68
        util.write_file(self.cfile, "content doesnt matter")
 
69
        cc_apt_configure.apply_apt_config({}, self.pfile, self.cfile)
 
70
        self.assertFalse(os.path.isfile(self.pfile))
 
71
        self.assertFalse(os.path.isfile(self.cfile))
 
72
 
 
73
    def test_proxy_replaced(self):
 
74
        util.write_file(self.cfile, "content doesnt matter")
 
75
        cc_apt_configure.apply_apt_config({'apt_proxy': "foo"},
 
76
                                          self.pfile, self.cfile)
 
77
        self.assertTrue(os.path.isfile(self.pfile))
 
78
        contents = str(util.read_file_or_url(self.pfile))
 
79
        self.assertTrue(self._search_apt_config(contents, "http", "foo"))
 
80
 
 
81
    def test_config_written(self):
 
82
        payload = 'this is my apt config'
 
83
        cfg = {'apt_config': payload}
 
84
 
 
85
        cc_apt_configure.apply_apt_config(cfg, self.pfile, self.cfile)
 
86
 
 
87
        self.assertTrue(os.path.isfile(self.cfile))
 
88
        self.assertFalse(os.path.isfile(self.pfile))
 
89
 
 
90
        self.assertEqual(str(util.read_file_or_url(self.cfile)), payload)
 
91
 
 
92
    def test_config_replaced(self):
 
93
        util.write_file(self.pfile, "content doesnt matter")
 
94
        cc_apt_configure.apply_apt_config({'apt_config': "foo"},
 
95
                                          self.pfile, self.cfile)
 
96
        self.assertTrue(os.path.isfile(self.cfile))
 
97
        self.assertEqual(str(util.read_file_or_url(self.cfile)), "foo")
 
98
 
 
99
    def test_config_deleted(self):
 
100
        # if no 'apt_config' is provided, delete any previously written file
 
101
        util.write_file(self.pfile, "content doesnt matter")
 
102
        cc_apt_configure.apply_apt_config({}, self.pfile, self.cfile)
 
103
        self.assertFalse(os.path.isfile(self.pfile))
 
104
        self.assertFalse(os.path.isfile(self.cfile))
 
105
 
 
106
 
 
107
# vi: ts=4 expandtab