o
    &zhq                     @   s   d dl Z 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
 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 d dlmZ d dlmZmZ G dd deZdS )    N)matchers)URL)BadRequestException)ForbiddenException)NotFoundException)UnknownException)(CreateCustomMetadataFieldsRequestOptions)CustomMetaDataTypeEnum)CustomMetadataFieldsSchema)(UpdateCustomMetadataFieldsRequestOptions)camel_dict_to_snake_dict)ClientTestCasecreate_headers_for_testc                   @   s   e Zd ZdZdZejdd Zejdd Zejdd Z	ejd	d
 Z
ejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd  Zejd!d" Zd#S )$TestCustomMetadataFieldsz\
    TestCustomMetadataFields class used to test CRUD methods of custom metadata fields
    field_idc              
   C   s   dt _dt j}ztjtj|ddd | jd | t	 W dS  t
yC } z| |jd | d|jj W Y d}~dS d}~ww )	zA
        Tests if the unauthenticated request restricted
        http://test.com{}/v1/customMetadataFieldsi  z{"message": "Your account cannot be authenticated."
                                    , "help": "For support kindly contact us at support@imagekit.io ."}statusbodyTz%Your account cannot be authenticated.N)r   API_BASE_URLformat	responsesaddGETclientget_custom_metadata_fieldsassertRaisesr   r   assertEqualmessageresponse_metadatahttp_status_codeselfurle r&   `/var/www/html/kangema/venv/lib/python3.10/site-packages/tests/test_custom_metadata_fields_ops.py@test_get_custom_metadata_fields_fails_on_unauthenticated_request!   s    zYTestCustomMetadataFields.test_get_custom_metadata_fields_fails_on_unauthenticated_requestc              	   C   s   dt _dt j}t }tjtj|dtdg|d | j	
 }ddddd	d
dddddddd	d
dddgdddddd}| t||jj | d|jd j | d|jd j | dtjd jj dS )>
        Tests if get_custom_metadata_fields succeeds
        r   r   F  [{
                        "id": "62a9d5f6db485107347bb7f2",
                        "name": "test10",
                        "label": "test10",
                        "schema": {
                            "type": "Number",
                            "isValueRequired": false,
                            "minValue": 10,
                            "maxValue": 1000
                        }
                    }, {
                        "id": "62aab2cfdb4851833b8f5e64",
                        "name": "test11",
                        "label": "test11",
                        "schema": {
                            "type": "Number",
                            "isValueRequired": false,
                            "minValue": 10,
                            "maxValue": 1000
                        }
                    }]zincludeDeleted=falser   matchheaders62a9d5f6db485107347bb7f2test10NumberF
     typeisValueRequiredminValuemaxValueidnamelabelschema62aab2cfdb4851833b8f5e64test11   
text/plaingzip, deflateBasic ZmFrZTEyMjo=Content-TypezAccept-EncodingAuthorizationrawhttpStatusCoder-   r      z<http://test.com/v1/customMetadataFields?includeDeleted=falseNr   r   r   r   r   r   r   r   query_string_matcherr   r   r   r   r    __dict__listr9   callsrequestr$   r#   r$   r-   respmock_response_metadatar&   r&   r'   (test_get_custom_metadata_fields_succeeds6   s\   

!zATestCustomMetadataFields.test_get_custom_metadata_fields_succeedsc              	   C   s   dt _dt j}t }tjtj|dtdg|d | j	j
dd}dd	d	d
ddddddddd
dddddgdddddd}| t||jj | d|jd j | d|jd j | dtjd jj dS )r)   r   r   r*   includeDeleted=truer+   Tinclude_deletedr.   r/   r0   Fr1   r2   r3   r8   r=   r>   r?   r@   rA   rB   rC   rF   r   rI   z;http://test.com/v1/customMetadataFields?includeDeleted=trueNrJ   rP   r&   r&   r'   Btest_get_custom_metadata_fields_succeeds_with_include_deleted_true   s\   
!z[TestCustomMetadataFields.test_get_custom_metadata_fields_succeeds_with_include_deleted_truec              
   C   s   dt _dt j}t }tjtj|dtdg|d | j	j
dd}dd	d	d
dddddddddd
ddddddgdddddd}| t||jj | |jd jjd | |jd jjd | |jd jd dS )zX
        Tests if get_custom_metadata_fields succeeds with additional responses
        r   r   a  [{
                        "id": "62a9d5f6db485107347bb7f2",
                        "name": "test10",
                        "label": "test10",
                        "schema": {
                            "type": "Number",
                            "isValueRequired": false,
                            "minValue": 10,
                            "maxValue": 1000,
                            "currentValue":100
                        }
                    }, {
                        "id": "62aab2cfdb4851833b8f5e64",
                        "name": "test11",
                        "label": "test11",
                        "schema": {
                            "type": "Number",
                            "isValueRequired": false,
                            "minValue": 10,
                            "maxValue": 1000,
                            "currentValue":1000
                        }
                    }]rT   r+   TrU   r.   r/   r0   Fr1   r2   d   )r4   r5   r6   r7   currentValuer8   r=   r>   r?   r@   rA   rB   rC   rF   r   rI   N)r   r   r   r   r   r   r   r   rK   r   r   r   r   r    rL   rM   r<   current_valuerandomrP   r&   r&   r'   Otest_get_custom_metadata_fields_succeeds_with_additional_attributes_in_response   sZ   
#zhTestCustomMetadataFields.test_get_custom_metadata_fields_succeeds_with_additional_attributes_in_responsec                 C   s   dt _dt j| j}t }tjtj|d|dd | j	| j}ddddd	d
d}| 
t||jj | 
dtjd jj dS )A
        Tests if delete_custom_metadata_fields succeeds
        r   {}/v1/customMetadataFields/{}   z{}r   r-   r   Nr@   rA   rB   rC   rF   0http://test.com/v1/customMetadataFields/field_idr   )r   r   r   r   r   r   r   DELETEr   delete_custom_metadata_fieldr   r   r    rL   rN   rO   r$   rP   r&   r&   r'   +test_delete_custom_metadata_fields_succeeds*  s(   	zDTestCustomMetadataFields.test_delete_custom_metadata_fields_succeedsc              
   C   s   dt _dt j| j}zt }tjtj|d|dd | j	| j | 
t W dS  tyJ } z| d|j | d|jj W Y d}~dS d}~ww )r]   r   r^     z{"message": "No such custom metadata field exists",
                                 "help": "For support kindly contact us at support@imagekit.io ."}r`   $No such custom metadata field existsN)r   r   r   r   r   r   r   rb   r   rc   r   r   r   r   r    r!   )r#   r$   r-   r%   r&   r&   r'   1test_delete_custom_metadata_fields_fails_with_404G  s$   zJTestCustomMetadataFields.test_delete_custom_metadata_fields_fails_with_404c              
   C   s   dt _dt j}z$tjtj|ddd | jjtddt	t
