1
from testtools.testcase import TestCase
8
from stubs.hookenv import HookenvStub
9
from stubs.templating import TemplatingStub
11
from charms.layer.jenkins.configuration import (
17
class ConfigurationTest(TestCase):
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()
26
self.configuration = Configuration(
27
hookenv=self.hookenv, templating=self.templating)
29
def test_bootstrap(self):
31
If it hasn't been done yet, the Jenkins configuration file gets
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)
44
def test_bootstrap_once(self):
46
If it has already been generated, the Jenkins configuration will not
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)
55
def test_migrate(self):
57
The legacy bootstrap flag file gets migrated to a local state flag.
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"):
63
self.configuration.migrate()
64
self.assertTrue(self.hookenv.config()["_config-bootstrapped"])