# (c) cavaliba.com - tests / loader "login" is not a keyname alias for user import

from django.test import TestCase

import app_home.cache as cache
from app_data.data import Instance
from app_data.loader import load_broker
from tests import helper


class TestLoaderUserLoginAliasRemoved(TestCase):
    """A "login" field on a user import payload is NOT resolved as a keyname
    alias (removed - "keyname" is the only recognized field)."""

    def setUp(self):
        cache.clear()
        self.aaa = {"perms": ["p_user_create", "p_user_update", "p_user_read"]}

    def test_login_only_payload_does_not_create_a_keyed_user(self):
        load_broker(
            datalist=[
                {"classname": "user", "login": "loginaliastest", "displayname": "Login Alias"}
            ],
            aaa=self.aaa,
        )
        self.assertIsNone(
            Instance.from_keyname(classname="user", keyname="loginaliastest", expand=False)
        )

    def test_login_only_payload_cannot_update_existing_user_by_login(self):
        helper.add_user(login="loginaliastest2")
        result = load_broker(
            datalist=[
                {
                    "classname": "user",
                    "login": "loginaliastest2",
                    "_action": "update",
                    "displayname": "Changed",
                }
            ],
            aaa=self.aaa,
        )
        self.assertEqual(result["count_ko"], 1)
        instance = Instance.from_keyname(classname="user", keyname="loginaliastest2", expand=True)
        self.assertNotEqual(instance.displayname, "Changed")

    def test_keyname_field_still_works(self):
        load_broker(
            datalist=[
                {"classname": "user", "keyname": "keynametest", "displayname": "Keyname Works"}
            ],
            aaa=self.aaa,
        )
        instance = Instance.from_keyname(classname="user", keyname="keynametest", expand=False)
        self.assertIsNotNone(instance)
