Revision e5966bd9 snf-astakos-app/astakos/im/tests.py

b/snf-astakos-app/astakos/im/tests.py
41 41
from astakos.im.models import *
42 42
from astakos.im import functions
43 43
from astakos.im import settings as astakos_settings
44
from astakos.im import forms
44 45

  
45 46
from urllib import quote
46 47

  
......
156 157
        astakos_settings.SHIBBOLETH_REQUIRE_NAME_INFO = False
157 158

  
158 159
        # shibboleth logged us in
159
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppn", cn="1",
160
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppn",
161
                          cn="Kostas Papadimitriou",
160 162
                          ep_affiliation="Test Affiliation")
161 163
        r = client.get('/im/login/shibboleth?')
162 164
        self.assertEqual(r.status_code, 200)
......
201 203

  
202 204
        # and finally a valid signup
203 205
        post_data['email'] = 'kpap@grnet.gr'
204
        r = client.post('/im/signup', post_data)
205
        self.assertEqual(r.status_code, 200)
206
        r = client.post('/im/signup', post_data, follow=True)
207
        self.assertContains(r, messages.NOTIFICATION_SENT)
206 208

  
207 209
        # everything is ok in our db
208 210
        self.assertEqual(AstakosUser.objects.count(), 1)
......
213 215
        provider = AstakosUserAuthProvider.objects.get(module="shibboleth")
214 216
        self.assertEqual(provider.affiliation, 'Test Affiliation')
215 217
        self.assertEqual(provider.info, {u'email': u'kpap@grnet.gr',
216
                                         u'eppn': u'kpapeppn'})
218
                                         u'eppn': u'kpapeppn',
219
                                         u'name': u'Kostas Papadimitriou'})
217 220

  
218 221
        # lets login (not activated yet)
219
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppn", cn="1", )
222
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppn",
223
                          cn="Kostas Papadimitriou", )
220 224
        r = client.get("/im/login/shibboleth?", follow=True)
221 225
        self.assertContains(r, messages.ACCOUNT_PENDING_MODERATION)
222 226
        r = client.get("/im/profile", follow=True)
......
242 246

  
243 247
        client = ShibbolethClient()
244 248
        # shibboleth logged us in, notice that we use different email
245
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn", cn="1", )
249
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn",
250
                          cn="Kostas Papadimitriou", )
246 251
        r = client.get("/im/login/shibboleth?")
247 252

  
248 253
        # astakos asks if we want to switch a local account to shibboleth
......
262 267
                     'key': pending_key}
263 268
        r = client.post('/im/local', post_data, follow=True)
264 269
        self.assertRedirects(r, "/im/profile")
265
        self.assertContains(r, "Your new login method has been added")
270
        self.assertContains(r, messages.AUTH_PROVIDER_ADDED)
266 271

  
267 272
        self.assertTrue(existing_user.has_auth_provider('shibboleth'))
268 273
        self.assertTrue(existing_user.has_auth_provider('local',
......
280 285
        client.logout()
281 286

  
282 287
        # look Ma, i can login with both my shibboleth and local account
283
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn", cn="1")
288
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn",
289
                          cn="Kostas Papadimitriou")
284 290
        r = client.get("/im/login/shibboleth?", follow=True)
285 291
        self.assertTrue(r.context['request'].user.is_authenticated())
286 292
        self.assertTrue(r.context['request'].user.email == "kpap@grnet.gr")
......
303 309
        self.assertEqual(r.status_code, 200)
304 310

  
305 311
        # cannot add the same eppn
306
        client.set_tokens(mail="secondary@shibboleth.gr", eppn="kpapeppn", cn="1", )
312
        client.set_tokens(mail="secondary@shibboleth.gr", eppn="kpapeppn",
313
                          cn="Kostas Papadimitriou", )
307 314
        r = client.get("/im/login/shibboleth?", follow=True)
308 315
        self.assertRedirects(r, '/im/profile')
309 316
        self.assertTrue(r.status_code, 200)
......
311 318

  
312 319
        # but can add additional eppn
313 320
        client.set_tokens(mail="secondary@shibboleth.gr", eppn="kpapeppn2",
314
                          cn="1", ep_affiliation="affil2")
321
                          cn="Kostas Papadimitriou", ep_affiliation="affil2")
