@@ -57,13 +57,16 @@ def _create_multitenancy_test_env(self, cert=False):
57
57
def test_ca_queryset (self ):
58
58
data = self ._create_multitenancy_test_env ()
59
59
self ._test_multitenant_admin (
60
- url = reverse (f"admin:{ self .app_label } _ca_changelist" ),
61
- visible = [data ["ca1" ].name , data ["org1" ].name ],
60
+ url = reverse (f'admin:{ self .app_label } _ca_changelist' ),
61
+ visible = [
62
+ data ['ca1' ].name ,
63
+ data ['org1' ].name ,
64
+ data ['ca_shared' ].name ,
65
+ ],
62
66
hidden = [
63
- data ["ca2" ].name ,
64
- data ["org2" ].name ,
65
- data ["ca_inactive" ].name ,
66
- data ["ca_shared" ].name ,
67
+ data ['ca2' ].name ,
68
+ data ['org2' ].name ,
69
+ data ['ca_inactive' ].name ,
67
70
],
68
71
)
69
72
@@ -76,16 +79,39 @@ def test_ca_organization_fk_autocomplete_view(self):
76
79
administrator = True ,
77
80
)
78
81
82
+ def test_org_create_shared_ca (self ):
83
+ self ._test_org_admin_create_shareable_object (
84
+ path = reverse (f'admin:{ self .app_label } _ca_add' ),
85
+ model = Ca ,
86
+ payload = {
87
+ 'name' : 'ca-shared' ,
88
+ 'organization' : '' ,
89
+ 'key_length' : 2048 ,
90
+ 'digest' : 'sha256' ,
91
+ 'operation_type' : 'new' ,
92
+ 'extensions' : '' ,
93
+ },
94
+ )
95
+
96
+ def test_org_admin_view_shared_ca (self ):
97
+ ca = self ._create_ca (organization = None )
98
+ self ._test_org_admin_view_shareable_object (
99
+ path = reverse (f'admin:{ self .app_label } _ca_change' , args = [ca .pk ]),
100
+ )
101
+
79
102
def test_cert_queryset (self ):
80
103
data = self ._create_multitenancy_test_env (cert = True )
81
104
self ._test_multitenant_admin (
82
- url = reverse (f"admin:{ self .app_label } _cert_changelist" ),
83
- visible = [data ["cert1" ].name , data ["org1" ].name ],
105
+ url = reverse (f'admin:{ self .app_label } _cert_changelist' ),
106
+ visible = [
107
+ data ['cert1' ].name ,
108
+ data ['org1' ].name ,
109
+ data ['cert_shared' ].name ,
110
+ ],
84
111
hidden = [
85
- data ["cert2" ].name ,
86
- data ["org2" ].name ,
87
- data ["cert_inactive" ].name ,
88
- data ["cert_shared" ].name ,
112
+ data ['cert2' ].name ,
113
+ data ['org2' ].name ,
114
+ data ['cert_inactive' ].name ,
89
115
],
90
116
)
91
117
@@ -109,6 +135,45 @@ def test_cert_ca_fk_autocomplete_view(self):
109
135
administrator = True ,
110
136
)
111
137
138
+ def test_org_admin_create_cert_with_shared_ca (self ):
139
+ org = self ._get_org ()
140
+ administrator = self ._create_administrator (organizations = [org ])
141
+ shared_ca = self ._create_ca (organization = None )
142
+ payload = {
143
+ 'name' : 'Test' ,
144
+ 'organization' : '' ,
145
+ 'ca' : str (shared_ca .pk ),
146
+ 'operation_type' : 'new' ,
147
+ 'key_length' : 2048 ,
148
+ 'digest' : 'sha256' ,
149
+ 'extensions' : '[]' ,
150
+ }
151
+ with self .subTest ('Should not allow creating shared certificate' ):
152
+ self ._test_org_admin_create_shareable_object (
153
+ path = reverse (f'admin:{ self .app_label } _cert_add' ),
154
+ model = Cert ,
155
+ payload = payload ,
156
+ user = administrator ,
157
+ )
158
+
159
+ with self .subTest ('Should allow creating non-shared certificate' ):
160
+ payload ['organization' ] = str (org .pk )
161
+ self ._test_org_admin_create_shareable_object (
162
+ path = reverse (f'admin:{ self .app_label } _cert_add' ),
163
+ model = Cert ,
164
+ payload = payload ,
165
+ user = administrator ,
166
+ raises_error = False ,
167
+ expected_count = 1 ,
168
+ )
169
+
170
+ def test_org_admin_view_shared_cert (self ):
171
+ shared_ca = self ._create_ca (organization = None )
172
+ shared_cert = self ._create_cert (ca = shared_ca , organization = None )
173
+ self ._test_org_admin_view_shareable_object (
174
+ path = reverse (f'admin:{ self .app_label } _cert_change' , args = [shared_cert .pk ]),
175
+ )
176
+
112
177
def test_cert_changeform_200 (self ):
113
178
org = self ._create_org (name = "test-org" )
114
179
self ._create_operator (organizations = [org ])
0 commit comments