jddd	d
d | t W dS  tyO } z| d|j | d|jj W Y d}~dS d}~ww )zG
        Tests if create_custom_metadata_fields fails with 400
        r   r     z{"message": "A custom metadata field with this name already exists"
                                    , "help": "For support kindly contact us at support@imagekit.io ."}r   testrX   r?   r4   	min_value	max_valuer:   r;   r<   optionsz5A custom metadata field with this name already existsN)r   r   r   r   r   POSTr   create_custom_metadata_fieldsr   r
   r	   r0   r   r   r   r   r    r!   r"   r&   r&   r'   1test_create_custom_metadata_fields_fails_with_400^  s4   	zJTestCustomMetadataFields.test_create_custom_metadata_fields_fails_with_400c              	   C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddttjd	d
ddd}ddddd	d
dddddddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zR
        Tests if create_custom_metadata_fields succeeds with type number
        r   r   rD   application/json   a  {
                "id": "62dfc03b1b02a58936efca37",
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "Number",
                    "minValue": 100,
                    "maxValue": 200
                }
            }r`   ri   rX   r?   rj   rm   rn   62dfc03b1b02a58936efca37r0   )r4   r6   r7   r8   text/plain, application/jsonrA   rB   rC   rF   z{
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "Number",
                    "minValue": 100,
                    "maxValue": 200
                }
            }'http://test.com/v1/customMetadataFieldsr   N)r   r   r   updater   r   r   rp   r   rq   r   r
   r	   r0   jsondumpsloadsr   r   r    rL   rN   rO   r$   assertMultiLineEqualr   r#   r$   r-   rQ   rR   request_bodyr&   r&   r'   <test_create_custom_metadata_fields_succeeds_with_type_number}  sX   
zUTestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_numberc                 C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddtd	d
tjddddd}ddddddddd
d	dddddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zT
        Tests if create_custom_metadata_fields succeeds with type textarea
        r   r   rD   rs   rt   ay  {
                "id": "62e0d7ae1b02a589360dc1fd",
                "name": "test",
                "label": "test",
                "schema": {
                    "isValueRequired": true,
                    "defaultValue": "The",
                    "type": "Textarea",
                    "minLength": 3,
                    "maxLength": 200
                }
            }r`   ri   TThe   r?   )is_value_requireddefault_valuer4   
