~tribaal/+junk/landscape-client-14.12-0ubuntu0.10.04

« back to all changes in this revision

Viewing changes to landscape/ui/controller/tests/test_app.py

  • Committer: Chris Glass
  • Date: 2014-12-15 06:54:28 UTC
  • Revision ID: chris.glass@canonical.com-20141215065428-e23g6yyvrsvyb656
Imported pristine tarball.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import sys
 
2
 
 
3
from landscape.ui.tests.helpers import (
 
4
    ConfigurationProxyHelper, dbus_test_should_skip, dbus_skip_message,
 
5
    FakeGSettings)
 
6
 
 
7
if not dbus_test_should_skip:
 
8
    from gi.repository import Gtk
 
9
    from landscape.ui.controller.app import SettingsApplicationController
 
10
    from landscape.ui.controller.configuration import ConfigController
 
11
    from landscape.ui.view.configuration import ClientSettingsDialog
 
12
    from landscape.ui.model.configuration.uisettings import UISettings
 
13
else:
 
14
    SettingsApplicationController = object
 
15
 
 
16
from landscape.tests.helpers import LandscapeTest
 
17
 
 
18
 
 
19
class ConnectionRecordingSettingsApplicationController(
 
20
    SettingsApplicationController):
 
21
    _connections = set()
 
22
    _connection_args = {}
 
23
    _connection_kwargs = {}
 
24
 
 
25
    def __init__(self, get_config=None, get_uisettings=None):
 
26
        super(ConnectionRecordingSettingsApplicationController,
 
27
              self).__init__()
 
28
        if get_config:
 
29
            self.get_config = get_config
 
30
        if get_uisettings:
 
31
            self.get_uisettings = get_uisettings
 
32
 
 
33
    def _make_connection_name(self, signal, func):
 
34
        return signal + ">" + func.__name__
 
35
 
 
36
    def _record_connection(self, signal, func, *args, **kwargs):
 
37
        connection_name = self._make_connection_name(signal, func)
 
38
        self._connections.add(connection_name)
 
39
        signal_connection_args = self._connection_args.get(
 
40
            connection_name, [])
 
41
        signal_connection_args.append(repr(args))
 
42
        self._connection_args = signal_connection_args
 
43
        signal_connection_kwargs = self._connection_kwargs.get(
 
44
            connection_name, [])
 
45
        signal_connection_kwargs.append(repr(kwargs))
 
46
        self._connection_kwargs = signal_connection_kwargs
 
47
 
 
48
    def is_connected(self, signal, func):
 
49
        connection_name = self._make_connection_name(signal, func)
 
50
        return self._connections.issuperset(set([connection_name]))
 
51
 
 
52
    def connect(self, signal, func, *args, **kwargs):
 
53
        self._record_connection(signal, func)
 
54
 
 
55
 
 
56
class SettingsApplicationControllerInitTest(LandscapeTest):
 
57
 
 
58
    def setUp(self):
 
59
        super(SettingsApplicationControllerInitTest, self).setUp()
 
60
 
 
61
    def test_init(self):
 
62
        """
 
63
        Test we connect activate to something useful on application
 
64
        initialisation.
 
65
        """
 
66
        app = ConnectionRecordingSettingsApplicationController()
 
67
        self.assertTrue(app.is_connected("activate", app.setup_ui))
 
68
 
 
69
    if dbus_test_should_skip:
 
70
        skip = dbus_skip_message
 
71
 
 
72
 
 
73
class SettingsApplicationControllerUISetupTest(LandscapeTest):
 
74
 
 
75
    helpers = [ConfigurationProxyHelper]
 
76
 
 
77
    def setUp(self):
 
78
        self.config_string = "\n".join(
 
79
            ["[client]",
 
80
             "data_path = %s" % sys.path[0],
 
81
             "http_proxy = http://proxy.localdomain:3192",
 
82
             "tags = a_tag",
 
83
             "url = https://landscape.canonical.com/message-system",
 
84
             "account_name = foo",
 
85
             "registration_key = bar",
 
86
             "computer_title = baz",
 
87
             "https_proxy = https://proxy.localdomain:6192",
 
88
             "ping_url = http://landscape.canonical.com/ping"])
 
89
        self.default_data = {"management-type": "not",
 
90
                             "computer-title": "",
 
91
                             "hosted-landscape-host": "",
 
92
                             "hosted-account-name": "",
 
93
                             "hosted-password": "",
 
94
                             "local-landscape-host": "",
 
95
                             "local-account-name": "",
 
96
                             "local-password": ""}
 
97
        super(SettingsApplicationControllerUISetupTest, self).setUp()
 
98
 
 
99
        def fake_run(obj):
 
100
            """
 
101
            Retard X11 mapping.
 
102
            """
 
103
            pass
 
104
 
 
105
        self._real_run = Gtk.Dialog.run
 
106
        Gtk.Dialog.run = fake_run
 
107
 
 
108
        def get_config():
 
109
            return self.proxy
 
110
 
 
111
        def get_uisettings():
 
112
            settings = FakeGSettings(data=self.default_data)
 
113
            return UISettings(settings)
 
114
 
 
115
        self.app = ConnectionRecordingSettingsApplicationController(
 
116
            get_config=get_config, get_uisettings=get_uisettings)
 
117
 
 
118
    def tearDown(self):
 
119
        Gtk.Dialog.run = self._real_run
 
120
        super(
 
121
            SettingsApplicationControllerUISetupTest, self).tearDown()
 
122
 
 
123
    def test_setup_ui(self):
 
124
        """
 
125
        Test that we correctly setup the L{ClientSettingsDialog} with
 
126
        the config object and correct data
 
127
        """
 
128
        self.assertRaises(SystemExit, self.app.setup_ui, data=None,
 
129
                          asynchronous=False)
 
130
        self.assertIsInstance(self.app.settings_dialog, ClientSettingsDialog)
 
131
        self.assertIsInstance(self.app.settings_dialog.controller,
 
132
                              ConfigController)
 
133
 
 
134
    if dbus_test_should_skip:
 
135
        skip = dbus_skip_message