1
# Copyright 2012 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Test maasserver components module."""
6
from __future__ import (
17
from maasserver import components
18
from maasserver.components import (
20
discard_persistent_error,
21
get_persistent_errors,
22
register_persistent_error,
24
from maasserver.testing.enum import map_enum
25
from maasserver.testing.factory import factory
26
from maasserver.testing.testcase import TestCase
29
def simple_error_display(error):
33
def get_random_component():
34
random.choice(map_enum(COMPONENT).values())
37
class PersistentErrorsUtilitiesTest(TestCase):
40
super(PersistentErrorsUtilitiesTest, self).setUp()
41
self._PERSISTENT_ERRORS = {}
42
self.patch(components, '_PERSISTENT_ERRORS', self._PERSISTENT_ERRORS)
44
def test_register_persistent_error_registers_error(self):
45
error_message = factory.getRandomString()
46
component = get_random_component()
47
register_persistent_error(component, error_message)
48
self.assertItemsEqual(
49
{component: error_message}, self._PERSISTENT_ERRORS)
51
def test_register_persistent_error_stores_last_error(self):
52
error_message = factory.getRandomString()
53
error_message2 = factory.getRandomString()
54
component = get_random_component()
55
register_persistent_error(component, error_message)
56
register_persistent_error(component, error_message2)
57
self.assertItemsEqual(
58
{component: error_message2}, self._PERSISTENT_ERRORS)
60
def test_discard_persistent_error_discards_error(self):
61
error_message = factory.getRandomString()
62
component = get_random_component()
63
register_persistent_error(component, error_message)
64
discard_persistent_error(component)
65
self.assertItemsEqual({}, self._PERSISTENT_ERRORS)
67
def test_discard_persistent_error_can_be_called_many_times(self):
68
error_message = factory.getRandomString()
69
component = get_random_component()
70
register_persistent_error(component, error_message)
71
discard_persistent_error(component)
72
discard_persistent_error(component)
73
self.assertItemsEqual({}, self._PERSISTENT_ERRORS)
75
def get_persistent_errors_returns_text_for_error_codes(self):
76
errors, components = [], []
78
error_message = factory.getRandomString()
79
component = get_random_component()
80
register_persistent_error(component, error_message)
81
errors.append(error_message)
82
components.append(component)
83
self.assertItemsEqual(errors, get_persistent_errors())