min_length
max_lengthrm   rn   rv   rA   rB   rC   62e0d7ae1b02a589360dc1fdTextarea)defaultValuer5   	maxLength	minLengthr4   r9   r;   r:   r<   r-   rH   rG   aG  {
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "Textarea",
                    "defaultValue": "The",
                    "isValueRequired": true,
                    "minLength": 3,
                    "maxLength": 200
                }
            }rw   r   N)r   r   r   rx   r   r   r   rp   r   rq   r   r
   r	   r   ry   rz   r{   r   r   r    rL   rN   rO   r$   r   r}   r&   r&   r'   >test_create_custom_metadata_fields_succeeds_with_type_textarea  sj   zWTestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_textareac              	   C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddttjd	d
ddd}ddddddddd
d	dddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zP
        Tests if create_custom_metadata_fields succeeds with type date
        r   r   rD   rs   rt   aW  {
                "id": "62dfc9f41b02a58936f0d284",
                "name": "test-date",
                "label": "test-date",
                "schema": {
                    "type": "Date",
                    "minValue": "2022-11-29T10:11:10+00:00",
                    "maxValue": "2022-11-30T10:11:10+00:00"
                }
            }r`   z	test-datez2022-11-29T10:11:10+00:00z2022-11-30T10:11:10+00:00rj   rm   rn   rv   rA   rB   rC   62dfc9f41b02a58936f0d284Date)r7   r6   r4   r   r   a%  {
                "name": "test-date",
                "label": "test-date",
                "schema": {
                    "type": "Date",
                    "minValue": "2022-11-29T10:11:10+00:00",
                    "maxValue": "2022-11-30T10:11:10+00:00"
                }
            }rw   r   N)r   r   r   rx   r   r   r   rp   r   rq   r   r
   r	   r   ry   rz   r{   r   r   r    rL   rN   rO   r$   r   r}   r&   r&   r'   :test_create_custom_metadata_fields_succeeds_with_type_date  b   zSTestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_datec              	   C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddttjd	d	d
dd}ddddddddd	d	dddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zS
        Tests if create_custom_metadata_fields succeeds with type boolean
        r   r   rD   rs   rt   a=  {
                "id": "62dfcb801b02a58936f0fc39",
                "name": "test-boolean",
                "label": "test-boolean",
                "schema": {
                    "type": "Boolean",
                    "isValueRequired": true,
                    "defaultValue": true
                }
            }r`   ztest-booleanT)r4   r   r   rm   rn   rv   rA   rB   rC   62dfcb801b02a58936f0fc39Boolean)r   r5   r4   r   r   a  {
                "name": "test-boolean",
                "label": "test-boolean",
                "schema": {
                    "type": "Boolean",
                    "defaultValue": true,
                    "isValueRequired": true
                }
            }rw   r   N)r   r   r   rx   r   r   r   rp   r   rq   r   r
   r	   r   ry   rz   r{   r   r   r    rL   rN   rO   r$   r   r}   r&   r&   r'   =test_create_custom_metadata_fields_succeeds_with_type_booleani  r   zVTestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_booleanc                 C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddttjg d	d
