1
+ from django .conf import settings
1
2
from django .core import mail
2
3
from django .test import override_settings
3
4
from django .urls import reverse
13
14
from zgw_consumers .constants import APITypes
14
15
from zgw_consumers .test import generate_oas_component , mock_service_oas_get
15
16
16
- from open_inwoner .accounts .tests .factories import DigidUserFactory
17
+ from open_inwoner .accounts .tests .factories import (
18
+ DigidUserFactory ,
19
+ eHerkenningUserFactory ,
20
+ )
17
21
from open_inwoner .openklant .constants import Status
18
22
from open_inwoner .openklant .models import OpenKlantConfig
19
23
from open_inwoner .openklant .tests .data import (
31
35
from open_inwoner .utils .test import ClearCachesMixin , paginated_response
32
36
from open_inwoner .utils .tests .helpers import AssertMockMatchersMixin
33
37
38
+ PATCHED_MIDDLEWARE = [
39
+ m
40
+ for m in settings .MIDDLEWARE
41
+ if m != "open_inwoner.kvk.middleware.KvKLoginMiddleware"
42
+ ]
43
+
34
44
35
45
@requests_mock .Mocker ()
36
- @override_settings (ROOT_URLCONF = "open_inwoner.cms.tests.urls" )
46
+ @override_settings (
47
+ ROOT_URLCONF = "open_inwoner.cms.tests.urls" , MIDDLEWARE = PATCHED_MIDDLEWARE
48
+ )
37
49
class CasesContactFormTestCase (AssertMockMatchersMixin , ClearCachesMixin , WebTest ):
38
50
def setUp (self ):
39
51
super ().setUp ()
@@ -102,6 +114,32 @@ def setUp(self):
102
114
"geslachtsnaam" : "Bazz" ,
103
115
},
104
116
)
117
+ self .eherkenning_user_role = generate_oas_component (
118
+ "zrc" ,
119
+ "schemas/Rol" ,
120
+ url = f"{ ZAKEN_ROOT } rollen/3ff7686f-db35-4181-8e48-57521220f887" ,
121
+ omschrijvingGeneriek = RolOmschrijving .initiator ,
122
+ betrokkeneType = RolTypes .niet_natuurlijk_persoon ,
123
+ betrokkeneIdentificatie = {
124
+ "innNnpId" : "000000000" ,
125
+ "voornamen" : "Foo Bar" ,
126
+ "voorvoegselGeslachtsnaam" : "van der" ,
127
+ "geslachtsnaam" : "Bazz" ,
128
+ },
129
+ )
130
+ self .eherkenning_user_role_kvk = generate_oas_component (
131
+ "zrc" ,
132
+ "schemas/Rol" ,
133
+ url = f"{ ZAKEN_ROOT } rollen/5885531e-9b7f-46af-947e-f2278a2e72a8" ,
134
+ omschrijvingGeneriek = RolOmschrijving .initiator ,
135
+ betrokkeneType = RolTypes .niet_natuurlijk_persoon ,
136
+ betrokkeneIdentificatie = {
137
+ "innNnpId" : "12345678" ,
138
+ "voornamen" : "Foo Bar" ,
139
+ "voorvoegselGeslachtsnaam" : "van der" ,
140
+ "geslachtsnaam" : "Bazz" ,
141
+ },
142
+ )
105
143
self .zaaktype = generate_oas_component (
106
144
"ztc" ,
107
145
"schemas/ZaakType" ,
@@ -221,18 +259,10 @@ def _setUpMocks(self, m):
221
259
self .zaaktype ,
222
260
self .status_finish ,
223
261
self .status_type_finish ,
224
- ]:
225
- self .matchers .append (m .get (resource ["url" ], json = resource ))
226
-
227
- for resource in [
228
- self .zaak ,
229
- self .result ,
230
- self .zaaktype ,
231
262
self .status_type_new ,
232
263
self .status_type_in_behandeling ,
233
- self .status_type_finish ,
234
264
]:
235
- m .get (resource ["url" ], json = resource )
265
+ self . matchers . append ( m .get (resource ["url" ], json = resource ) )
236
266
237
267
# mock `fetch_status_types_no_cache`
238
268
m .get (
@@ -243,7 +273,13 @@ def _setUpMocks(self, m):
243
273
self .matchers += [
244
274
m .get (
245
275
f"{ ZAKEN_ROOT } rollen?zaak={ self .zaak ['url' ]} " ,
246
- json = paginated_response ([self .user_role ]),
276
+ json = paginated_response (
277
+ [
278
+ self .user_role ,
279
+ self .eherkenning_user_role ,
280
+ self .eherkenning_user_role_kvk ,
281
+ ]
282
+ ),
247
283
),
248
284
m .get (
249
285
f"{ ZAKEN_ROOT } zaakinformatieobjecten?zaak={ self .zaak ['url' ]} " ,
@@ -407,6 +443,71 @@ def test_form_success_with_api(self, m):
407
443
},
408
444
)
409
445
446
+ def test_form_success_with_api_eherkenning_user (self , m ):
447
+ self ._setUpMocks (m )
448
+ self ._setUpExtraMocks (m )
449
+
450
+ for use_rsin_for_innNnpId_query_parameter in [True , False ]:
451
+ with self .subTest (
452
+ use_rsin_for_innNnpId_query_parameter = use_rsin_for_innNnpId_query_parameter
453
+ ):
454
+ eherkenning_user = eHerkenningUserFactory (
455
+ kvk = "12345678" , rsin = "000000000"
456
+ )
457
+
458
+ config = OpenKlantConfig .get_solo ()
459
+ config .use_rsin_for_innNnpId_query_parameter = (
460
+ use_rsin_for_innNnpId_query_parameter
461
+ )
462
+ config .save ()
463
+
464
+ identifier = (
465
+ eherkenning_user .rsin
466
+ if use_rsin_for_innNnpId_query_parameter
467
+ else eherkenning_user .kvk
468
+ )
469
+ m .get (
470
+ f"{ KLANTEN_ROOT } klanten?subjectNietNatuurlijkPersoon__innNnpId={ identifier } " ,
471
+ json = paginated_response ([self .klant ]),
472
+ ),
473
+
474
+ response = self .app .get (self .case_detail_url , user = eherkenning_user )
475
+
476
+ form = response .forms ["contact-form" ]
477
+ form .action = reverse (
478
+ "cases:case_detail_contact_form" ,
479
+ kwargs = {"object_id" : self .zaak ["uuid" ]},
480
+ )
481
+ form ["question" ] = "Sample text"
482
+ response = form .submit ()
483
+
484
+ self .assertEqual (
485
+ response .headers ["HX-Redirect" ],
486
+ reverse (
487
+ "cases:case_detail" ,
488
+ kwargs = {"object_id" : str (self .zaak ["uuid" ])},
489
+ ),
490
+ )
491
+
492
+ redirect = self .app .get (response .headers ["HX-Redirect" ])
493
+ redirect_messages = list (redirect .context ["messages" ])
494
+
495
+ self .assertEqual (redirect_messages [0 ].message , _ ("Vraag verstuurd!" ))
496
+ self .assertMockMatchersCalled (self .extra_matchers )
497
+
498
+ payload = self .matcher_create_contactmoment .request_history [0 ].json ()
499
+ self .assertEqual (
500
+ payload ,
501
+ {
502
+ "bronorganisatie" : "123456788" ,
503
+ "kanaal" : "Internet" ,
504
+ "medewerkerIdentificatie" : {"identificatie" : "FooVonBar" },
505
+ "onderwerp" : "afdeling-x" ,
506
+ "tekst" : "Sample text" ,
507
+ "type" : "Melding" ,
508
+ },
509
+ )
510
+
410
511
def test_form_success_with_email (self , m ):
411
512
self ._setUpMocks (m )
412
513
self ._setUpExtraMocks (m )
0 commit comments