Skip to content

Commit ef3b89b

Browse files
authored
Merge pull request #3681 from webkom/fix-abakus-verification
2 parents eda02d2 + 6dd5265 commit ef3b89b

File tree

3 files changed

+53
-6
lines changed

3 files changed

+53
-6
lines changed

lego/apps/users/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,10 @@ def verify_student(self, feide_groups) -> bool:
467467
grade_group.add_user(self)
468468
self.student_verification_status = True
469469
self.save()
470+
try:
471+
AbakusGroup.objects.get(name="Abakus").add_user(self)
472+
except AbakusGroup.DoesNotExist:
473+
pass
470474
return True
471475

472476
# Student has no allowed groups

lego/apps/users/tests/test_student_confirmation_api.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ class ValidateOIDCAPITestCase(BaseAPITestCase):
199199
}
200200

201201
def setUp(self):
202+
self.abakus_group = AbakusGroup.objects.get(name="Abakus")
202203
self.grade_data_1 = AbakusGroup.objects.create(
203204
name=constants.FIRST_GRADE_DATA, type=constants.GROUP_GRADE
204205
)
@@ -214,6 +215,7 @@ def setUp(self):
214215

215216
self.user_with_student_confirmation = User.objects.get(username="test1")
216217
self.grade_data_4.add_user(self.user_with_student_confirmation)
218+
self.abakus_group.add_user(self.user_with_student_confirmation)
217219
self.user_without_student_confirmation = User.objects.get(username="test2")
218220

219221
self.client.force_authenticate(self.user_without_student_confirmation)
@@ -234,6 +236,11 @@ def test_data_1st(self, *args):
234236
self.assertEqual(
235237
self.user_without_student_confirmation.grade.id, self.grade_data_1.id
236238
)
239+
self.assertTrue(
240+
self.user_without_student_confirmation.abakus_groups.filter(
241+
pk=self.abakus_group.pk
242+
).exists()
243+
)
237244

238245
@mock.patch("lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.KOMTEK))
239246
def test_komtek_1st(self, *args):
@@ -245,6 +252,11 @@ def test_komtek_1st(self, *args):
245252
self.assertEqual(
246253
self.user_without_student_confirmation.grade.id, self.grade_komtek_1.id
247254
)
255+
self.assertTrue(
256+
self.user_without_student_confirmation.abakus_groups.filter(
257+
pk=self.abakus_group.pk
258+
).exists()
259+
)
248260

249261
@mock.patch(
250262
"lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.DATA_MASTER)
@@ -260,6 +272,11 @@ def test_data_4th(self, *args):
260272
self.assertEqual(
261273
self.user_without_student_confirmation.grade.id, self.grade_data_4.id
262274
)
275+
self.assertTrue(
276+
self.user_without_student_confirmation.abakus_groups.filter(
277+
pk=self.abakus_group.pk
278+
).exists()
279+
)
263280

264281
@mock.patch(
265282
"lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.KOMTEK_MASTER)
@@ -275,6 +292,11 @@ def test_komtek_4th(self, *args):
275292
self.assertEqual(
276293
self.user_without_student_confirmation.grade.id, self.grade_komtek_4.id
277294
)
295+
self.assertTrue(
296+
self.user_without_student_confirmation.abakus_groups.filter(
297+
pk=self.abakus_group.pk
298+
).exists()
299+
)
278300

279301
@mock.patch(
280302
"lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.SECCLO_MASTER)
@@ -290,6 +312,12 @@ def test_secclo_master(self, *args):
290312
self.assertEqual(
291313
self.user_without_student_confirmation.grade.id, self.grade_komtek_4.id
292314
)
315+
print(self.user_without_student_confirmation.abakus_groups.all())
316+
self.assertTrue(
317+
self.user_without_student_confirmation.abakus_groups.filter(
318+
pk=self.abakus_group.pk
319+
).exists()
320+
)
293321

294322
@mock.patch(
295323
"lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.MULTI_OTHER)
@@ -304,6 +332,11 @@ def test_with_other_study_informatics(self, *args):
304332
)
305333
self.assertEqual(len(json.get("studyProgrammes")), len(multi_other_resp))
306334
self.assertIsNone(self.user_without_student_confirmation.grade)
335+
self.assertFalse(
336+
self.user_without_student_confirmation.abakus_groups.filter(
337+
pk=self.abakus_group.pk
338+
).exists()
339+
)
307340

308341
@mock.patch("lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.DATA))
309342
def test_valid_study_existing_grade(self, *args):
@@ -322,6 +355,11 @@ def test_valid_study_existing_grade(self, *args):
322355
self.assertEqual(
323356
self.user_with_student_confirmation.grade.id, self.grade_data_4.id
324357
)
358+
self.assertTrue(
359+
self.user_with_student_confirmation.abakus_groups.filter(
360+
pk=self.abakus_group.pk
361+
).exists()
362+
)
325363

326364
@mock.patch("lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.INDOK))
327365
def test_switch_to_indok(self, *args):
@@ -340,6 +378,11 @@ def test_switch_to_indok(self, *args):
340378
self.user_with_student_confirmation.grade.id, self.grade_data_4.id
341379
)
342380
self.assertTrue(self.user_with_student_confirmation.is_verified_student())
381+
self.assertTrue(
382+
self.user_with_student_confirmation.abakus_groups.filter(
383+
pk=self.abakus_group.pk
384+
).exists()
385+
)
343386

344387
@mock.patch("lego.apps.users.views.oidc.oauth.feide", MockFeideOAUTH(Token.DATA))
345388
def test_multiple_users_one_feide(self, *args):
@@ -365,3 +408,8 @@ def test_multiple_users_one_feide(self, *args):
365408
self.user_with_student_confirmation.student_username,
366409
user_without_student_confirmation.student_username,
367410
)
411+
self.assertFalse(
412+
self.user_without_student_confirmation.abakus_groups.filter(
413+
pk=self.abakus_group.pk
414+
).exists()
415+
)

lego/apps/users/views/oidc.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from requests import Response
1717
from structlog import get_logger
1818

19-
from lego.apps.users.models import AbakusGroup, User
19+
from lego.apps.users.models import User
2020
from lego.apps.users.serializers.student_confirmation import FeideAuthorizeSerializer
2121
from lego.apps.users.validators import STUDENT_USERNAME_REGEX
2222

@@ -86,11 +86,6 @@ def validate(self, request: Request) -> HttpResponse:
8686
else:
8787
try:
8888
validation_status = "success"
89-
try:
90-
with transaction.atomic():
91-
AbakusGroup.objects.get(name="Abakus").add_user(user)
92-
except AbakusGroup.DoesNotExist:
93-
pass
9489
with transaction.atomic():
9590
user.student_username = uid
9691
user.save()

0 commit comments

Comments
 (0)