~nataliabidart/ubuntu-sso-client/find-me-bin-dir

« back to all changes in this revision

Viewing changes to ubuntu_sso/utils/webclient/tests/test_gsettings.py

  • Committer: Tarmac
  • Author(s): Manuel de la Pena
  • Date: 2012-02-13 13:14:18 UTC
  • mfrom: (846.3.8 support-user-name-url)
  • Revision ID: tarmac-20120213131418-zd9jflt4dgosetep
Adds support for username:password@domain urls in the qt implementation of the webclient

Show diffs side-by-side

added added

removed removed

Lines of Context:
129
129
                   lambda _: fake_output)
130
130
        ps = gsettings.get_proxy_settings()
131
131
        self.assertEqual(ps, expected)
 
132
 
 
133
    def test_gsettings_parser_authenticated_url(self):
 
134
        """Test a parser of gsettings with creds in the url."""
 
135
        template_values = dict(BASE_GSETTINGS_VALUES)
 
136
        expected_host = "expected_host"
 
137
        expected_port = 54321
 
138
        expected_user = "carlitos"
 
139
        expected_password = "very secret password"
 
140
        composed_url = '%s:%s@%s' % (expected_user, expected_password,
 
141
                                     expected_host)
 
142
        expected = {
 
143
            "host": expected_host,
 
144
            "port": expected_port,
 
145
            "username": expected_user,
 
146
            "password": expected_password,
 
147
        }
 
148
        template_values.update({
 
149
            "mode": "manual",
 
150
            "http_host": composed_url,
 
151
            "http_port": expected_port,
 
152
            "http_use_auth": "false",
 
153
        })
 
154
        fake_output = TEMPLATE_GSETTINGS_OUTPUT.format(**template_values)
 
155
        self.patch(gsettings.subprocess, "check_output",
 
156
                   lambda _: fake_output)
 
157
        ps = gsettings.get_proxy_settings()
 
158
        self.assertEqual(ps, expected)
 
159
 
 
160
    def test_gsettings_auth_over_url(self):
 
161
        """Test that the settings are more important that the url."""
 
162
        template_values = dict(BASE_GSETTINGS_VALUES)
 
163
        expected_host = "expected_host"
 
164
        expected_port = 54321
 
165
        expected_user = "carlitos"
 
166
        expected_password = "very secret password"
 
167
        composed_url = '%s:%s@%s' % ('user', 'random',
 
168
                                     expected_host)
 
169
        expected = {
 
170
            "host": expected_host,
 
171
            "port": expected_port,
 
172
            "username": expected_user,
 
173
            "password": expected_password,
 
174
        }
 
175
        template_values.update({
 
176
            "mode": "manual",
 
177
            "http_host": composed_url,
 
178
            "http_port": expected_port,
 
179
            "auth_user": expected_user,
 
180
            "auth_password": expected_password,
 
181
            "http_use_auth": "true",
 
182
        })
 
183
        fake_output = TEMPLATE_GSETTINGS_OUTPUT.format(**template_values)
 
184
        self.patch(gsettings.subprocess, "check_output",
 
185
                   lambda _: fake_output)
 
186
        ps = gsettings.get_proxy_settings()
 
187
        self.assertEqual(ps, expected)
 
188
 
 
189
 
 
190
class ParseProxyHostTestCase(TestCase):
 
191
    """Test the parsing of the domain."""
 
192
 
 
193
    def test_onlyhost(self):
 
194
        """Parse a host with no username or password."""
 
195
        sample = "hostname"
 
196
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
197
        self.assertEqual(username, None)
 
198
        self.assertEqual(password, None)
 
199
        self.assertEqual(hostname, "hostname")
 
200
 
 
201
    def test_user_and_host(self):
 
202
        """Parse host just with the username."""
 
203
        sample = "username@hostname"
 
204
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
205
        self.assertEqual(username, "username")
 
206
        self.assertEqual(password, None)
 
207
        self.assertEqual(hostname, "hostname")
 
208
 
 
209
    def test_user_pass_and_host(self):
 
210
        """Test parsing a host with a username and password."""
 
211
        sample = "username:password@hostname"
 
212
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
213
        self.assertEqual(username, "username")
 
214
        self.assertEqual(password, "password")
 
215
        self.assertEqual(hostname, "hostname")
 
216
 
 
217
    def test_username_with_at(self):
 
218
        """Test parsing the host with a username with @."""
 
219
        sample = "username@company.com:password@hostname"
 
220
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
221
        self.assertEqual(username, "username@company.com")
 
222
        self.assertEqual(password, "password")
 
223
        self.assertEqual(hostname, "hostname")
 
224
 
 
225
    def test_username_with_at_nopass(self):
 
226
        """Test parsing the host without a password."""
 
227
        sample = "username@company.com@hostname"
 
228
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
229
        self.assertEqual(username, "username@company.com")
 
230
        self.assertEqual(password, None)
 
231
        self.assertEqual(hostname, "hostname")
 
232
 
 
233
    def test_user_pass_with_colon_and_host(self):
 
234
        """Test parsing the host with a password that contains :."""
 
235
        sample = "username:pass:word@hostname"
 
236
        hostname, username, password = gsettings.parse_proxy_host(sample)
 
237
        self.assertEqual(username, "username")
 
238
        self.assertEqual(password, "pass:word")
 
239
        self.assertEqual(hostname, "hostname")