@@ -58,12 +58,15 @@ def test_ca_queryset(self):
5858 data = self ._create_multitenancy_test_env ()
5959 self ._test_multitenant_admin (
6060 url = reverse (f'admin:{ self .app_label } _ca_changelist' ),
61- visible = [data ['ca1' ].name , data ['org1' ].name ],
61+ visible = [
62+ data ['ca1' ].name ,
63+ data ['org1' ].name ,
64+ data ['ca_shared' ].name ,
65+ ],
6266 hidden = [
6367 data ['ca2' ].name ,
6468 data ['org2' ].name ,
6569 data ['ca_inactive' ].name ,
66- data ['ca_shared' ].name ,
6770 ],
6871 )
6972
@@ -76,16 +79,39 @@ def test_ca_organization_fk_autocomplete_view(self):
7679 administrator = True ,
7780 )
7881
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+
79102 def test_cert_queryset (self ):
80103 data = self ._create_multitenancy_test_env (cert = True )
81104 self ._test_multitenant_admin (
82105 url = reverse (f'admin:{ self .app_label } _cert_changelist' ),
83- visible = [data ['cert1' ].name , data ['org1' ].name ],
106+ visible = [
107+ data ['cert1' ].name ,
108+ data ['org1' ].name ,
109+ data ['cert_shared' ].name ,
110+ ],
84111 hidden = [
85112 data ['cert2' ].name ,
86113 data ['org2' ].name ,
87114 data ['cert_inactive' ].name ,
88- data ['cert_shared' ].name ,
89115 ],
90116 )
91117
@@ -109,6 +135,45 @@ def test_cert_ca_fk_autocomplete_view(self):
109135 administrator = True ,
110136 )
111137
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+
112177 def test_cert_changeform_200 (self ):
113178 org = self ._create_org (name = 'test-org' )
114179 self ._create_operator (organizations = [org ])
0 commit comments