~mpontillo/maas/discovery-js-factory

« back to all changes in this revision

Viewing changes to src/maasserver/websockets/handlers/tests/test_discovery.py

  • Committer: Mike Pontillo
  • Date: 2016-09-02 20:25:22 UTC
  • Revision ID: mike.pontillo@canonical.com-20160902202522-3gid0v8jz1sn0hri
Add discovery websocket handler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2016 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Tests for `maasserver.websockets.handlers.discovery`"""
 
5
 
 
6
__all__ = []
 
7
 
 
8
from maasserver.dbviews import register_view
 
9
from maasserver.models.discovery import Discovery
 
10
from maasserver.testing.factory import factory
 
11
from maasserver.testing.testcase import MAASServerTestCase
 
12
from maasserver.websockets.handlers.discovery import DiscoveryHandler
 
13
from maasserver.websockets import dehydrate_datetime
 
14
 
 
15
 
 
16
class TestDiscoveryHandler(MAASServerTestCase):
 
17
 
 
18
    def setUp(self):
 
19
        super().setUp()
 
20
        register_view("maasserver_discovery")
 
21
 
 
22
    def dehydrate_discovery(self, discovery, for_list=False):
 
23
        data = {
 
24
            "discovery_id": discovery.discovery_id,
 
25
            "fabric": discovery.fabric_id,
 
26
            "fabric_name": discovery.fabric_name,
 
27
            "hostname": discovery.hostname,
 
28
            "id": discovery.id,
 
29
            "ip": discovery.ip,
 
30
            "mdns": discovery.mdns_id,
 
31
            "mac_address": discovery.mac_address,
 
32
            "neighbour": discovery.neighbour_id,
 
33
            "observer": discovery.observer_id,
 
34
            "observer_hostname": discovery.observer_hostname,
 
35
            "observer_interface": discovery.observer_interface_id,
 
36
            "observer_interface_name": discovery.observer_interface_name,
 
37
            "observer_system_id": discovery.observer_system_id,
 
38
            "vid": discovery.vid,
 
39
            "vlan": discovery.vlan_id,
 
40
            "last_seen": dehydrate_datetime(discovery.last_seen)
 
41
        }
 
42
        return data
 
43
 
 
44
    def test_get(self):
 
45
        user = factory.make_User()
 
46
        handler = DiscoveryHandler(user, {})
 
47
        discovery = factory.make_Discovery()
 
48
        self.assertEqual(
 
49
            self.dehydrate_discovery(discovery),
 
50
            handler.get({"discovery_id": discovery.discovery_id}))
 
51
 
 
52
    def test_list(self):
 
53
        user = factory.make_User()
 
54
        handler = DiscoveryHandler(user, {})
 
55
        factory.make_Discovery()
 
56
        factory.make_Discovery()
 
57
        expected_discoveries = [
 
58
            self.dehydrate_discovery(discovery, for_list=True)
 
59
            for discovery in Discovery.objects.all()
 
60
            ]
 
61
        self.assertItemsEqual(
 
62
            expected_discoveries,
 
63
            handler.list({}))