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