1
1
from io import StringIO
2
- from unittest .mock import call , patch
3
2
4
3
from django .contrib .sites .models import Site
5
4
from django .core .management import call_command
6
5
from django .test import override_settings
7
6
7
+ import requests_mock
8
8
from notifications_api_common .kanalen import KANAAL_REGISTRY
9
9
from notifications_api_common .models import NotificationsConfig
10
10
from rest_framework .test import APITestCase
14
14
from objects .api .kanalen import ObjectKanaal
15
15
from objects .core .models import Object
16
16
17
+ NOTIFICATIONS_API_ROOT = "https://notificaties-api.vng.cloud/api/v1/"
18
+
17
19
18
20
@override_settings (IS_HTTPS = True )
19
21
class CreateNotifKanaalTestCase (APITestCase ):
@@ -28,7 +30,7 @@ def setUpTestData(cls):
28
30
cls .addClassCleanup (lambda : KANAAL_REGISTRY .remove (kanaal ))
29
31
30
32
service , _ = Service .objects .update_or_create (
31
- api_root = "https://notificaties-api.vng.cloud/api/v1/" ,
33
+ api_root = NOTIFICATIONS_API_ROOT ,
32
34
defaults = dict (
33
35
api_type = APITypes .nrc ,
34
36
client_id = "test" ,
@@ -41,13 +43,13 @@ def setUpTestData(cls):
41
43
config .notifications_api_service = service
42
44
config .save ()
43
45
44
- @patch ( "notifications_api_common.models.NotificationsConfig.get_client" )
45
- def test_kanaal_create_with_name (self , mock_get_client ):
46
+ @requests_mock . Mocker ( )
47
+ def test_kanaal_create_with_name (self , m ):
46
48
"""
47
49
Test is request to create kanaal is send with specified kanaal name
48
50
"""
49
- client = mock_get_client . return_value
50
- client . get . return_value = []
51
+ m . get ( f" { NOTIFICATIONS_API_ROOT } kanaal?naam=kanaal_test" , json = [])
52
+ m . post ( f" { NOTIFICATIONS_API_ROOT } kanaal" )
51
53
52
54
stdout = StringIO ()
53
55
call_command (
@@ -56,47 +58,50 @@ def test_kanaal_create_with_name(self, mock_get_client):
56
58
stdout = stdout ,
57
59
)
58
60
59
- client .post .assert_called_once_with (
60
- "kanaal" ,
61
- json = {
61
+ self .assertEqual (m .last_request .url , f"{ NOTIFICATIONS_API_ROOT } kanaal" )
62
+ self .assertEqual (m .last_request .method , "POST" )
63
+ self .assertEqual (
64
+ m .last_request .json (),
65
+ {
62
66
"naam" : "kanaal_test" ,
63
67
"documentatieLink" : "https://example.com/ref/kanalen/#kanaal_test" ,
64
68
"filters" : [],
65
69
},
66
70
)
67
71
68
- @patch ("notifications_api_common.models.NotificationsConfig.get_client" )
69
72
@override_settings (NOTIFICATIONS_KANAAL = "dummy-kanaal" )
70
- def test_kanaal_create_without_name (self , mock_get_client ):
73
+ @requests_mock .Mocker ()
74
+ def test_kanaal_create_without_name (self , m ):
71
75
"""
72
76
Test is request to create kanaal is send with default kanaal name
73
77
"""
74
- client = mock_get_client . return_value
75
- client . get . return_value = []
78
+ m . get ( f" { NOTIFICATIONS_API_ROOT } kanaal" , json = [])
79
+ m . post ( f" { NOTIFICATIONS_API_ROOT } kanaal" )
76
80
77
81
stdout = StringIO ()
78
82
call_command (
79
83
"register_kanalen" ,
80
84
stdout = stdout ,
81
85
)
82
86
83
- client .post .assert_has_calls (
84
- [
85
- call (
86
- "kanaal" ,
87
- json = {
88
- "naam" : "kanaal_test" ,
89
- "documentatieLink" : "https://example.com/ref/kanalen/#kanaal_test" ,
90
- "filters" : [],
91
- },
92
- ),
93
- call (
94
- "kanaal" ,
95
- json = {
96
- "naam" : "objecten" ,
97
- "documentatieLink" : "https://example.com/ref/kanalen/#objecten" ,
98
- "filters" : ["object_type" ],
99
- },
100
- ),
101
- ]
87
+ post_req1 , post_req2 = [
88
+ req
89
+ for req in m .request_history
90
+ if req .method == "POST" and req .url == f"{ NOTIFICATIONS_API_ROOT } kanaal"
91
+ ]
92
+ self .assertEqual (
93
+ post_req1 .json (),
94
+ {
95
+ "naam" : "kanaal_test" ,
96
+ "documentatieLink" : "https://example.com/ref/kanalen/#kanaal_test" ,
97
+ "filters" : [],
98
+ },
99
+ )
100
+ self .assertEqual (
101
+ post_req2 .json (),
102
+ {
103
+ "naam" : "objecten" ,
104
+ "documentatieLink" : "https://example.com/ref/kanalen/#objecten" ,
105
+ "filters" : ["object_type" ],
106
+ },
102
107
)
0 commit comments