~1chb1n/+junk/jenkins-reactive-temp-build

« back to all changes in this revision

Viewing changes to unit_tests/test_configuration.py

  • Committer: Ryan Beisner
  • Date: 2016-08-27 05:52:07 UTC
  • Revision ID: ryan.beisner@canonical.com-20160827055207-x310qr154yorsr4r
Add temp build of jenkins charm from https://github.com/freeekanayaka/layer-jenkins

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from testtools.testcase import TestCase
 
2
 
 
3
from fixtures import (
 
4
    EnvironmentVariable,
 
5
    TempDir,
 
6
)
 
7
 
 
8
from stubs.hookenv import HookenvStub
 
9
from stubs.templating import TemplatingStub
 
10
 
 
11
from charms.layer.jenkins.configuration import (
 
12
    CONFIG_FILE,
 
13
    Configuration,
 
14
)
 
15
 
 
16
 
 
17
class ConfigurationTest(TestCase):
 
18
 
 
19
    def setUp(self):
 
20
        super(ConfigurationTest, self).setUp()
 
21
        self.charm_dir = self.useFixture(TempDir())
 
22
        self.useFixture(EnvironmentVariable("CHARM_DIR", self.charm_dir.path))
 
23
        self.hookenv = HookenvStub(self.charm_dir.path)
 
24
        self.templating = TemplatingStub()
 
25
 
 
26
        self.configuration = Configuration(
 
27
            hookenv=self.hookenv, templating=self.templating)
 
28
 
 
29
    def test_bootstrap(self):
 
30
        """
 
31
        If it hasn't been done yet, the Jenkins configuration file gets
 
32
        generated.
 
33
        """
 
34
        self.hookenv.config()["master-executors"] = 1
 
35
        self.configuration.bootstrap()
 
36
        render = self.templating.renders[0]
 
37
        self.assertEqual("jenkins-config.xml", render.source)
 
38
        self.assertEqual(CONFIG_FILE, render.target)
 
39
        self.assertEqual({"master_executors": 1}, render.context)
 
40
        self.assertEqual("jenkins", render.owner)
 
41
        self.assertEqual("nogroup", render.group)
 
42
        self.assertEqual(8080, self.hookenv.port)
 
43
 
 
44
    def test_bootstrap_once(self):
 
45
        """
 
46
        If it has already been generated, the Jenkins configuration will not
 
47
        be touched again.
 
48
        """
 
49
        self.hookenv.config()["master-executors"] = 1
 
50
        self.configuration.bootstrap()
 
51
        self.templating.renders.pop()
 
52
        self.configuration.bootstrap()
 
53
        self.assertEqual([], self.templating.renders)
 
54
 
 
55
    def test_migrate(self):
 
56
        """
 
57
        The legacy bootstrap flag file gets migrated to a local state flag.
 
58
        """
 
59
        jenkins_home = self.useFixture(TempDir())
 
60
        self.configuration._legacy_bootstrap_flag = jenkins_home.join("flag")
 
61
        with open(self.configuration._legacy_bootstrap_flag, "w"):
 
62
            pass
 
63
        self.configuration.migrate()
 
64
        self.assertTrue(self.hookenv.config()["_config-bootstrapped"])