1
# Copyright 2014 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Tests for the driver registries."""
6
from __future__ import (
17
from maastesting.testcase import MAASTestCase
18
from mock import sentinel
19
from provisioningserver.driver import (
25
from provisioningserver.utils.testing import RegistryFixture
28
class TestRegistries(MAASTestCase):
31
super(TestRegistries, self).setUp()
32
# Ensure the global registry is empty for each test run.
33
self.useFixture(RegistryFixture())
35
def test_bootresource_registry(self):
36
self.assertItemsEqual([], BootResourceRegistry)
37
BootResourceRegistry.register_item("resource", sentinel.resource)
40
(item for name, item in BootResourceRegistry))
42
def test_architecture_registry(self):
43
self.assertItemsEqual([], ArchitectureRegistry)
44
ArchitectureRegistry.register_item("resource", sentinel.resource)
47
(item for name, item in ArchitectureRegistry))
49
def test_get_by_pxealias_returns_valid_arch(self):
51
name="arch1", description="arch1",
52
pxealiases=["archibald", "reginald"])
54
name="arch2", description="arch2",
55
pxealiases=["fake", "foo"])
56
ArchitectureRegistry.register_item("arch1", arch1)
57
ArchitectureRegistry.register_item("arch2", arch2)
59
arch1, ArchitectureRegistry.get_by_pxealias("archibald"))
61
def test_get_by_pxealias_returns_None_if_none_matching(self):
63
name="arch1", description="arch1",
64
pxealiases=["archibald", "reginald"])
65
arch2 = Architecture(name="arch2", description="arch2")
66
ArchitectureRegistry.register_item("arch1", arch1)
67
ArchitectureRegistry.register_item("arch2", arch2)
69
None, ArchitectureRegistry.get_by_pxealias("stinkywinky"))
71
def test_power_type_registry(self):
72
self.assertItemsEqual([], PowerTypeRegistry)
73
PowerTypeRegistry.register_item("resource", sentinel.resource)
76
(item for name, item in PowerTypeRegistry))