def test_ou1_u1_user_add(self): self.client.login(username="******", password="******") response = self.client.get("/manage/users/add/") self.assertEqual(response.status_code, 200) form = get_response_form(response) self.assertTrue(form.fields["ou"].required) self.assertEqual(set(a for a, b in form.fields["ou"].choices), set(["", self.ou1.pk, self.ou2.pk])) self.assertEqual(form.fields["ou"].initial, None) self.assertEqual(form.fields["ou"].widget.attrs, {}) response = self.client.post( "/manage/users/add/", { "username": "******", "password1": "coin", "password2": "coin", "send_mail": "on", "ou": str(self.ou1.pk), }, ) self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) response = self.client.post( "/manage/users/add/", { "username": "******", "password1": "coin", "password2": "coin", "send_mail": "on", "ou": str(self.ou2.pk), }, ) self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 2)
def test_superuser_user_add(self): self.client.login(username="******", password="******") response = self.client.get("/manage/users/add/") form = get_response_form(response) self.assertFalse(form.fields["ou"].required) self.assertEqual( set(a for a, b in form.fields["ou"].choices), set([""] + list(OU.objects.values_list("id", flat=True))) ) self.assertEqual(form.fields["ou"].initial, None) self.assertEqual(form.fields["ou"].widget.attrs, {})
def test_ou2_u1_user_add(self): self.client.login(username="******", password="******") response = self.client.get("/manage/users/add/") self.assertEqual(response.status_code, 200) form = get_response_form(response) self.assertTrue(form.fields["ou"].required) self.assertEqual( set(a for a, b in form.fields["ou"].choices), set(["", self.ou2.pk]), "admin of ou2 should only see its ou in ou list", ) self.assertEqual(form.fields["ou"].initial, self.ou2.pk, "ou2 should be auto-selected for admin of ou2") self.assertEqual( form.fields["ou"].widget.attrs, {"readonly": "readonly"}, "admin of ou2 should not be able to change the ou" ) response = self.client.post( "/manage/users/add/", { "username": "******", "email": "*****@*****.**", "password1": "coin", "password2": "coin", "send_mail": "on", "ou": str(self.ou1.pk), }, ) self.assertEqual(response.status_code, 200) doc = html.fromstring(response.content) self.assertEqual( len(doc.cssselect("p.error select#id_ou")), 1, "adding role in ou1 should fail for admin of ou2" ) self.assertEqual(len(mail.outbox), 0) response = self.client.post( "/manage/users/add/", { "username": "******", "email": "*****@*****.**", "password1": "coin", "password2": "coin", "send_mail": "on", "ou": str(self.ou2.pk), }, ) self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) new_user_url = response["Location"] # check edition of newly created user response = self.client.get(new_user_url) form = get_response_form(response) self.assertEqual(form.instance.username, "ou2_u3") self.assertEqual(form.instance.email, "*****@*****.**") self.assertEqual(form.instance.ou, self.ou2) self.assertTrue(form.instance.check_password("coin")) self.assertTrue(form.fields["ou"].required) self.assertEqual( set(a for a, b in form.fields["ou"].choices), set(["", self.ou2.pk]), "admin of ou2 should only see its ou in ou list", ) self.assertEqual(form.fields["ou"].initial, self.ou2.pk, "ou2 should be auto-selected for admin of ou2") self.assertEqual( form.fields["ou"].widget.attrs, {"readonly": "readonly"}, "admin of ou2 should not be able to change the ou" )