Revision 0a7a4104 snf-astakos-app/astakos/im/tests.py

b/snf-astakos-app/astakos/im/tests.py
66 66

  
67 67
settings.LOGGING_SETUP['disable_existing_loggers'] = False
68 68

  
69

  
70
prefixes = {'im': 'ASTAKOS_', 'providers': 'AUTH_PROVIDER_',
71
            'shibboleth': 'AUTH_PROVIDER_SHIBBOLETH_',
72
            'local': 'AUTH_PROVIDER_LOCAL_'}
69
# shortcut decorators to override provider settings
70
# e.g. shibboleth_settings(ENABLED=True) will set
71
# ASTAKOS_AUTH_PROVIDER_SHIBBOLETH_ENABLED = True in global synnefo settings
72
prefixes = {'providers': 'AUTH_PROVIDER_',
73
            'shibboleth': 'ASTAKOS_AUTH_PROVIDER_SHIBBOLETH_',
74
            'local': 'ASTAKOS_AUTH_PROVIDER_LOCAL_'}
73 75
im_settings = functools.partial(with_settings, astakos_settings)
74
provider_settings = functools.partial(with_settings, astakos_settings,
75
                                      prefix=prefixes['providers'])
76 76
shibboleth_settings = functools.partial(with_settings,
77
                                        astakos_settings,
77
                                        settings,
78 78
                                        prefix=prefixes['shibboleth'])
79
localauth_settings = functools.partial(with_settings, astakos_settings,
79
localauth_settings = functools.partial(with_settings, settings,
80 80
                                       prefix=prefixes['local'])
81 81

  
82

  
82 83
class AstakosTestClient(Client):
83 84
    pass
84 85

  
86

  
85 87
class ShibbolethClient(AstakosTestClient):
86 88
    """
87 89
    A shibboleth agnostic client.
......
182 184
        astakos_settings.IM_MODULES = ['local', 'shibboleth']
183 185
        astakos_settings.MODERATION_ENABLED = True
184 186

  
187
    @im_settings(FORCE_PROFILE_UPDATE=False)
185 188
    def test_create_account(self):
186 189

  
187 190
        client = ShibbolethClient()
......
233 236
                     'last_name': 'Mitroglou',
234 237
                     'provider': 'shibboleth'}
235 238

  
239
        signup_url = reverse('signup')
240

  
236 241
        # invlid email
237 242
        post_data['email'] = 'kpap'
238
        r = client.post('/im/signup', post_data)
243
        r = client.post(signup_url, post_data)
239 244
        self.assertContains(r, token)
240 245

  
241 246
        # existing email
242 247
        existing_user = get_local_user('test@test.com')
243 248
        post_data['email'] = 'test@test.com'
244
        r = client.post('/im/signup', post_data)
249
        r = client.post(signup_url, post_data)
245 250
        self.assertContains(r, messages.EMAIL_USED)
246 251
        existing_user.delete()
247 252

  
248 253
        # and finally a valid signup
249 254
        post_data['email'] = 'kpap@grnet.gr'
250
        r = client.post('/im/signup', post_data, follow=True)
255
        r = client.post(signup_url, post_data, follow=True)
251 256
        self.assertContains(r, messages.NOTIFICATION_SENT)
252 257

  
253 258
        # everything is ok in our db
......
267 272
                          cn="Kostas Papadimitriou", )
268 273
        r = client.get("/im/login/shibboleth?", follow=True)
269 274
        self.assertContains(r, 'is pending moderation')
270
        r = client.get("/im/profile", follow=True)
271
        self.assertRedirects(r, 'http://testserver/im/?next=/im/profile')
272 275

  
273 276
        # admin activates our user
274 277
        u = AstakosUser.objects.get(username="kpap@grnet.gr")
......
434 437

  
435 438
        # we can reenable the local provider by setting a password
436 439
        r = client.get("/im/password_change", follow=True)
437
        r = client.post("/im/password_change", {'new_password1':'111',
440
        r = client.post("/im/password_change", {'new_password1': '111',
438 441
                                                'new_password2': '111'},
439 442
                        follow=True)
440 443
        user = r.context['request'].user
......
539 542
        form = forms.LocalUserCreationForm(data)
540 543
        self.assertFalse(form.is_valid())
541 544

  
542
    @with_settings(settings, HELPDESK=(('support','support@synnefo.org'),))
545
    @im_settings(HELPDESK=(('support', 'support@synnefo.org'),))
546
    @im_settings(FORCE_PROFILE_UPDATE=False)
543 547
    def test_local_provider(self):
544 548
        self.helpdesk_email = astakos_settings.HELPDESK[0][1]
545 549
        # enable moderation
......
564 568
        self.assertFalse(user.activation_sent)  # activation automatically sent
565 569

  
566 570
        # admin gets notified and activates the user from the command line
567

  
568 571
        self.assertEqual(len(get_mailbox(self.helpdesk_email)), 1)
569 572
        r = self.client.post('/im/local', {'username': 'kpap@grnet.gr',
570 573
                                           'password': 'password'})
......
782 785
    @shibboleth_settings(AUTOMODERATE_POLICY=True)
783 786
    @im_settings(IM_MODULES=['shibboleth', 'local'])
784 787
    @im_settings(MODERATION_ENABLED=True)
788
    @im_settings(FORCE_PROFILE_UPDATE=False)
785 789
    def test_user(self):
786 790
        Profile = AuthProviderPolicyProfile
787 791
        Pending = PendingThirdPartyUser
788 792
        User = AstakosUser
789 793

  
790
        oldpendinguser = User.objects.create(email="newuser@grnet.gr")
791
        olduser = get_local_user("olduser@grnet.gr")
794
        User.objects.create(email="newuser@grnet.gr")
795
        get_local_user("olduser@grnet.gr")
792 796
        cl_olduser = ShibbolethClient()
793
        olduser2 = get_local_user("olduser2@grnet.gr")
794
        cl_olduser2 = ShibbolethClient()
797
        get_local_user("olduser2@grnet.gr")
798
        ShibbolethClient()
795 799
        cl_newuser = ShibbolethClient()
796 800
        cl_newuser2 = Client()
797 801

  
798
        policy = ('only_academic', 'shibboleth')
799 802
        academic_group, created = Group.objects.get_or_create(
800 803
            name='academic-login')
801 804
        academic_users = academic_group.user_set
......
1201 1204
        self.service = Service.objects.create(name="service1",
1202 1205
                                              api_url="http://service.api")
1203 1206
        self.resource = Resource.objects.create(name="service1.resource",
1204
                                                uplimit=100)
1207
                                                uplimit=100,
1208
                                                service=self.service)
1205 1209
        self.admin = get_local_user("projects-admin@synnefo.org")
1206 1210
        self.admin.uuid = 'uuid1'
1207 1211
        self.admin.save()

Also available in: Unified diff