diff --git a/CHANGELOG.md b/CHANGELOG.md index 812d4639..85a745ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ and this project adheres to ## [Unreleased] +## Added + +- 🤡(demo) generate dummy documents on dev users #120 + ## [1.0.0] - 2024-07-02 ## Added diff --git a/docker/auth/realm.json b/docker/auth/realm.json index c8b72d6c..cee70d21 100644 --- a/docker/auth/realm.json +++ b/docker/auth/realm.json @@ -1339,6 +1339,21 @@ "jsonType.label": "String" } }, + { + "id": "qb109597-e31e-46d7-7844-62e5fcf32ac8", + "name": "email sub", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "sub", + "jsonType.label": "String" + } + }, { "id": "61c135e5-2447-494b-bc70-9612f383be27", "name": "email verified", diff --git a/src/backend/demo/defaults.py b/src/backend/demo/defaults.py index c7d17451..4f6fb5a2 100644 --- a/src/backend/demo/defaults.py +++ b/src/backend/demo/defaults.py @@ -5,3 +5,19 @@ NB_OBJECTS = { "docs": 50, "max_users_per_document": 50, } + +DEV_USERS = [ + { + "username": "impress", + "email": "impress@impress.world", + }, + { + "username": "user-e2e-webkit", + "email": "user@webkit.e2e", + }, + { + "username": "user-e2e-firefox", + "email": "user@firefox.e2e", + }, + {"username": "user-e2e-chromium", "email": "user@chromium.e2e"}, +] diff --git a/src/backend/demo/management/commands/create_demo.py b/src/backend/demo/management/commands/create_demo.py index 9229e442..c32d046d 100644 --- a/src/backend/demo/management/commands/create_demo.py +++ b/src/backend/demo/management/commands/create_demo.py @@ -152,6 +152,38 @@ def create_demo(stdout): ) queue.flush() + with Timeit(stdout, "Creating development users"): + for dev_user in defaults.DEV_USERS: + queue.push( + models.User( + admin_email=dev_user["email"], + email=dev_user["email"], + sub=dev_user["email"], + password="!", + is_superuser=False, + is_active=True, + is_staff=False, + language=random.choice(settings.LANGUAGES)[0], + ) + ) + + queue.flush() + + with Timeit(stdout, "Creating docs accesses on development users"): + for dev_user in defaults.DEV_USERS: + docs_ids = list(models.Document.objects.values_list("id", flat=True)) + user_id = models.User.objects.get(email=dev_user["email"]).id + + for doc_id in docs_ids: + role = random.choice(models.RoleChoices.choices) + queue.push( + models.DocumentAccess( + document_id=doc_id, user_id=user_id, role=role[0] + ) + ) + + queue.flush() + with Timeit(stdout, "Creating Template"): with open( file="demo/data/template/code.txt", mode="r", encoding="utf-8" diff --git a/src/backend/demo/tests/test_commands_create_demo.py b/src/backend/demo/tests/test_commands_create_demo.py index 631f2fea..66f227bc 100644 --- a/src/backend/demo/tests/test_commands_create_demo.py +++ b/src/backend/demo/tests/test_commands_create_demo.py @@ -19,3 +19,13 @@ def test_commands_create_demo(): assert models.User.objects.count() >= 50 assert models.Document.objects.count() >= 50 assert models.DocumentAccess.objects.count() > 50 + + # assert dev users have doc accesses + user = models.User.objects.get(email="impress@impress.world") + assert models.DocumentAccess.objects.filter(user=user).exists() + user = models.User.objects.get(email="user@webkit.e2e") + assert models.DocumentAccess.objects.filter(user=user).exists() + user = models.User.objects.get(email="user@firefox.e2e") + assert models.DocumentAccess.objects.filter(user=user).exists() + user = models.User.objects.get(email="user@chromium.e2e") + assert models.DocumentAccess.objects.filter(user=user).exists()