Projet

Général

Profil

0002-manager-force-api-client-ou-assignment-for-local-adm.patch

Paul Marillonnet, 23 décembre 2022 12:51

Télécharger (3,48 ko)

Voir les différences:

Subject: [PATCH 2/4] manager: force api client ou assignment for local admins
 (#72703)

 src/authentic2/manager/apiclient_views.py | 2 ++
 tests/test_manager_apiclient.py           | 6 ++++++
 2 files changed, 8 insertions(+)
src/authentic2/manager/apiclient_views.py
55 55
                if self.request.user.has_ou_perm('authentic2.admin_apiclient', ou):
56 56
                    allowed_ous.append(ou.id)
57 57
            form.fields['ou'].queryset = OrganizationalUnit.objects.filter(id__in=allowed_ous)
58
            form.fields['ou'].required = True
59
            form.fields['ou'].empty_label = None
58 60
        return form
59 61

  
60 62

  
tests/test_manager_apiclient.py
165 165
    form = resp.form
166 166
    # password is prefilled
167 167
    assert form.get('password').value
168
    assert ('', False, '---------') in form['ou'].options
168 169
    form.set('name', 'api-client-name')
169 170
    form.set('description', 'api-client-description')
170 171
    form.set('identifier', 'api-client-identifier')
......
182 183
    resp = login(app, admin_ou1, 'a2-manager-api-client-add')
183 184
    form = resp.form
184 185
    assert len(form['ou'].options) == 1
186
    assert ('', False, '---------') not in form['ou'].options
185 187
    assert form['ou'].options[0][2] == 'OU1'
186 188

  
187 189
    role = Role.objects.get(slug='_a2-manager-of-api-clients-%s' % ou2.slug)
188 190
    admin_ou1.roles.add(role)
189 191
    resp = app.get(reverse('a2-manager-api-client-add'))
190 192
    assert len(resp.form['ou'].options) == 2
193
    assert ('', False, '---------') not in form['ou'].options
191 194

  
192 195

  
193 196
def test_add_description_non_mandatory(superuser, app):
......
246 249
    resp = login(app, superuser, 'a2-manager-api-client-edit', kwargs={'pk': api_client.pk})
247 250
    form = resp.form
248 251
    assert form.get('password').value == 'foo-password'
252
    assert ('', False, '---------') in form['ou'].options
249 253
    resp.form.set('password', 'easy')
250 254
    response = form.submit().follow()
251 255
    assert urlparse(response.request.url).path == api_client.get_absolute_url()
......
273 277
    form = resp.form
274 278
    assert form.get('password').value == 'foo-password'
275 279
    resp.form.set('password', 'easy')
280
    assert ('', False, '---------') not in form['ou'].options
276 281
    response = form.submit().follow()
277 282
    assert urlparse(response.request.url).path == api_client_ou1.get_absolute_url()
278 283
    api_client = APIClient.objects.get(password='easy')
......
282 287
    admin_ou1.roles.add(role)
283 288
    resp = app.get(reverse('a2-manager-api-client-edit', kwargs={'pk': api_client_ou2.pk}))
284 289
    assert resp.form.get('password').value == 'bar-password'
290
    assert ('', False, '---------') not in form['ou'].options
285 291
    resp.form.set('ou', ou1.id)
286 292
    resp.form.submit().follow()
287 293
    assert APIClient.objects.filter(ou=ou1).count() == 2
288
-