~ubuntu-branches/ubuntu/precise/maas/precise-security

« back to all changes in this revision

Viewing changes to src/maasserver/tests/test_components.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez, Scott Moser, Andres Rodriguez, Dave Walker (Daviey), Gavin Panella
  • Date: 2012-04-12 16:46:22 UTC
  • mfrom: (1.1.11)
  • Revision ID: package-import@ubuntu.com-20120412164622-u1qnsq0s9tsc2f14
Tags: 0.1+bzr462+dfsg-0ubuntu1
* New upstream release (LP: #980240)

[ Scott Moser ]
* add dependency on distro-info (LP: #949442)
* debian/control: add dependency on tgt for ephemeral iscsi environment

[ Andres Rodriguez ]
* Make package lintian clean:
  - maas{-dhcp}.lintian-overrides: Add to make lintian clean.
  - debian/control: Add missing dependencies; correct section and desc.
  - debian/maas.postinst: Do not use absolute path for rabbitmqctl.
  - debian/patches: Add headers to all patches.
* debian/maas-dhcp.postrm: Added to disable dnsmasq in cobbler on removal.
* debian/maas.config: Do not set a password with pwgen as it is not an
  essential package; allow dbconfig-common to create a password instead by
  creating an empty question. (LP: #977475)
* Run MAAS, pserv, txlongpoll as non-root user. (LP: #975436)
  - debian/maas.postinst: Create user/group; set correct permissions for
    directories.
  - debian/maas.postrm: Remove user/group; restart apache2.
  - debian/maas.maas-{pserv,txlongpoll}.upstart: Update to run as non-root
    'maas' user.
* debian/patches/01-fix-database-settings.patch: Remove adding of PSERV_URL.
* debian/maas.postinst:
  - Handle config file upgrade from versions lower than 0.1+bzr445+dfsg-0ubuntu1,
    by creating new passwords and updating accordingly
  - use local variables in functions.
  - Handle maas tgt configuration for upgrades from 0.1+bzr459+dfsg-0ubuntu1.
* debian/extras/99-maas: Add squid-deb-proxy file to enable PPAs. (LP: #979383)
* debian/maas.install: Install missing commissioning-user-data script.

[ Dave Walker (Daviey) ]
* debian/patches/02-pserv-config.patch: Refreshed to apply to updated config.

[ Gavin Panella ]
* debian/maas.postinst: Update pserv.yaml and maas_local_settings.py to use
  password.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2012 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Test maasserver components module."""
 
5
 
 
6
from __future__ import (
 
7
    print_function,
 
8
    unicode_literals,
 
9
    )
 
10
 
 
11
__metaclass__ = type
 
12
__all__ = []
 
13
 
 
14
 
 
15
import random
 
16
 
 
17
from maasserver import components
 
18
from maasserver.components import (
 
19
    COMPONENT,
 
20
    discard_persistent_error,
 
21
    get_persistent_errors,
 
22
    register_persistent_error,
 
23
    )
 
24
from maasserver.testing.enum import map_enum
 
25
from maasserver.testing.factory import factory
 
26
from maasserver.testing.testcase import TestCase
 
27
 
 
28
 
 
29
def simple_error_display(error):
 
30
    return str(error)
 
31
 
 
32
 
 
33
def get_random_component():
 
34
    random.choice(map_enum(COMPONENT).values())
 
35
 
 
36
 
 
37
class PersistentErrorsUtilitiesTest(TestCase):
 
38
 
 
39
    def setUp(self):
 
40
        super(PersistentErrorsUtilitiesTest, self).setUp()
 
41
        self._PERSISTENT_ERRORS = {}
 
42
        self.patch(components, '_PERSISTENT_ERRORS', self._PERSISTENT_ERRORS)
 
43
 
 
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)
 
50
 
 
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)
 
59
 
 
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)
 
66
 
 
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)
 
74
 
 
75
    def get_persistent_errors_returns_text_for_error_codes(self):
 
76
        errors, components = [], []
 
77
        for i in range(3):
 
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())