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

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez, Dave Walker (Daviey), Andres Rodriguez
  • Date: 2012-03-27 14:49:56 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120327144956-zezstgry6t61438x
Tags: 0.1+bzr363+dfsg-0ubuntu1
[ Dave Walker (Daviey) ]
* debian/control: Add openssh-server as a Recommends, and wrap-and-sort. 

[ Andres Rodriguez ]
* debian/maas.postinst:
  - Do not start apache with apache2ctl. Use invoke-rc.d instead to not
    fail in the installer.
  - For start of postgresql before creating the DB, otherwise it will
    fail in the installer.
  - Add check of invoke-rc.d for syslog.
  - Add check of invoke-rc.d for rabbitmq-server; Add check for rabbitmqctl
  - Add db_stop, in case invoke-rc.d fails.
* debian/control: Tight python-django-maas dependency.
* debian/postrm: Add check for rabbitmqctl.
* debian/maas.maas-txlongpoll.upstart: Create rabbitmq longpoll user/vhost
  and set permissions if they don't exist. Start on rabbitmq-server-running.

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
    Node,
38
38
    NODE_STATUS,
39
39
    NODE_STATUS_CHOICES_DICT,
 
40
    SSHKey,
40
41
    SYSTEM_USERS,
41
42
    UserProfile,
42
43
    )
 
44
from maasserver.provisioning import get_provisioning_api_proxy
43
45
from maasserver.testing.enum import map_enum
44
46
from maasserver.testing.factory import factory
45
47
from maasserver.testing.testcase import TestCase
68
70
        self.assertEqual(len(node.system_id), 41)
69
71
        self.assertTrue(node.system_id.startswith('node-'))
70
72
 
71
 
    def test_display_status(self):
 
73
    def test_display_status_shows_default_status(self):
72
74
        node = factory.make_node()
73
75
        self.assertEqual(
74
 
            NODE_STATUS_CHOICES_DICT[NODE_STATUS.DEFAULT_STATUS],
 
76
            NODE_STATUS_CHOICES_DICT[node.status],
 
77
            node.display_status())
 
78
 
 
79
    def test_display_status_for_allocated_node_shows_owner(self):
 
80
        node = factory.make_node(
 
81
            owner=factory.make_user(), status=NODE_STATUS.ALLOCATED)
 
82
        self.assertEqual(
 
83
            "Allocated to %s" % node.owner.username,
75
84
            node.display_status())
76
85
 
77
86
    def test_add_node_with_token(self):
284
293
        self.assertEqual(
285
294
            None, Node.objects.get_available_node_for_acquisition(user))
286
295
 
 
296
    def test_get_available_node_combines_constraint_with_availability(self):
 
297
        user = factory.make_user()
 
298
        node = self.make_node(factory.make_user())
 
299
        self.assertEqual(
 
300
            None,
 
301
            Node.objects.get_available_node_for_acquisition(
 
302
                user, {'name': node.system_id}))
 
303
 
 
304
    def test_get_available_node_constrains_by_name(self):
 
305
        user = factory.make_user()
 
306
        nodes = [self.make_node() for counter in range(3)]
 
307
        self.assertEqual(
 
308
            nodes[1],
 
309
            Node.objects.get_available_node_for_acquisition(
 
310
                user, {'name': nodes[1].system_id}))
 
311
 
 
312
    def test_get_available_node_returns_None_if_name_is_unknown(self):
 
313
        user = factory.make_user()
 
314
        self.assertEqual(
 
315
            None,
 
316
            Node.objects.get_available_node_for_acquisition(
 
317
                user, {'name': factory.getRandomString()}))
 
318
 
287
319
    def test_stop_nodes_stops_nodes(self):
288
320
        user = factory.make_user()
289
321
        node = self.make_node(user)
290
322
        output = Node.objects.stop_nodes([node.system_id], user)
291
323
 
292
324
        self.assertItemsEqual([node], output)
293
 
        self.assertEqual(
294
 
            'stop',
295
 
            Node.objects.provisioning_proxy.power_status[node.system_id])
 
325
        power_status = get_provisioning_api_proxy().power_status
 
326
        self.assertEqual('stop', power_status[node.system_id])
296
327
 
297
328
    def test_stop_nodes_ignores_uneditable_nodes(self):
298
329
        nodes = [self.make_node(factory.make_user()) for counter in range(3)]
308
339
        output = Node.objects.start_nodes([node.system_id], user)
309
340
 
310
341
        self.assertItemsEqual([node], output)
311
 
        self.assertEqual(
312
 
            'start',
313
 
            Node.objects.provisioning_proxy.power_status[node.system_id])
 
342
        power_status = get_provisioning_api_proxy().power_status
 
343
        self.assertEqual('start', power_status[node.system_id])
314
344
 
315
345
    def test_start_nodes_ignores_uneditable_nodes(self):
316
346
        nodes = [self.make_node(factory.make_user()) for counter in range(3)]
490
520
        self.assertTrue(set(SYSTEM_USERS).isdisjoint(usernames))
491
521
 
492
522
 
 
523
class SSHKeyManagerTest(TestCase):
 
524
    """Testing for the :class `SSHKeyManager` model manager."""
 
525
 
 
526
    def test_get_keys_for_user_no_keys(self):
 
527
        user = factory.make_user()
 
528
        keys = SSHKey.objects.get_keys_for_user(user)
 
529
        self.assertItemsEqual([], keys)
 
530
 
 
531
    def test_get_keys_for_user_with_keys(self):
 
532
        user1 = factory.make_user_with_keys(n_keys=3, username='user1')
 
533
        # user2
 
534
        factory.make_user_with_keys(n_keys=2)
 
535
        keys = SSHKey.objects.get_keys_for_user(user1)
 
536
        self.assertItemsEqual([
 
537
            'ssh-rsa KEY user1-key-0',
 
538
            'ssh-rsa KEY user1-key-1',
 
539
            'ssh-rsa KEY user1-key-2',
 
540
            ], keys)
 
541
 
 
542
 
493
543
class FileStorageTest(TestCase):
494
544
    """Testing of the :class:`FileStorage` model."""
495
545