315 322
        r = client.get("/im/login/shibboleth?", follow=True)
316 323
        new_provider = existing_user.auth_providers.get(identifier="kpapeppn2")
317 324
        self.assertRedirects(r, '/im/profile')
......
322 329
        client.reset_tokens()
323 330

  
324 331
        # cannot login with another eppn
325
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppninvalid", cn="1")
332
        client.set_tokens(mail="kpap@grnet.gr", eppn="kpapeppninvalid",
333
                          cn="Kostas Papadimitriou")
326 334
        r = client.get("/im/login/shibboleth?", follow=True)
327 335
        self.assertFalse(r.context['request'].user.is_authenticated())
328 336

  
......
334 342
                                                         identifier='kpapeppn')
335 343
        remove_shibbo2_url = user.get_provider_remove_url('shibboleth',
336 344
                                                         identifier='kpapeppn2')
337
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn", cn="1")
345
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn",
346
                          cn="Kostas Papadimtriou")
338 347
        r = client.get("/im/login/shibboleth?", follow=True)
339 348
        client.reset_tokens()
340 349

  
......
380 389
        user2 = get_local_user('another@grnet.gr')
381 390
        user2.add_auth_provider('shibboleth', identifier='existingeppn')
382 391
        # login
383
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn", cn="1")
392
        client.set_tokens(mail="kpap@shibboleth.gr", eppn="kpapeppn",
393
                          cn="Kostas Papadimitriou")
384 394
        r = client.get("/im/login/shibboleth?", follow=True)
385 395
        # try to assign existing shibboleth identifier of another user
386
        client.set_tokens(mail="kpap_second@shibboleth.gr", eppn="existingeppn", cn="1")
396
        client.set_tokens(mail="kpap_second@shibboleth.gr", eppn="existingeppn",
397
                          cn="Kostas Papadimitriou")
387 398
        r = client.get("/im/login/shibboleth?", follow=True)
388
        self.assertContains(r, 'Account already exists')
399
        self.assertContains(r, messages.AUTH_PROVIDER_ADD_FAILED)
400
        self.assertContains(r, messages.AUTH_PROVIDER_ADD_EXISTS)
389 401

  
390 402

  
391 403
class LocalUserTests(TestCase):
......
422 434
        self.assertEqual(len(get_mailbox('kpap@grnet.gr')), 1)
423 435
        astakos_settings.MODERATION_ENABLED = True
424 436

  
437
    def test_email_case(self):
438
        data = {
439
          'email': 'kPap@grnet.gr',
440
          'password1': '1234',
441
          'password2': '1234'
442
        }
443

  
444
        form = forms.LocalUserCreationForm(data)
445
        self.assertTrue(form.is_valid())
446
        user = form.save()
447
        form.store_user(user, {})
448

  
449
        u = AstakosUser.objects.get(pk=1)
450
        self.assertEqual(u.email, 'kPap@grnet.gr')
451
        self.assertEqual(u.username, 'kpap@grnet.gr')
452
        u.is_active = True
453
        u.email_verified = True
454
        u.save()
455

  
456
        data = {'username': 'kpap@grnet.gr', 'password': '1234'}
457
        login = forms.LoginForm(data=data)
458
        self.assertTrue(login.is_valid())
459

  
460
        data = {'username': 'KpaP@grnet.gr', 'password': '1234'}
461
        login = forms.LoginForm(data=data)
462
        self.assertTrue(login.is_valid())
463

  
464
        data = {
465
          'email': 'kpap@grnet.gr',
466
          'password1': '1234',
467
          'password2': '1234'
468
        }
469
        form = forms.LocalUserCreationForm(data)
470
        self.assertFalse(form.is_valid())
471

  
425 472
    def test_local_provider(self):
426 473
        # enable moderation
427 474
        astakos_settings.MODERATION_ENABLED = True
......
494 541
        self.assertContains(r, "doesn't have an associated user account")
495 542
        r = self.client.post('/im/local', {'username': 'kpap@grnet.gr',
496 543
                                                 'password': 'password'})
497
        print r
498 544
        self.assertContains(r, messages.ACCOUNT_PENDING_ACTIVATION)
499 545
        self.assertContains(r, 'Resend activation')
500 546
        self.assertFalse(r.context['request'].user.is_authenticated())

Also available in: Unified diff