dd}ddddddddg d	dddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zX
        Tests if create_custom_metadata_fields succeeds with type SingleSelect
        r   r   rD   rs   rt   a,  {
                "id": "62dfcdb21b02a58936f14c97",
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "SingleSelect",
                    "selectOptions": ["small", "medium", "large", 30, 40, true]
                }
            }r`   ri   smallmediumlarge   (   T)r4   select_optionsrm   rn   rv   rA   rB   rC   62dfcdb21b02a58936f14c97SingleSelect)selectOptionsr4   r   r   a@  {
                "name": "test",
               "label": "test",
               "schema":
                   {
                       "type": "SingleSelect",
                       "selectOptions": ["small", "medium", "large", 30, 40,
                                         true]
                   }
               }rw   r   N)r   r   r   rx   r   r   r   rp   r   rq   r   r
   r	   r   ry   rz   r{   r   r   r    rL   rN   rO   r$   r   r}   r&   r&   r'   Ctest_create_custom_metadata_fields_succeeds_with_type_single_select  s^   z\TestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_single_selectc              
   C   s   dt _dt j}ddi}|t  tjtj|d|dd | jj	t
ddttjd	g d
g dddd}ddddddddg d
d	g ddddd}ttd}| t||jj | dtjd jj | |tjd jj dS )zW
        Tests if create_custom_metadata_fields succeeds with type MultiSelect
        r   r   rD   rs   rt   a  {
                "id": "62dfcf001b02a58936f17808",
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "MultiSelect",
                    "isValueRequired": true,
                    "defaultValue": ["small", 30, true],
                    "selectOptions": ["small", "medium", "large", 30, 40, true]
                }
            }r`   ri   T)r   r   Tr   )r4   r   r   r   rm   rn   rv   rA   rB   rC   62dfcf001b02a58936f17808MultiSelect)r   r5   r   r4   r   r   a_  {
                "name": "test",
                "label": "test",
                "schema": {
                    "type": "MultiSelect",
                    "selectOptions": ["small", "medium", "large", 30, 40, true],
                    "defaultValue": ["small", 30, true],
                    "isValueRequired": true
                }
            }rw   r   N)r   r   r   rx   r   r   r   rp   r   rq   r   r
   r	   r   ry   rz   r{   r   r   r    rL   rN   rO   r$   r   r}   r&   r&   r'   Btest_create_custom_metadata_fields_succeeds_with_type_multi_select  sf   z[TestCustomMetadataFields.test_create_custom_metadata_fields_succeeds_with_type_multi_selectc                 C   s   dt _dt j| j}ddi}|t  tjtj||dd | j	j
| jtdtdd	d
dd}ddddd	dddd	ddddd}ttd}| t||jj | d|j | dtjd jj | |tjd jj dS )zA
        Tests if update_custom_metadata_fields succeeds
        r   r^   rD   rs   a&  {
                "id": "62a9d5f6db485107347bb7f2",
                "name": "test",
                "label": "test-update",
                "schema": {
                    "minValue": 100,
                    "maxValue": 200,
                    "type": "Number"
                }
            })r-   r   test-updaterX   r?   rk   rl   r;   r<   rn   r.   ri   r0   )r6   r7   r4   r8   rv   rA   rB   rC   rF   z{
                "label": "test-update",
                "schema": {
                    "minValue": 100,
                    "maxValue": 200
                }
            }ra   r   N)r   r   r   r   rx   r   r   r   PATCHr   update_custom_metadata_fieldsr   r
   ry   rz   r{   r   r   r    rL   r9   rN   rO   r$   r   r}   r&   r&   r'   +test_update_custom_metadata_fields_succeedsU  sV   


zDTestCustomMetadataFields.test_update_custom_metadata_fields_succeedsc              
   C      dt _dt j| j}z#tjtj|ddd | jj| jt	dt
ddd	d
d | t W dS  tyP } z| d|j | d|jj W Y d}~dS d}~ww )zG
        Tests if update_custom_metadata_fields fails with 404
        r   r^   re   z{
                    "message": "No such custom metadata field exists",
                    "help": "For support kindly contact us at support@imagekit.io ."
                }r   r   rX   r?   r   r   rn   rf   N)r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    r!   r"   r&   r&   r'   1test_update_custom_metadata_fields_fails_with_404  ,   

zJTestCustomMetadataFields.test_update_custom_metadata_fields_fails_with_404c              
   C   r   )zG
        Tests if update_custom_metadata_fields fails with 400
        r   r^   rh   z{
                    "message": "Your request contains invalid ID parameter.",
                    "help": "For support kindly contact us at support@imagekit.io ."
                }r   r   rX   r?   r   r   rn   z+Your request contains invalid ID parameter.N)r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    r!   r"   r&   r&   r'   1test_update_custom_metadata_fields_fails_with_400  r   zJTestCustomMetadataFields.test_update_custom_metadata_fields_fails_with_400N)__name__
__module____qualname____doc__r   r   activater(   rS   rW   r\   rd   rg   rr   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   r      sF    

P
P
Q



G
U
M
M
K
Q
F
r   )ry   r   r   imagekitio.constants.urlr   )imagekitio.exceptions.BadRequestExceptionr   (imagekitio.exceptions.ForbiddenExceptionr   'imagekitio.exceptions.NotFoundExceptionr   &imagekitio.exceptions.UnknownExceptionr   :imagekitio.models.CreateCustomMetadataFieldsRequestOptionsr   (imagekitio.models.CustomMetaDataTypeEnumr	   ,imagekitio.models.CustomMetadataFieldsSchemar
   :imagekitio.models.UpdateCustomMetadataFieldsRequestOptionsr   imagekitio.utils.formatterr   tests.helpersr   r   r   r&   r&   r&   r'   <module>   s    