Source code for users_api.tests.test_commands

# pylint: disable=W0621,C0114,C0116,W0212,W0613,missing-class-docstring
import tempfile

from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.core.management import call_command
from django.test import TestCase

from users_api.management.commands.export_base import ExportUsersBase


[docs] class UsersApiCommandsTests(TestCase):
[docs] def test_users_export(self) -> None: # pylint: disable=invalid-name User = get_user_model() new_user = User.objects.create_user( "john@test.abv", name="user john", ) new_admin_user = User.objects.create_user( "shefa@test.abv", name="shf", password="verysecret", ) new_group = Group.objects.create(name="testgroup") new_user.groups.add(new_group) new_admin_user.groups.add(new_group) new_admin_user.groups.add(Group.objects.create(name="admin")) groups_str = ":".join( ExportUsersBase().get_visible_groups(new_admin_user), ) expected_output = ( "Email,Name,Groups,Password" "\njohn@test.abv,user john,testgroup," f"\nshefa@test.abv,shf,{groups_str},{new_admin_user.password}" "\n" ) with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp: call_command("users_export", file=temp.name) self.assertEqual(temp.read(), expected_output)
[docs] def test_users_restore(self) -> None: # pylint: disable=invalid-name User = get_user_model() input_csv = ( "Email,Name,Groups,Password" "\njohn@test.abv,user john,testgroup," "\nshefa@test.abv,shf,testgroup:admin,123123" "\n" ) with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp: temp.write(input_csv) temp.close() call_command("users_restore", temp.name) second_user = User.objects.last() assert second_user is not None self.assertEqual(len(User.objects.all()), 2) self.assertEqual( second_user.email, "shefa@test.abv", ) self.assertEqual( second_user.name, "shf", ) self.assertEqual( second_user.is_active, True, ) self.assertEqual( second_user.is_staff, True, ) self.assertEqual( len(second_user.groups.all()), 2, )