1 from gnome import gconf
2 from wifi_assistant.daemon.daemon import Daemon
3 from wifi_assistant.settings.network_setting import NetworkSetting
8 default_url_to_open = 'http://wifi-assistant.garage.maemo.org'
9 default_browser_name = "default"
10 default_browser_options = {'url':default_url_to_open}
11 default_settings = NetworkSetting()
12 default_settings.setNameOfBrowserToLaunch(default_browser_name)
13 default_settings.setBrowserOptions(default_browser_options)
15 ssid = 'A Network Name'
16 settings_without_options = NetworkSetting()
17 settings_without_options.setNetworkName(ssid)
18 settings_without_options.setLaunchingOfBrowserEnabled(True)
20 second_ssid = 'Another Network SSID'
21 second_url = 'http://some.specific.site/'
22 second_browser_name = 'special browser'
23 second_settings = NetworkSetting()
24 second_settings.setNetworkName(second_ssid)
25 second_settings.setNameOfBrowserToLaunch(second_browser_name)
26 second_settings.setLaunchingOfBrowserEnabled(True)
27 second_browser_options = {'url': second_url}
28 second_settings.setBrowserOptions(second_browser_options)
30 class DaemonTest(unittest.TestCase):
33 self.launcher = Mock()
34 self.application_settings = Mock()
35 self.network_settings = Mock()
36 self.parent_window = None
39 def test_withANewNetwork_whenUserClicksYes_browserIsLaunched(self):
41 self._createTesteeWithPopupClickingYes()
42 given(self.network_settings).get(ssid).willReturn(None)
43 given(self.network_settings).getDefaultSettings().willReturn(default_settings)
47 self.testee.connectionEstablished(ssid)
50 verify(self.network_settings).getDefaultSettings()
51 verify(self.launcher).launchBrowser(default_browser_name, default_browser_options)
54 def test_withANewNetwork_whenUserClicksNo_browserIsNotLaunched(self):
56 self._createTesteeWithPopupClickingNo()
57 given(self.network_settings).get(ssid).willReturn(None)
61 self.testee.connectionEstablished(ssid)
64 verify(self.launcher, never()).launchBrowser(default_browser_name, default_browser_options)
67 def test_popupIsNotOpenedIfPopupIsDisabledInApplicationSettings(self):
69 given(self.application_settings).getUsePopup().willReturn(False)
70 self.testee = Daemon(self.launcher, self.application_settings, self.network_settings, self.parent_window)
73 self.testee.connectionEstablished(ssid)
75 verify(self.launcher, never()).launchBrowser()
76 # TODO: refactor out gui part (popup) and test/mock that
79 def test_knownSsidWithLaunchSetToTrueUsesDefaultBrowserAndUrl(self):
80 given(self.network_settings).get(ssid).willReturn(settings_without_options)
81 given(self.network_settings).getDefaultSettings().willReturn(default_settings)
82 given(self.application_settings).getUsePopup().willReturn(True)
83 self.testee = self._createTestee()
86 self.testee.connectionEstablished(ssid)
88 verify(self.launcher, once()).launchBrowser(default_browser_name, default_browser_options)
91 def test_browserIsLaunchedWithSsidSpecificUrl_insteadOfDefaultUrl(self):
92 given(self.network_settings).get(second_ssid).willReturn(second_settings)
93 given(self.application_settings).getUsePopup().willReturn(True)
94 self.testee = self._createTestee()
97 self.testee.connectionEstablished(second_ssid)
99 verify(self.launcher, once()).launchBrowser(second_browser_name, second_browser_options)
102 def test_daemon_start_registersListenerWithApplicationSettings(self):
103 given(self.application_settings).getUsePopup().willReturn(True)
104 self.testee = self._createTestee()
105 given(self.application_settings).registerUsePopupListener(self.testee._usePopupEventCallback).willReturn(1234)
109 verify(self.application_settings, never()).registerUsePopupListener()
111 verify(self.application_settings, once()).registerUsePopupListener(self.testee._usePopupEventCallback)
113 verify(self.application_settings, never()).unregisterUsePopupListener()
115 verify(self.application_settings, once()).unregisterUsePopupListener(self.testee._usePopupEventCallback)
118 def _createTestee(self):
119 def _empty(*args, **kwargs):
121 daemon = Daemon(self.launcher, self.application_settings, self.network_settings, self.parent_window)
122 daemon._startLoop = _empty
126 def _createTesteeWithPopupClickingYes(self):
127 given(self.application_settings).getUsePopup().willReturn(True)
128 self.testee = self._createTestee()
130 def yes(*args, **kwargs):
132 self.testee.showDecisionDialog = yes
135 def _createTesteeWithPopupClickingNo(self):
136 given(self.application_settings).getUsePopup().willReturn(True)
137 self.testee = self._createTestee()
139 def no(*args, **kwargs):
141 self.testee.showDecisionDialog = no
144 def _replayMocks(self):
145 self.application_settings.replay()
146 self.launcher.replay()
147 self.network_settings.replay()
150 if __name__ == '__main__':