
    	]j                     l    d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
  e       Z G d de      Zy)	    N)get_user_model)TestCase)reverse)status)	APIClientc                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)UserHotkeysAPITestCasezTests for the UserHotkeysAPIc                 h   t               | _        t        j                  j	                  ddd      | _        ddddddd	| j
                  _        | j
                  j                          t        d
      | _	        | j                  j                  | j
                         ddddddddi| _        y )Ntestuserztest@example.compassword123)usernameemailpasswordctrl+sTkeyactivectrl+feditor:saveeditor:findzcurrent-user-hotkeysusercustom_hotkeyszctrl+shift+szctrl+n)r   z
editor:new)r   clientUserobjectscreate_userr   r   saver   urlforce_authenticatevalid_payload)selfs    S/root/env/lib/python3.12/site-packages/label_studio/users/tests/test_hotkeys_api.pysetUpzUserHotkeysAPITestCase.setUp   s    kLL,,jHZer,s	 $,t<#+t<$
		  			 12 	&&DII&6 '5F&.$?
    c                    | j                   j                  | j                  t        j                  | j
                        d      }| j                  |j                  t        j                         | j                  |j                  d   | j
                  d          t        j                  j                  | j                  j                        }| j                  |j                   | j
                  d          y)z,Test updating hotkeys for authenticated userapplication/jsondatacontent_typer   idN)r   patchr    jsondumpsr"   assertEqualstatus_coder   HTTP_200_OKr*   r   r   getr   r-   r   )r#   responser   s      r$   !test_update_hotkeys_authenticatedz8UserHotkeysAPITestCase.test_update_hotkeys_authenticated(   s    ;;$$TXXDJJt?Q?Q4Ras$t--v/A/AB'78$:L:LM]:^_ ||499<<0,,d.@.@AQ.RSr&   c                    | j                   j                  d       | j                   j                  | j                  t	        j
                  | j                        d      }| j                  |j                  t        j                         y)z4Test updating hotkeys fails for unauthenticated userNr   r(   r)   )r   r!   r.   r    r/   r0   r"   r1   r2   r   HTTP_401_UNAUTHORIZEDr#   r5   s     r$   #test_update_hotkeys_unauthenticatedz:UserHotkeysAPITestCase.test_update_hotkeys_unauthenticated2   sd     	&&D&1;;$$TXXDJJt?Q?Q4Ras$t--v/K/KLr&   c                     ddddiii}| j                   j                  | j                  t        j                  |      d      }| j                  |j                  t        j                         y)z'Test updating hotkeys with invalid datar   r   r   Tr(   r)   N	r   r.   r    r/   r0   r1   r2   r   HTTP_400_BAD_REQUESTr#   invalid_payloadr5   s      r$    test_update_hotkeys_invalid_dataz7UserHotkeysAPITestCase.test_update_hotkeys_invalid_data:   s[    +mh=M-NO;;$$TXXDJJ4O^p$q--v/J/JKr&   c                    dddddii}| j                   j                  | j                  t        j                  |      d      }| j                  |j                  t        j                         t        j                  j                  | j                  j                        }| j                  |j                  |d          | j                  d	|j                         y
)z@Test updating only some hotkeys preserves existing configurationr   r   z
ctrl+alt+sTr   r(   r)   r,   r   N)r   r.   r    r/   r0   r1   r2   r   r3   r   r   r4   r   r-   r   assertNotIn)r#   partial_updater5   r   s       r$   test_update_hotkeys_partialz2UserHotkeysAPITestCase.test_update_hotkeys_partialA   s    *]L\`<a,bc;;$$TXXDJJ~4N]o$p--v/A/AB ||499<<0,,n=M.NO(;(;<r&   c                 v   di i}| j                   j                  | j                  t        j                  |      d      }| j                  |j                  t        j                         t        j                  j                  | j                  j                        }| j                  |j                  i        y)z%Test setting empty hotkeys dictionaryr   r(   r)   r,   N)r   r.   r    r/   r0   r1   r2   r   r3   r   r   r4   r   r-   r   )r#   empty_payloadr5   r   s       r$   test_empty_hotkeysz)UserHotkeysAPITestCase.test_empty_hotkeysM   s    )2.;;$$TXXDJJ}4M\n$o--v/A/AB ||499<<0,,b1r&   c                     i }| j                   j                  | j                  t        j                  |      d      }| j                  |j                  t        j                         y)z(Test request with missing required fieldr(   r)   Nr<   r>   s      r$   test_missing_required_fieldz2UserHotkeysAPITestCase.test_missing_required_fieldX   sL    ;;$$TXXDJJ4O^p$q--v/J/JKr&   c                 .   | j                   j                  | j                        }| j                  |j                  t
        j                         | j                  d|j                         ddddddd}| j                  |j                  d   |       y)z.Test retrieving hotkeys for authenticated userr   r   Tr   r   r   N)	r   r4   r    r1   r2   r   r3   assertInr*   )r#   r5   expected_hotkeyss      r$   test_get_hotkeys_authenticatedz5UserHotkeysAPITestCase.test_get_hotkeys_authenticated_   s~    ;;??488,--v/A/AB&6 $,t<#+t<
 	'78:JKr&   c                     | j                   j                  d       | j                   j                  | j                        }| j	                  |j
                  t        j                         y)z6Test retrieving hotkeys fails for unauthenticated userNr   )r   r!   r4   r    r1   r2   r   r8   r9   s     r$    test_get_hotkeys_unauthenticatedz7UserHotkeysAPITestCase.test_get_hotkeys_unauthenticatedl   sK     	&&D&1;;??488,--v/K/KLr&   c                 6   i | j                   _        | j                   j                          | j                  j	                  | j
                        }| j                  |j                  t        j                         | j                  |j                  d   i        y)z9Test retrieving hotkeys when user has empty configurationr   N)r   r   r   r   r4   r    r1   r2   r   r3   r*   r9   s     r$   test_get_hotkeys_empty_configz4UserHotkeysAPITestCase.test_get_hotkeys_empty_configt   sj     $&		 		;;??488,--v/A/AB'78"=r&   N)__name__
__module____qualname____doc__r%   r6   r:   r@   rD   rG   rI   rM   rO   rQ    r&   r$   r	   r	      s=    &
2TML
=	2LLM>r&   r	   )r/   django.contrib.authr   django.testr   django.urlsr   rest_frameworkr   rest_framework.testr   r   r	   rV   r&   r$   <module>r\      s-     .    ! )p>X p>r&   