11 |
11 |
import utils
|
12 |
12 |
|
13 |
13 |
from django.core.urlresolvers import reverse
|
|
14 |
from django.db import connection
|
|
15 |
from django.db.migrations.executor import MigrationExecutor
|
14 |
16 |
from django.utils.timezone import now
|
15 |
17 |
from django.contrib.auth import get_user_model
|
16 |
18 |
|
|
19 |
|
17 |
20 |
User = get_user_model()
|
18 |
21 |
|
19 |
22 |
from authentic2_idp_oidc.models import OIDCClient, OIDCAuthorization, OIDCCode, OIDCAccessToken, OIDCClaim
|
... | ... | |
856 |
859 |
|
857 |
860 |
|
858 |
861 |
def test_oidclient_claims_data_migration():
|
859 |
|
from django.db import connection
|
860 |
|
from django.db.migrations.executor import MigrationExecutor
|
861 |
|
|
862 |
862 |
executor = MigrationExecutor(connection)
|
863 |
863 |
app = 'authentic2_idp_oidc'
|
864 |
864 |
migrate_from = [(app, '0009_auto_20180313_1156')]
|
... | ... | |
877 |
877 |
assert OIDCClaim.objects.filter(client=client.id).count() == 5
|
878 |
878 |
|
879 |
879 |
|
|
880 |
def test_oidclient_preferred_username_as_identifier_data_migration():
|
|
881 |
executor = MigrationExecutor(connection)
|
|
882 |
app = 'authentic2_idp_oidc'
|
|
883 |
migrate_from = [(app, '0010_oidcclaim')]
|
|
884 |
migrate_to = [(app, '0011_auto_20180808_1546')]
|
|
885 |
executor.migrate(migrate_from)
|
|
886 |
executor.loader.build_graph()
|
|
887 |
old_apps = executor.loader.project_state(migrate_from).apps
|
|
888 |
OIDCClient = old_apps.get_model('authentic2_idp_oidc', 'OIDCClient')
|
|
889 |
OIDCClaim = old_apps.get_model('authentic2_idp_oidc', 'OIDCClaim')
|
|
890 |
client1 = OIDCClient.objects.create(name='test', slug='test', redirect_uris='https://example.net/')
|
|
891 |
client2 = OIDCClient.objects.create(name='test1', slug='test1', redirect_uris='https://example.net/')
|
|
892 |
client3 = OIDCClient.objects.create(name='test2', slug='test2', redirect_uris='https://example.net/')
|
|
893 |
for client in (client1, client2, client3):
|
|
894 |
if client.name == 'test1':
|
|
895 |
continue
|
|
896 |
OIDCClaim.objects.create(client=client, name='preferred_username', value='django_user_username', scopes='profile')
|
|
897 |
OIDCClaim.objects.create(client=client, name='given_name', value='django_user_first_name', scopes='profile')
|
|
898 |
OIDCClaim.objects.create(client=client, name='family_name', value='django_user_last_name', scopes='profile')
|
|
899 |
if client.name == 'test2':
|
|
900 |
continue
|
|
901 |
OIDCClaim.objects.create(client=client, name='email', value='django_user_email', scopes='email')
|
|
902 |
OIDCClaim.objects.create(client=client, name='email_verified', value='django_user_email_verified', scopes='email')
|
|
903 |
executor.migrate(migrate_to)
|
|
904 |
executor.loader.build_graph()
|
|
905 |
client = OIDCClient.objects.first()
|
|
906 |
for client in OIDCClient.objects.all():
|
|
907 |
claims = client.oidcclaim_set.all()
|
|
908 |
if client.name == 'test':
|
|
909 |
assert claims.count() == 5
|
|
910 |
assert sorted(claims.values_list('name', flat=True)) == [u'email', u'email_verified', u'family_name', u'given_name', u'preferred_username']
|
|
911 |
assert sorted(claims.values_list('value', flat=True)) == [u'django_user_email', u'django_user_email_verified', u'django_user_first_name', u'django_user_identifier', u'django_user_last_name']
|
|
912 |
elif client.name == 'test2':
|
|
913 |
assert claims.count() == 3
|
|
914 |
assert sorted(claims.values_list('name', flat=True)) == [u'family_name', u'given_name', u'preferred_username']
|
|
915 |
assert sorted(claims.values_list('value', flat=True)) == [u'django_user_first_name', u'django_user_last_name', u'django_user_username']
|
|
916 |
else:
|
|
917 |
assert claims.count() == 0
|
|
918 |
|
|
919 |
|
880 |
920 |
def test_api_synchronization(app, oidc_client):
|
881 |
921 |
oidc_client.has_api_access = True
|
882 |
922 |
oidc_client.save()
|
883 |
|
-
|